Skip to content
Snippets Groups Projects
Commit f62f4c98 authored by GOUNOU Boubacar's avatar GOUNOU Boubacar
Browse files

Mise à jout des objets

parent 5400343c
No related branches found
No related tags found
1 merge request!4Dev1
No preview for this file type
import java.util.Arrays;
import java.util.List; import java.util.List;
public class App { public class App {
...@@ -5,5 +6,6 @@ public class App { ...@@ -5,5 +6,6 @@ public class App {
Backpack backpack= new InstanceReader().read("src/sac4"); Backpack backpack= new InstanceReader().read("src/sac4");
backpack.solve(); backpack.solve();
System.out.println("meilleur solution :" + backpack.getBestValue()); System.out.println("meilleur solution :" + backpack.getBestValue());
System.out.println("meilleur solution :" + Arrays.toString(backpack.getBestSolution()));
} }
} }
...@@ -7,16 +7,22 @@ public class Backpack { ...@@ -7,16 +7,22 @@ public class Backpack {
private int bestValue = 0; private int bestValue = 0;
private int currentWeight = 0; private int currentWeight = 0;
private int currentValue = 0; private int currentValue = 0;
private boolean[] currentSolution;
private boolean[] bestSolution;
public Backpack(int capacity, List<Loot> loots) { public Backpack(int capacity, List<Loot> loots) {
this.capacity = capacity; this.capacity = capacity;
this.loots = loots; this.loots = loots;
this.currentSolution = new boolean[loots.size()];
this.bestSolution = new boolean[loots.size()];
} }
public void solve() { public void solve() {
this.sortByRatio(); this.sortByRatio();
explore_from(0); explore_from(0);
System.out.println("La valeur optimale est : " + bestValue); System.out.println("La valeur optimale est : " + bestValue);
System.out.println("Objets inclus dans la solution optimale : " + bestSolution);
} }
public String toString(){ public String toString(){
...@@ -57,6 +63,7 @@ public class Backpack { ...@@ -57,6 +63,7 @@ public class Backpack {
if (index >= loots.size()) { if (index >= loots.size()) {
if (currentValue > bestValue) { if (currentValue > bestValue) {
bestValue = currentValue; bestValue = currentValue;
System.arraycopy(currentSolution, 0, bestSolution, 0, loots.size());
} }
return; return;
} }
...@@ -75,9 +82,11 @@ public class Backpack { ...@@ -75,9 +82,11 @@ public class Backpack {
if (currentWeight + currentLoot.getWeight() <= capacity) { if (currentWeight + currentLoot.getWeight() <= capacity) {
currentWeight += currentLoot.getWeight(); currentWeight += currentLoot.getWeight();
currentValue += currentLoot.getValue(); currentValue += currentLoot.getValue();
currentSolution[index] = true;
explore_from(index + 1); explore_from(index + 1);
currentWeight -= currentLoot.getWeight(); currentWeight -= currentLoot.getWeight();
currentValue -= currentLoot.getValue(); currentValue -= currentLoot.getValue();
currentSolution[index] = false;
} }
// on explore sans l'objet // on explore sans l'objet
...@@ -87,4 +96,8 @@ public class Backpack { ...@@ -87,4 +96,8 @@ public class Backpack {
public int getBestValue() { public int getBestValue() {
return bestValue; return bestValue;
} }
public boolean[] getBestSolution() {
return bestSolution;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment