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!<_o^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