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 1/3] 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 2/3] 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 3/3] 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