From 81be7dad34367d86df5bf2d2b480e3c3bc124cdc Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Tue, 21 Jan 2025 22:17:19 +0100
Subject: [PATCH 01/11] try to implement solutionFractionnelle

---
 .idea/misc.xml                             |   2 +-
 out/production/aroTP2/App.class            | Bin 682 -> 728 bytes
 out/production/aroTP2/InstanceReader.class | Bin 2335 -> 2335 bytes
 out/production/aroTP2/Loot.class           | Bin 881 -> 1009 bytes
 src/App.java                               |   3 ++-
 src/Backpack.java                          |  30 +++++++++++++++++++++
 src/InstanceReader.java                    |   1 -
 src/Loot.java                              |  16 ++++++++++-
 8 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index a346fd7..1b2d693 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="22" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index f3dffbcc762d201aabffbb6ae573bd035da8db2d..f385ca79a766fbfe129b15dfa2d50392d0a867a1 100644
GIT binary patch
delta 295
zcmZ3*dV`hg)W2Q(7#J9w7>p-!br^Fo2r>w<GYIoAh%m4*GH^I0CTABUCTBA;a2Mwn
zl{i%fC6;97b25lAh_f?D@GwX+NKKq?%q_zp%g!Lj!ywO~F!8Pxqtavv#^sC#lMgT&
z)+;hFF@OLQ10w?~0~-S)gE9jHgFXWz10w?i1FP0{2F8sH3=B*RDhv!@X$A&n22}<I
z1|En41~mqC1_lOB1`P&H1}3oPNCqabp_029*dw<ya0+p4W8m@8-o_xXi9u9*8-p~$
zKp`gv7LYXzybNp%f(+~o5)2$*)5RbrFlaGoGcYjlGVn0yFz7NcGUzcdFt9K%f*oiG
Hc9#(VumdBR

delta 250
zcmcb?x{8(S)W2Q(7#JAr81yD`b?|aB2r>w<GYIoAh%kswJZj7>&LF|gAj!iZ#UMSI
znbC?-cCsDgaz^dR&lnBsWf+(kK!AyXk%5(gje(Itj)8$epMjBqk%57MRcku~<3<Js
z1||l11_rP+0|PUI0s{jB4@3cjB7+hG0|O_6GJ^^O6IgQ~0~6R#(cKK}k=q$Kg}Amc
z@c3+E5YXPnAcioEkAazi!HR*EftP`eL4<)FY^oSUCxa@38Uq6ZF9QdII)erSBZDRb
S0|N^KBZC$LBZCguJ-Pt$h8Z0I

diff --git a/out/production/aroTP2/InstanceReader.class b/out/production/aroTP2/InstanceReader.class
index bcce837946a70025a3a851972fc22b8e964e1cc4..9a1d5b11a0914dac9a5b1a1a0bdda4d0958bdced 100644
GIT binary patch
delta 115
zcmbO)G+&70)W2Q(7#J9wHgZ(3+6pifFfxd0_+%xPCF<uS=B4ZVCuOB3mso3t@v|`$
zaWVKZ6!S2oGh_%baPzY<lyNbXGgPoMRPr!XF;s7!$jZdHc|V&wlVm9aGebT@Awvm6
T4FdxM7Xu?hEkiv+BZDLW)BzfJ

delta 116
zcmbO)G+&70)W2Q(7#JArHgZ(33i7it6mT&VG8C~h6!S2YFqCfI%gV&4BfwD3$RMiW
zla*MOsGpOVm#*)hl$DxXVyzj*&&E*6#o)_O#lw)!kRiapy?H;IJCkHS12aPzLj^-M
ULk$B10~Z4$LoGu+LnDJE0Krijpa1{>

diff --git a/out/production/aroTP2/Loot.class b/out/production/aroTP2/Loot.class
index 677c206f5b43a39187728543b3333c45abeee666..07f1b7ef8b118f561e0965b6f117e4420a682f7c 100644
GIT binary patch
delta 497
zcmey!_K}_I)W2Q(7#J9w7>p-!B{_03a4-n+FbFXSGcvFiC6;97Gcqu`2{AA*i1ILq
zF^DrVi039|r#k27B`21IXO?6*=jRodB<7VAGct&4czU``oL0-vk)B!-1kuZ^q3JeR
zkWoj5gF%gvft68#QGt=4jX{HpL6bp?ok1I9sLo_R#zR7k3_PBBd8tLtIf=!^sm1IJ
z`jfSpv{(!o8RRDGG09CXXA-JsW?*38X5e7}0e&bg#30PTz`)GF$iT`V!NABM$-uyn
z#=y(~QY)dgoq<tHdMg9FmdsWLUM=Z1nYO&G3<4V&7#Nrsq!<_&#28o^7#LU?SQywC
zI2qU(_!u}C#2Gjlq!}0(6d-0W$S}x)EM$<V2V2g_z`!8E0J5HmfssLuK^|(U4cHM3
z3_@C47}&M8Fz{+^VG!8GAi}_~0d5@|14uUy*mxc=TL@}ABZC5iBGe>(21c+PE69X(
z2+a;)Q2`{~tWe#|3`$^S$_y$D3=A9$j11}wj0~y_x(o~qTnvm1dJF~(MhubwW92%g

delta 343
zcmey!{*jIA)W2Q(7#JAr7<4CcC2<KcFfa)6FbFXSPwbIl5!3MWoVd1jvNfZYAU_*}
z0vCfKgAzM~GDv~S<VMCravTh5j10_-3XF^lJf3-ZsYT8?iN(dK#q124j0~!i*D|Uy
zvomN<ZeTL5XJTMr;AY@q00Dk5&BVaSz{()Pz{nuVz`zj6z{J4Jz`($-wVi=cOL{8<
zyOzvW2HuSf3=B*RVhjunLJTYn3=Av`EDWp+oD6IXd<^Ui;tUK73J`4!5)6_cvl;lo
z)-ZyMVgOkLvPOy_QyOZI1p`Qcfq_qJ3j@2>76#s33<3-c8{pQkF@UskfsN(?v-zM#
pGc(A5Rmn2QF)%Q2FfcO6GcYo!GN>~!FmN$2GH5VpG3YQz0swR1BYFS;

diff --git a/src/App.java b/src/App.java
index 919c748..7aa8157 100644
--- a/src/App.java
+++ b/src/App.java
@@ -3,6 +3,7 @@ import java.util.List;
 public class App {
     public static void main(String[] args) throws Exception {
        Backpack backpack= new InstanceReader().read("src/sac0");
-        System.out.println(backpack);
+       backpack.sortByRatio();
+       System.out.println(backpack);
     }
 }
diff --git a/src/Backpack.java b/src/Backpack.java
index 121d485..10ba315 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -1,8 +1,11 @@
+import java.util.Comparator;
 import java.util.List;
 
 public class Backpack {
     int capacity;
     List<Loot> loots;
+    int sfValuee = 0;
+    int sfWeight = 0;
 
     public Backpack(int capacity, List<Loot> loots) {
         this.capacity = capacity;
@@ -12,4 +15,31 @@ public class Backpack {
     public String toString(){
         return capacity +"\n"+loots;
     }
+
+    /**
+    Méthode pour trier les objets par ordre décroissant selon leur ratio
+    */
+    public void sortByRatio(){
+        loots.sort(Comparator.comparing(Loot::getRatio).reversed());
+    }
+
+    public void solutionFractionnelle(){
+        this.sortByRatio();
+
+        for(Loot loot : loots){
+            if(loot.getWeight() > this.capacity){
+                sfValuee += (loot.getValue() * loot.getWeight()) / (capacity - sfWeight);
+                sfWeight += capacity;
+            }
+            else {
+                sfValuee += loot.getWeight();
+                sfWeight += loot.getWeight();
+            }
+        }
+    }
+
+    public int getSfValuee() {
+        return sfValuee;
+    }
+
 }
diff --git a/src/InstanceReader.java b/src/InstanceReader.java
index 58e01ae..1724721 100644
--- a/src/InstanceReader.java
+++ b/src/InstanceReader.java
@@ -23,5 +23,4 @@ public class InstanceReader {
         return new Backpack(capacity,loots);
     }
 
-
 }
diff --git a/src/Loot.java b/src/Loot.java
index 46c20c0..e2a85e0 100644
--- a/src/Loot.java
+++ b/src/Loot.java
@@ -1,12 +1,26 @@
 public class Loot {
     int weight, value;
+    float ratio;
 
     public Loot(int weight, int value) {
         this.weight = weight;
         this.value = value;
+        this.ratio = (float) weight/value;
     }
 
     public String toString(){
-        return weight+" "+value;
+        return weight+" "+value+" "+ratio;
+    }
+
+    public float getRatio(){
+        return ratio;
+    }
+
+    public int getWeight(){
+        return weight;
+    }
+
+    public int getValue(){
+        return value;
     }
 }
-- 
GitLab


From 8d48fa47b4ac453e0813d3af904f79ee902a03e0 Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Tue, 21 Jan 2025 22:31:40 +0100
Subject: [PATCH 02/11] test de la fonction solutionFractionnelle avec un
 exemple

---
 out/production/aroTP2/App.class  | Bin 728 -> 1265 bytes
 out/production/aroTP2/Loot.class | Bin 1009 -> 1160 bytes
 src/App.java                     |   5 +++--
 src/Backpack.java                |   2 +-
 src/sacTest                      |   4 ++++
 5 files changed, 8 insertions(+), 3 deletions(-)
 create mode 100644 src/sacTest

diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index f385ca79a766fbfe129b15dfa2d50392d0a867a1..8d3c8e862e7d1d8ac1daac52964bbb7ec3329713 100644
GIT binary patch
delta 851
zcmcb?`jM0C)W2Q(7#J9w7<?yk`SNfV7bWW#Cnkra7MDy+h|uR^5M&VJVGw6vV`LC5
z&d(_=$;{7lD@sfT(RrykIjNisk_=Mp4AMLdG7Pd4j~dqtGRX5VC@?58GH|D-mISAT
zCFYc-rZO@xYiN23F)%PF^Dw9|s4_B$=O$*SI_KvlCzga~mSi~R=M|SE=9LsPGKgw;
zYWid)mL=-vB<7{-2bUCO=A~P6F{m?Wurp}#FlaGoGcpK+6=de?2NY%Il?0a*r6%Sw
zGO!m+mSq&>fojnVV`tEvY{$5q(R%VTM!kAQ1_7u1{F365qQnB<)RK(+lwuAB2Sx@-
zn9mf_kiDj0#mLXb;Kaq?%;3V#;0kiL8zX}X*kZ8DGV{vvvs0lCgm}d*F}WnasFIOk
zh6a)sAPVdCA(nb1=B4DM7OVK==VzA|SR<)}x*JIZq7$kyq_Q9ti}GkB_5Mj&smUeQ
z$l(Vy!a1=%Cnq?wB-NUcfyXm1FSW=yC$YFVwV0j3laWCc!&lhc%Ff`;$RLMbDI)_L
z#A6JK3_1)<3?RV7z{tSLP|wD|$e_o-z@X2-$iT?Jz`&}toq=&90|NsSgFXWT14x>I
zftkU8fq{VsqJY7W!H9u@fs?_Q!GwVctT~f`32dtBZU*+q?F^hkT-z9Ue6+VQ2xxC(
z5Z%Nep}mbkZWn_R1H(23HH6_}46I2YD;anh*cb#E*cn6_I2cqIIKj4wK}=*YWiVr4
zVBlqtU@&K}U|?jhWME)mVPIsiVqj*l0lU+d!H$7}frEjO!I6QH!JfgLfq{XGfsw(3
K!HdC%K@tF+ZO<P7

delta 285
zcmey!d4rYf)W2Q(7#J9w7>p-!`Eqg;7bWW#Cng(AOpf5?WDsKzXJ?S$VUT2yn)u3?
zTZTcFok5O=L7qWjaucIIkAG5DYI2FSW*9qz(&W92%NY$Or!wi)Gbl1BGB7cK022cv
z11kd?10#bn0|SFT10w??0|NuA)^-NQjSLJ7ObjXv3}9&n24)6T1_lNmhyn&R26YAo
z22KVI22BPgu;xexCa|HByBXLcw=-}GacyJZ@zLJKAh3x+RC^nPG|WI(1_mJp7LYXz
zybNp%f(+~o5)2$*)5RbrFlaGoGcYjlGVn0yFz7NcGUzcdFt9K%f*oiGc9#(V`-LMR

diff --git a/out/production/aroTP2/Loot.class b/out/production/aroTP2/Loot.class
index 07f1b7ef8b118f561e0965b6f117e4420a682f7c..4ffba3f58d9594f16f64fe6527d3748ef90eb0fc 100644
GIT binary patch
delta 268
zcmey!-oeRr>ff$?3=9lT3}zd-3>l?4(^E^rQ!~>uN*EcKH8edL8935YOTrR!N>e9W
zGU`cbGBU6-DljTA^0P5$b1~>J=(02D@i2%n=ud8Byv$<6$e=oTEu$(kJA=vO1}0xd
z*2(9X{?s!vC^0BAFfvFoFfiydFfuSQFfg!cZDC+v!@$76#304Mz`zC;6k(8NU|`?@
zvsoEr7-Sh37#JB;uxjQ-*DQfWGc$uK1A`I+6N4IqIs*d(2LmI676T)L27>_u0|OTW
NBZDD>F@q_CBmk%5AUyy8

delta 124
zcmeC+{K(FA>ff$?3=9lT48|L|3>ha!FzQIDF*2|+DljTA^0P5$a4~2yXt6VB^Du}p
z=uDo+c$r0?kwJCx0wy^w6`%b4?9u{u2E)m7nS2?UC%<O;qt48r#K6G7#GuTe!oa}5
d!NAC%&cMi^%Am`@z`(`8$e_nyz+l862>?uh6-@vD

diff --git a/src/App.java b/src/App.java
index 7aa8157..a70ffd2 100644
--- a/src/App.java
+++ b/src/App.java
@@ -2,8 +2,9 @@ import java.util.List;
 
 public class App {
     public static void main(String[] args) throws Exception {
-       Backpack backpack= new InstanceReader().read("src/sac0");
+       Backpack backpack= new InstanceReader().read("src/sacTest");
        backpack.sortByRatio();
-       System.out.println(backpack);
+       backpack.solutionFractionnelle();
+       System.out.println("solution fractionnelle :" + backpack.getSfValuee());
     }
 }
diff --git a/src/Backpack.java b/src/Backpack.java
index 10ba315..b8552f0 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -29,7 +29,7 @@ public class Backpack {
         for(Loot loot : loots){
             if(loot.getWeight() > this.capacity){
                 sfValuee += (loot.getValue() * loot.getWeight()) / (capacity - sfWeight);
-                sfWeight += capacity;
+                sfWeight += capacity - sfWeight;
             }
             else {
                 sfValuee += loot.getWeight();
diff --git a/src/sacTest b/src/sacTest
new file mode 100644
index 0000000..25c99fb
--- /dev/null
+++ b/src/sacTest
@@ -0,0 +1,4 @@
+15
+5 40
+8 48
+4 36
\ No newline at end of file
-- 
GitLab


From 89fb0e0a9fc3be65ef4236a0bb2cbafa0c048fb2 Mon Sep 17 00:00:00 2001
From: Boubacar <gounouseroboubacar@gmail.com>
Date: Tue, 21 Jan 2025 23:10:11 +0100
Subject: [PATCH 03/11] solutionFractionnelle

---
 .idea/misc.xml                             |   2 +-
 out/production/aroTP2/App.class            | Bin 1265 -> 1265 bytes
 out/production/aroTP2/InstanceReader.class | Bin 2335 -> 2335 bytes
 out/production/aroTP2/Loot.class           | Bin 1160 -> 1160 bytes
 src/Backpack.java                          |  13 ++++++++-----
 src/Loot.java                              |   2 +-
 6 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index 1b2d693..38eefb8 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="22" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index 8d3c8e862e7d1d8ac1daac52964bbb7ec3329713..4ae707af27c19bbfc1bf784eb39242b2b1eb1ffe 100644
GIT binary patch
delta 17
Zcmey!`H_?3)W2Q(7#J9wH*&mW0RTt*2POaj

delta 17
Zcmey!`H_?3)W2Q(7#J9wHgddV0RTt$2PFUi

diff --git a/out/production/aroTP2/InstanceReader.class b/out/production/aroTP2/InstanceReader.class
index 9a1d5b11a0914dac9a5b1a1a0bdda4d0958bdced..5e8faaeb63c791acfcbc457ec4e45f20eb8b6eee 100644
GIT binary patch
delta 17
ZcmbO)G+&70)W2Q(7#J9wH*$z`0suWL1;+pY

delta 17
ZcmbO)G+&70)W2Q(7#J9wHgbq_0suWG1;zjX

diff --git a/out/production/aroTP2/Loot.class b/out/production/aroTP2/Loot.class
index 4ffba3f58d9594f16f64fe6527d3748ef90eb0fc..dcc24c07e6b496357fea863d1d9cdfe408d4b69a 100644
GIT binary patch
delta 26
hcmeC+?BL`$^>5cc1_lP_jT{`z%rb4#n}wN683A-52XO!Z

delta 26
hcmeC+?BL`$^>5cc1_lPFjT{`z%+hT#n}wN683A+=2XFuY

diff --git a/src/Backpack.java b/src/Backpack.java
index b8552f0..c1b8321 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -27,13 +27,16 @@ public class Backpack {
         this.sortByRatio();
 
         for(Loot loot : loots){
-            if(loot.getWeight() > this.capacity){
-                sfValuee += (loot.getValue() * loot.getWeight()) / (capacity - sfWeight);
-                sfWeight += capacity - sfWeight;
+            if(sfWeight + loot.getWeight() <= this.capacity){
+                // Si l'objet entier peut entrer dans le sac
+                sfValuee += loot.getValue();
+                sfWeight += loot.getWeight();
             }
             else {
-                sfValuee += loot.getWeight();
-                sfWeight += loot.getWeight();
+                // Si l'objet ne peut pas entrer entièrement dans le sac
+                int remainingWeight = this.capacity - sfWeight;
+                sfValuee += (int) (loot.getRatio() * remainingWeight);
+                break;
             }
         }
     }
diff --git a/src/Loot.java b/src/Loot.java
index e2a85e0..d7dc032 100644
--- a/src/Loot.java
+++ b/src/Loot.java
@@ -5,7 +5,7 @@ public class Loot {
     public Loot(int weight, int value) {
         this.weight = weight;
         this.value = value;
-        this.ratio = (float) weight/value;
+        this.ratio = (float) value/weight;
     }
 
     public String toString(){
-- 
GitLab


From d28d73781cb58a4c3f5dc3482ac77eaaa48134d3 Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Wed, 22 Jan 2025 00:43:30 +0100
Subject: [PATCH 04/11] implementation de la fonction explore_from

---
 .idea/misc.xml                             |   2 +-
 out/production/aroTP2/App.class            | Bin 1265 -> 1210 bytes
 out/production/aroTP2/InstanceReader.class | Bin 2335 -> 2335 bytes
 out/production/aroTP2/Loot.class           | Bin 1160 -> 1160 bytes
 src/App.java                               |   7 ++-
 src/Backpack.java                          |  56 +++++++++++++++++++--
 src/Loot.java                              |   4 +-
 7 files changed, 58 insertions(+), 11 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index 38eefb8..e778be1 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_23" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_22" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/out" />
   </component>
 </project>
\ No newline at end of file
diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index 4ae707af27c19bbfc1bf784eb39242b2b1eb1ffe..7e761d15e68921d253e7cdab4896d378c50a9ba7 100644
GIT binary patch
delta 430
zcmey!xr>wQ)W2Q(7#J9w7`!HO`Eqg;7bWW#Cng(CO!g6GEzZv=OXXw`V-RO&kl<mE
zWRRNp%2ZW`he4J>j*)>UJ+;IswYVfKF{d<@k%3u5(^H6nfkA<XL6JdevNNLzw+e$Q
zJA)bzgF1u8<R(TdMy<(v8J9C!OipET*0g105Xnu=%*jbDEmA1X&nYd*%+FJ>V&rFI
zu;*fMU~pt-Z~~d+Joy^aWk$EjtC+P|JQx||Ca-0dt7l|j^U2T8E-heCWYA<_VgLaq
z21W)}1~vvp25klg27Lxb21W)323D=@42&BY7#NrsbQl=G(hLmD47v;q3_K7840;Uu
z3=9mM3<eB_3`}6ni406&Llt*3ut#oZ;1uH8#=zsFy^TR&6N9MsHii=ET@3OJ4BHr#
z5he>Uuz;*%;ALQA5M*FyP+;Hy+ad-riNT1$n1O+TmqCQVgu#@7k-?0Cfq{jAk-?mS
onZXk5J}U-m1_lNW21W)u21W)O1{Vef1}+9h23H1m22Tb_00^u=O#lD@

delta 485
zcmdnR`H_?B)W2Q(7#J9w8GI*l`SNfV7bWW#Cnkra7MDy+@UiAD&Mzu)stigj$;{_s
z5M&VJVGw6vV`LC5&d(_=$;{7lD@sfT(RrykIjNisk_=Mp4AMLdG7Pd4_nWH7^Drnd
zC^9l|r>B+#r-dcvl%}RKGB9gsdI~WxFevjds4%EbmSi;HR%g&)XVBzf&|=V@9KmSC
zs5^Nw<8nsp$<|EHdJc>Xk}&HO(va;_uwvwAV{qbPaAt5}XK)1>=Qepc(`81_$<@qS
zEZ&R^a+B+r<?0z3*nINyvr7vY6d80Fm>58SiGh)Um4S_ckwK4vfkB^vk%5tcfq_+P
zI|JiJ1_lNu27Lwwurvb$GlKyG0|O640fQlf5d#AQCxbDA2?G;Yb0z~5*ihBo4D6BH
z890TwwlVPdXm4W>(B8%%x{0AiLVFv7+%5(s28L}6Y6#QC7+678GVn66F$glSGl(*9
zFsLwaf^8Fnn8;wtV8+0}z{?=PV9sE{z{p_9z`(%5z{p_5z|3F+cBd_a9RmXc2LmI6
ZBLgFYJ%c*~0|OTWBZCKn7lRLjBmlJ(PoMw*

diff --git a/out/production/aroTP2/InstanceReader.class b/out/production/aroTP2/InstanceReader.class
index 5e8faaeb63c791acfcbc457ec4e45f20eb8b6eee..9a1d5b11a0914dac9a5b1a1a0bdda4d0958bdced 100644
GIT binary patch
delta 17
ZcmbO)G+&70)W2Q(7#J9wHgbq_0suWG1;zjX

delta 17
ZcmbO)G+&70)W2Q(7#J9wH*$z`0suWL1;+pY

diff --git a/out/production/aroTP2/Loot.class b/out/production/aroTP2/Loot.class
index dcc24c07e6b496357fea863d1d9cdfe408d4b69a..88c549853e6b352a7f562efc7945c9306b874007 100644
GIT binary patch
delta 40
scmeC+?BL`$^>5cc1_lPFjU1<#1eqAP8F&~N7?>FN!L-ok$4pBZ0oIHN$p8QV

delta 40
pcmeC+?BL`$^>5cc1_lP_jU1<#1Q{5(8F&~#fFD9{e$2F#5dhWn2($nI

diff --git a/src/App.java b/src/App.java
index a70ffd2..9d57db8 100644
--- a/src/App.java
+++ b/src/App.java
@@ -2,9 +2,8 @@ import java.util.List;
 
 public class App {
     public static void main(String[] args) throws Exception {
-       Backpack backpack= new InstanceReader().read("src/sacTest");
-       backpack.sortByRatio();
-       backpack.solutionFractionnelle();
-       System.out.println("solution fractionnelle :" + backpack.getSfValuee());
+       Backpack backpack= new InstanceReader().read("src/sac1");
+       backpack.solve();
+       System.out.println("meilleur solution :" + backpack.getBestValue());
     }
 }
diff --git a/src/Backpack.java b/src/Backpack.java
index c1b8321..92622d5 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -2,16 +2,29 @@ import java.util.Comparator;
 import java.util.List;
 
 public class Backpack {
-    int capacity;
-    List<Loot> loots;
-    int sfValuee = 0;
-    int sfWeight = 0;
+    private int capacity;
+    private List<Loot> loots;
+    private int sfValuee = 0;
+    private int sfWeight = 0;
+    private int bestValue = 0;
+    private boolean[] bestSolution;
+    private boolean[] currentSolution;
+    private int currentWeight = 0;
+    private int currentValue = 0;
 
     public Backpack(int capacity, List<Loot> loots) {
         this.capacity = capacity;
         this.loots = loots;
     }
 
+    public void solve() {
+        bestSolution = new boolean[loots.size()];
+        currentSolution = new boolean[loots.size()];
+        sortByRatio();
+        solutionFractionnelle();
+        explore_from(0);
+    }
+
     public String toString(){
         return capacity +"\n"+loots;
     }
@@ -41,8 +54,43 @@ public class Backpack {
         }
     }
 
+    private void explore_from(int index) {
+        // Si on a exploré tous les objets
+        if (index >= loots.size()) {
+            if (currentValue > bestValue) {
+                bestValue = currentValue;
+                System.arraycopy(currentSolution, 0, bestSolution, 0, loots.size());
+            }
+            return;
+        }
+
+        // Si la valeur actuelle + la valeur restante possible (sfValuee - valeur déjà utilisée)
+        // est inférieure à la meilleure solution, on coupe la branche
+        if (currentValue + (sfValuee - currentValue) <= bestValue) {
+            return;
+        }
+
+        // Branche gauche - avec l'objet
+        Loot currentLoot = loots.get(index);
+        if (currentWeight + currentLoot.getWeight() <= capacity) {
+            currentSolution[index] = true;
+            currentWeight += currentLoot.getWeight();
+            currentValue += currentLoot.getValue();
+            explore_from(index + 1);
+            currentWeight -= currentLoot.getWeight();
+            currentValue -= currentLoot.getValue();
+            currentSolution[index] = false;
+        }
+
+        // Branche droite - sans l'objet
+        explore_from(index + 1);
+    }
+
     public int getSfValuee() {
         return sfValuee;
     }
 
+    public int getBestValue() {
+        return bestValue;
+    }
 }
diff --git a/src/Loot.java b/src/Loot.java
index d7dc032..e0996e4 100644
--- a/src/Loot.java
+++ b/src/Loot.java
@@ -1,6 +1,6 @@
 public class Loot {
-    int weight, value;
-    float ratio;
+    private int weight, value;
+    private final float ratio;
 
     public Loot(int weight, int value) {
         this.weight = weight;
-- 
GitLab


From 567d1f6a44c71c28090229a96e7ffc29c26e623a Mon Sep 17 00:00:00 2001
From: Boubacar <gounouseroboubacar@gmail.com>
Date: Wed, 22 Jan 2025 01:15:32 +0100
Subject: [PATCH 05/11] =?UTF-8?q?sortByRatio()=20supprim=C3=A9=20dans=20so?=
 =?UTF-8?q?lve()?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/Backpack.java | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/Backpack.java b/src/Backpack.java
index 92622d5..f897ab6 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -20,7 +20,6 @@ public class Backpack {
     public void solve() {
         bestSolution = new boolean[loots.size()];
         currentSolution = new boolean[loots.size()];
-        sortByRatio();
         solutionFractionnelle();
         explore_from(0);
     }
@@ -38,7 +37,6 @@ public class Backpack {
 
     public void solutionFractionnelle(){
         this.sortByRatio();
-
         for(Loot loot : loots){
             if(sfWeight + loot.getWeight() <= this.capacity){
                 // Si l'objet entier peut entrer dans le sac
-- 
GitLab


From 2b35d3538bdcb293e9eb6e11eb698517fd616b6d Mon Sep 17 00:00:00 2001
From: Boubacar <gounouseroboubacar@gmail.com>
Date: Wed, 22 Jan 2025 01:15:42 +0100
Subject: [PATCH 06/11] =?UTF-8?q?sortByRatio()=20supprim=C3=A9=20dans=20so?=
 =?UTF-8?q?lve()?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/App.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/App.java b/src/App.java
index 9d57db8..386a74c 100644
--- a/src/App.java
+++ b/src/App.java
@@ -2,7 +2,7 @@ import java.util.List;
 
 public class App {
     public static void main(String[] args) throws Exception {
-       Backpack backpack= new InstanceReader().read("src/sac1");
+       Backpack backpack= new InstanceReader().read("src/sac2");
        backpack.solve();
        System.out.println("meilleur solution :" + backpack.getBestValue());
     }
-- 
GitLab


From 5400343c7c41aa2a8bcaab6d20b0282410b138e1 Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Thu, 23 Jan 2025 11:46:53 +0100
Subject: [PATCH 07/11] correction de la methode solutionFractionnelle et
 explore_from

---
 out/production/aroTP2/App.class | Bin 1210 -> 1210 bytes
 src/App.java                    |   2 +-
 src/Backpack.java               |  48 +++++++++++++++-----------------
 3 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index 7e761d15e68921d253e7cdab4896d378c50a9ba7..95f21adb36e1b15508b3395cdc31c93038417156 100644
GIT binary patch
delta 12
TcmdnRxr=i`Jfq3RgeVpO9eV^C

delta 12
TcmdnRxr=i`Jfq>pgeVpO9c%;_

diff --git a/src/App.java b/src/App.java
index 386a74c..10a0593 100644
--- a/src/App.java
+++ b/src/App.java
@@ -2,7 +2,7 @@ import java.util.List;
 
 public class App {
     public static void main(String[] args) throws Exception {
-       Backpack backpack= new InstanceReader().read("src/sac2");
+       Backpack backpack= new InstanceReader().read("src/sac4");
        backpack.solve();
        System.out.println("meilleur solution :" + backpack.getBestValue());
     }
diff --git a/src/Backpack.java b/src/Backpack.java
index f897ab6..dbcf2ac 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -2,13 +2,9 @@ import java.util.Comparator;
 import java.util.List;
 
 public class Backpack {
-    private int capacity;
-    private List<Loot> loots;
-    private int sfValuee = 0;
-    private int sfWeight = 0;
+    private final int capacity;
+    private final List<Loot> loots;
     private int bestValue = 0;
-    private boolean[] bestSolution;
-    private boolean[] currentSolution;
     private int currentWeight = 0;
     private int currentValue = 0;
 
@@ -18,10 +14,9 @@ public class Backpack {
     }
 
     public void solve() {
-        bestSolution = new boolean[loots.size()];
-        currentSolution = new boolean[loots.size()];
-        solutionFractionnelle();
+        this.sortByRatio();
         explore_from(0);
+        System.out.println("La valeur optimale est : " + bestValue);
     }
 
     public String toString(){
@@ -35,21 +30,26 @@ public class Backpack {
         loots.sort(Comparator.comparing(Loot::getRatio).reversed());
     }
 
-    public void solutionFractionnelle(){
-        this.sortByRatio();
-        for(Loot loot : loots){
-            if(sfWeight + loot.getWeight() <= this.capacity){
+    public int solutionFractionnelle(int startIndex, int remainingCapacity) {
+        int sfValuee = 0;
+        int sfWeight = 0;
+
+        // On commence à partir de startIndex
+        for(int i = startIndex; i < loots.size(); i++) {
+            Loot loot = loots.get(i);
+            if(sfWeight + loot.getWeight() <= remainingCapacity){
                 // Si l'objet entier peut entrer dans le sac
                 sfValuee += loot.getValue();
                 sfWeight += loot.getWeight();
             }
             else {
                 // Si l'objet ne peut pas entrer entièrement dans le sac
-                int remainingWeight = this.capacity - sfWeight;
+                int remainingWeight = remainingCapacity - sfWeight;
                 sfValuee += (int) (loot.getRatio() * remainingWeight);
                 break;
             }
         }
+        return sfValuee;
     }
 
     private void explore_from(int index) {
@@ -57,37 +57,33 @@ public class Backpack {
         if (index >= loots.size()) {
             if (currentValue > bestValue) {
                 bestValue = currentValue;
-                System.arraycopy(currentSolution, 0, bestSolution, 0, loots.size());
             }
             return;
         }
 
-        // Si la valeur actuelle + la valeur restante possible (sfValuee - valeur déjà utilisée)
-        // est inférieure à la meilleure solution, on coupe la branche
-        if (currentValue + (sfValuee - currentValue) <= bestValue) {
+        // On calcule la borne supérieure pour ce nœud
+        int remainingCapacity = capacity - currentWeight;
+        int borneSuperieure = currentValue + solutionFractionnelle(index, remainingCapacity);
+
+        // Si la borne supérieure est inférieure à la meilleure solution
+        if (borneSuperieure <= bestValue) {
             return;
         }
 
-        // Branche gauche - avec l'objet
+        // on essaye d'explorer avec l'objet
         Loot currentLoot = loots.get(index);
         if (currentWeight + currentLoot.getWeight() <= capacity) {
-            currentSolution[index] = true;
             currentWeight += currentLoot.getWeight();
             currentValue += currentLoot.getValue();
             explore_from(index + 1);
             currentWeight -= currentLoot.getWeight();
             currentValue -= currentLoot.getValue();
-            currentSolution[index] = false;
         }
 
-        // Branche droite - sans l'objet
+        // on explore sans l'objet
         explore_from(index + 1);
     }
 
-    public int getSfValuee() {
-        return sfValuee;
-    }
-
     public int getBestValue() {
         return bestValue;
     }
-- 
GitLab


From f62f4c9882f9dd50535a46b882b89f777177bab2 Mon Sep 17 00:00:00 2001
From: g24020457 <boubacar.gounou@etu.univ-amu.fr>
Date: Thu, 23 Jan 2025 12:08:31 +0100
Subject: [PATCH 08/11] =?UTF-8?q?Mise=20=C3=A0=20jout=20des=20objets?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 out/production/aroTP2/App.class | Bin 1210 -> 1386 bytes
 src/App.java                    |   2 ++
 src/Backpack.java               |  13 +++++++++++++
 3 files changed, 15 insertions(+)

diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index 95f21adb36e1b15508b3395cdc31c93038417156..ddc92ab5174f71e7f1974260537408a5c4b0286f 100644
GIT binary patch
delta 490
zcmdnR`HG9{)W2Q(7#JAr7{WJlwK3LnF$gkf@i1sJ=rA(yr>B-Ur52Y2=jW7`Waj5F
zGO%c9Mn`cm=rQQCGZ^qN7%~_!G6-ZPmL=+!mSpDWI~ElsRu(fdaFpZ+mlS2@r86>!
zX+%e9`hb<>B<7{-L&U9x7#J8#co-BJOc@!}G!XJ~Fa=ojurruXp3JzM(RH#llcOL%
z8-o`YgExZ@JA*ICAiv4WnGP{?Fa%7lXA&1;WZ?14%S$bC&PgmTPAz6<2%cQcti=+_
z$RIblj#(~)k%7%8KR>&)fI*SLjDd*(1eh2Y8CV(E7#JBW7#JAz85kKD85kH?wYD=b
zZe(C!U}CUjU;s-qFt9LKF)%RjKol@oGuSXNFmN*1GT1RNfi;&iFo6v<o~+NJP``;m
zRC^nP<_-qkT@1zy4BHr#5$1_8u!2qHWngCzWZ+;>VBlmhV&DRsF9tD#!Jff^fq{XS
zL5;zY!HI#9!I=T%0!9WG24)5~u*=*TJQx@lI2afiJQ)}n{22ln7#O%17#V^XLKwoB
G7$gDJ%vGKM

delta 298
zcmaFGwTqMM)W2Q(7#J9w7`!%ewJ|cYGiXiLWm?W?G5IQ!qc#VFEhB?SZfa&uPHJh9
zLUDdhX-Q^&o`Mx4KO2KR7lQ+XBRhi=4}&6u^JI1ALqd!UJf3-ZsYT8?iN(dK#q11j
zlSNsy7(FICu;>bFGB7cK022cv11kd?10#d><OUWoV;u$tFpq(OnL(F<fq{pCk%57M
zl|hd|pMimalfi(&kb#Lon}LBLk%0+phT`OtEDG5h85kIt7(lv(7+AnMcp2Cj1R2;F
z6c{+bCW%2*GZ--#GcYjlGKeskFqkqhGMF(iFt9K%GMF<kGgyL6v0|`hU|`^2U}Ugk
YU}UgiaA9Cz;9_88aAk03@MMq#0MH&M*Z=?k

diff --git a/src/App.java b/src/App.java
index 10a0593..9fbf355 100644
--- a/src/App.java
+++ b/src/App.java
@@ -1,3 +1,4 @@
+import java.util.Arrays;
 import java.util.List;
 
 public class App {
@@ -5,5 +6,6 @@ public class App {
        Backpack backpack= new InstanceReader().read("src/sac4");
        backpack.solve();
        System.out.println("meilleur solution :" + backpack.getBestValue());
+       System.out.println("meilleur solution :" + Arrays.toString(backpack.getBestSolution()));
     }
 }
diff --git a/src/Backpack.java b/src/Backpack.java
index dbcf2ac..7f57281 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -7,16 +7,22 @@ public class Backpack {
     private int bestValue = 0;
     private int currentWeight = 0;
     private int currentValue = 0;
+    private boolean[] currentSolution;
+    private boolean[] bestSolution;
 
     public Backpack(int capacity, List<Loot> loots) {
         this.capacity = capacity;
         this.loots = loots;
+        this.currentSolution = new boolean[loots.size()];
+        this.bestSolution = new boolean[loots.size()];
     }
 
     public void solve() {
         this.sortByRatio();
         explore_from(0);
         System.out.println("La valeur optimale est : " + bestValue);
+        System.out.println("Objets inclus dans la solution optimale : " + bestSolution);
+
     }
 
     public String toString(){
@@ -57,6 +63,7 @@ public class Backpack {
         if (index >= loots.size()) {
             if (currentValue > bestValue) {
                 bestValue = currentValue;
+                System.arraycopy(currentSolution, 0, bestSolution, 0, loots.size());
             }
             return;
         }
@@ -75,9 +82,11 @@ public class Backpack {
         if (currentWeight + currentLoot.getWeight() <= capacity) {
             currentWeight += currentLoot.getWeight();
             currentValue += currentLoot.getValue();
+            currentSolution[index] = true;
             explore_from(index + 1);
             currentWeight -= currentLoot.getWeight();
             currentValue -= currentLoot.getValue();
+            currentSolution[index] = false;
         }
 
         // on explore sans l'objet
@@ -87,4 +96,8 @@ public class Backpack {
     public int getBestValue() {
         return bestValue;
     }
+
+    public boolean[] getBestSolution() {
+        return bestSolution;
+    }
 }
-- 
GitLab


From 67753d94764cf01b72c7f7197ab9daacfbb47c5a Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Thu, 23 Jan 2025 13:25:11 +0100
Subject: [PATCH 09/11] on stoke recupere la liste des objets du sac optimal

---
 out/production/aroTP2/App.class | Bin 1386 -> 583 bytes
 src/App.java                    |   4 +---
 src/Backpack.java               |   8 ++++----
 src/Loot.java                   |   2 +-
 4 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index ddc92ab5174f71e7f1974260537408a5c4b0286f..cd72d5fdbb17825ce855a1b9f61572d83d12126b 100644
GIT binary patch
delta 218
zcmaFGb)1Fk)W2Q(7#J9w7}O_n`SNfV7bWW#Cnkra7MDy+2x4Yu5Sy&aw4708@>M21
zF$P5jQ3fUk5MW|pWME}rV_;+upWMJARxiQ80Om0;urNq6Ffi~iFfuSOurf$7NHZ`n
za5Bg+$TBc7h%+!S_%Sen%@Eqnz#h4sfm4WU8v~Dz_BIBAjSLJ7Obj5C_!yYM=J7JH
wGYB$pfK3#G=wgs#kY`|E;ALQCP+(AGU}R8YU|?Y3V_;-ZW?*Dc1skCT06gp&DgXcg

literal 1386
zcmX^0Z`VEs1_nEZa4rTW24;2!79Ivx1~x_pfvm)`ME#t^ymWp4q^#8B5=I6#o6Nk-
z5<5l)W)00Sb_Nbc20qWc;*!L?<kX<l#FW$`E(Uf6W)22!Mh1@JqGbKz#AFkY5HAk{
z9|J!l14~hAVhSUJoQ4m=?BJ53%)E4KO&_Pk<m`gP<ZNp$20;cPb_QV{1`&`uIA9Wt
z46McZIc2Gw3}Ou8><kh-43Z2|DDDidEG|jSWn^H^FD+qY5QW&1nXeyEl$lo&TvC*p
zm<u*thKE6xL5`7uCq1>qDYdvHEHS4v73?cdAqEBp1s(=P1|>!Y@!Z7hROkG><iwKj
z%#sY}e6U|jiWwP1H9R#Trh~%=>IW_c6$Vvy1~ncAbp{Pa24S!#QLSfWU@rhUCMOSM
z2&NI5VIbdY@i1sJ=rA(yL){mgpHo_rnV-kVz@niU9mU0<$Dq&7V8Fv*$Y2BufYOr8
z9DT>4qQuH#Mh1?Oe2AME8N@WAqp-LY<WCcjKTR1K)Ud_}*!9TXV`ngDWMFnIC}3n@
zan4UkWn|#@$;?ajE6q(xEec6Y%1LEp5c0`SPRt2QEXoA&p@J+W8JWe546Htm1qIfO
z3@o{cnR#G`Ve>yD15092dNCt|a5SbgBLhbgG?_3ma3PWmBLkOfMRIBZD3FTT8C+q3
z4|YCWhLM3QIKQ+gIn^x_<W>&Hf&x8|FBusGobvNaic5+T3w%>cGV)W3`Pmq}xEQ<{
zeApR$L80Ww$e;pJ3ds+dd1d+8srry0h9nTT#N?9vqDn@F8OVVNRR}TEBQY-}C$(6`
zCqF;Cw7?qEcSs^A8bc}zQn4sU4j)JkwMLF;s1eSIIXS_ZC8^dN3;~P`BDtxVIXS7N
zMGD2xG^Jq0$jHFsnU|MZ<eZaOT%20W&JfJVpo-yJY@T3e2xVlD!>^Q)feqqg21N!l
z1||j&U}9hd6*3Hr3>FLw4EhX=42%p646It)85lP*FfcGNSTZm$uz>|x7_1l=7<j;J
zRt9SZ8wLgjP6k^BI|e4O=5humu%X7g8Q3GYGjIxVZDZi^(cZ=&u!%ubdmDrFE(Uo9
zhHVVW5U%D92Hjl@#$XYIRbmXRU<-K}*ck*FI2aTdI2nu>xWHD6L5ydxXK-L(VBlp?
zV{l|}Vqj!&W?*1oVPIr%VPIx(13TKC!GnQ;frEjO!IOcJ!Ji?Jfq{XGfsrAIA%r1}
GK@tG;l3F1E

diff --git a/src/App.java b/src/App.java
index 9fbf355..7757906 100644
--- a/src/App.java
+++ b/src/App.java
@@ -3,9 +3,7 @@ import java.util.List;
 
 public class App {
     public static void main(String[] args) throws Exception {
-       Backpack backpack= new InstanceReader().read("src/sac4");
+       Backpack backpack= new InstanceReader().read("src/sacTest");
        backpack.solve();
-       System.out.println("meilleur solution :" + backpack.getBestValue());
-       System.out.println("meilleur solution :" + Arrays.toString(backpack.getBestSolution()));
     }
 }
diff --git a/src/Backpack.java b/src/Backpack.java
index 7f57281..b287831 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -1,3 +1,4 @@
+import java.util.Arrays;
 import java.util.Comparator;
 import java.util.List;
 
@@ -7,8 +8,8 @@ public class Backpack {
     private int bestValue = 0;
     private int currentWeight = 0;
     private int currentValue = 0;
-    private boolean[] currentSolution;
-    private boolean[] bestSolution;
+    private final boolean[] currentSolution;
+    private final boolean[] bestSolution;
 
     public Backpack(int capacity, List<Loot> loots) {
         this.capacity = capacity;
@@ -21,8 +22,7 @@ public class Backpack {
         this.sortByRatio();
         explore_from(0);
         System.out.println("La valeur optimale est : " + bestValue);
-        System.out.println("Objets inclus dans la solution optimale : " + bestSolution);
-
+        System.out.println("Objets inclus dans la solution optimale : " + Arrays.toString(bestSolution));
     }
 
     public String toString(){
diff --git a/src/Loot.java b/src/Loot.java
index e0996e4..ff7a6d5 100644
--- a/src/Loot.java
+++ b/src/Loot.java
@@ -1,5 +1,5 @@
 public class Loot {
-    private int weight, value;
+    private final int weight,value;
     private final float ratio;
 
     public Loot(int weight, int value) {
-- 
GitLab


From 0e6e110a312316e114445a9358e2c1f89da8c09f Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Tue, 28 Jan 2025 00:05:36 +0100
Subject: [PATCH 10/11] ajout de varaible pour coimpter le nopmbre de noeuds

---
 src/App.java      |  4 ++--
 src/Backpack.java | 11 +++--------
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/src/App.java b/src/App.java
index 7757906..7e84a0f 100644
--- a/src/App.java
+++ b/src/App.java
@@ -3,7 +3,7 @@ import java.util.List;
 
 public class App {
     public static void main(String[] args) throws Exception {
-       Backpack backpack= new InstanceReader().read("src/sacTest");
+       Backpack backpack= new InstanceReader().read("/home/aristidecod/Documents/branch-and-bound/src/sac0");
        backpack.solve();
     }
-}
+}
\ No newline at end of file
diff --git a/src/Backpack.java b/src/Backpack.java
index b287831..b5f71b1 100644
--- a/src/Backpack.java
+++ b/src/Backpack.java
@@ -10,6 +10,7 @@ public class Backpack {
     private int currentValue = 0;
     private final boolean[] currentSolution;
     private final boolean[] bestSolution;
+    private int nodesExplored = 0;
 
     public Backpack(int capacity, List<Loot> loots) {
         this.capacity = capacity;
@@ -23,6 +24,7 @@ public class Backpack {
         explore_from(0);
         System.out.println("La valeur optimale est : " + bestValue);
         System.out.println("Objets inclus dans la solution optimale : " + Arrays.toString(bestSolution));
+        System.out.println("Nombre de nœuds explorés : " + nodesExplored);
     }
 
     public String toString(){
@@ -59,6 +61,7 @@ public class Backpack {
     }
 
     private void explore_from(int index) {
+        nodesExplored++;
         // Si on a exploré tous les objets
         if (index >= loots.size()) {
             if (currentValue > bestValue) {
@@ -92,12 +95,4 @@ public class Backpack {
         // on explore sans l'objet
         explore_from(index + 1);
     }
-
-    public int getBestValue() {
-        return bestValue;
-    }
-
-    public boolean[] getBestSolution() {
-        return bestSolution;
-    }
 }
-- 
GitLab


From d95c002cc9f2b288fbdc56f0ebf2aad25e8c02c2 Mon Sep 17 00:00:00 2001
From: aristidecod <sie.ouattara@etu.univ-amu.fr>
Date: Wed, 29 Jan 2025 21:13:33 +0100
Subject: [PATCH 11/11] ajout Readme.md

---
 Readme.md                        |  54 +++++++++++++++++++++++++++++++
 out/production/aroTP2/App.class  | Bin 583 -> 625 bytes
 out/production/aroTP2/Loot.class | Bin 1160 -> 1160 bytes
 3 files changed, 54 insertions(+)
 create mode 100644 Readme.md

diff --git a/Readme.md b/Readme.md
new file mode 100644
index 0000000..2684370
--- /dev/null
+++ b/Readme.md
@@ -0,0 +1,54 @@
+# Solveur de Sac à Dos par Branch and Bound
+
+Programme Java implémentant l'algorithme Branch and Bound avec relaxation fractionnaire pour résoudre le problème du sac à dos 0/1 de manière optimale.
+
+## Fonctionnalités
+- Algorithme d'exploration avec élagage par bornes
+- Calcul de borne supérieure par méthode fractionnaire
+- Lecture des données depuis un fichier texte
+- Tri préalable des objets par ratio valeur/poids
+- Statistiques d'exécution (nœuds explorés)
+- Affichage de la solution optimale détaillée
+
+## Prérequis
+- Java JDK 11 ou supérieur
+- Fichier d'instance au format spécifié
+
+## Installation
+1. Cloner/déposer les fichiers sources dans un dossier
+2. Modifier le chemin du fichier dans `App.java` :
+```java
+// Ligne à modifier dans App.java
+Backpack backpack = new InstanceReader().read("chemin/vers/votre_fichier.txt");
+```
+
+## Compiler le projet :
+```bash
+javac -d bin src/*.java
+```
+
+## Utilisation
+```bash
+java -cp bin App
+```
+## Exemple de sortie :
+    La valeur optimale est : 220
+    Objets inclus dans la solution optimale : [true, false, true, true]
+    Nombre de nœuds explorés : 27
+
+## Structure du code
+| Classe          | Description                                  |
+|-----------------|----------------------------------------------|
+| Backpack        | Implémente l'algorithme principal            |
+| Loot            | Représente un objet avec ratio valeur/poids  |
+| InstanceReader  | Lit et parse les fichiers d'instance         |
+| App             | Point d'entrée du programme                  |
+
+## Membre(s) du projet
+
+- OUATTARA Sie
+- GOUNOU Boubacar
+
+## Licence
+    
+MIT License - Libre d'utilisation et modification
\ No newline at end of file
diff --git a/out/production/aroTP2/App.class b/out/production/aroTP2/App.class
index cd72d5fdbb17825ce855a1b9f61572d83d12126b..1e4b3260fdd102ef289c8dbb8562734ddeac761f 100644
GIT binary patch
delta 65
zcmX@k@{wgixS6SbMt*LpeqvE(aY<%MYI1&xzDs^`X>Mv>NwI!XQDR<lhHheBif&SV
UX<mwcaZ$2<abmK;#^fiA05DS+&Hw-a

delta 23
ecmey!a-3yCI1hJmQL=t<Vsc1oammKsCyW4T`Ux-q

diff --git a/out/production/aroTP2/Loot.class b/out/production/aroTP2/Loot.class
index 88c549853e6b352a7f562efc7945c9306b874007..bc14dcc2b219d38772d8b2f664a991b6eba276ba 100644
GIT binary patch
delta 22
dcmeC+?BLvRiHTE)ft!Jcfq_A2^KGWJi~v1%1t|ak

delta 22
dcmeC+?BLvRiHVbmft!Jcfq{W(^KGWJi~u}01qlEE

-- 
GitLab