74 lines
2.4 KiB
Java
74 lines
2.4 KiB
Java
package hu.pj.alg.test;
|
|
|
|
import hu.pj.alg.ContinuousKnapsack;
|
|
import hu.pj.obj.Item;
|
|
import java.util.*;
|
|
import java.text.*;
|
|
|
|
public class ContinousKnapsackForRobber {
|
|
final private double tolerance = 0.0005;
|
|
|
|
public ContinousKnapsackForRobber() {
|
|
ContinuousKnapsack cok = new ContinuousKnapsack(15); // 15 kg
|
|
|
|
// making the list of items that you want to bring
|
|
cok.add("beef", 3.8, 36); // marhahús
|
|
cok.add("pork", 5.4, 43); // disznóhús
|
|
cok.add("ham", 3.6, 90); // sonka
|
|
cok.add("greaves", 2.4, 45); // tepertő
|
|
cok.add("flitch", 4.0, 30); // oldalas
|
|
cok.add("brawn", 2.5, 56); // disznósajt
|
|
cok.add("welt", 3.7, 67); // hurka
|
|
cok.add("salami", 3.0, 95); // szalámi
|
|
cok.add("sausage", 5.9, 98); // kolbász
|
|
|
|
// calculate the solution:
|
|
List<Item> itemList = cok.calcSolution();
|
|
|
|
// write out the solution in the standard output
|
|
if (cok.isCalculated()) {
|
|
NumberFormat nf = NumberFormat.getInstance();
|
|
|
|
System.out.println(
|
|
"Maximal weight = " +
|
|
nf.format(cok.getMaxWeight()) + " kg"
|
|
);
|
|
System.out.println(
|
|
"Total weight of solution = " +
|
|
nf.format(cok.getSolutionWeight()) + " kg"
|
|
);
|
|
System.out.println(
|
|
"Total value (profit) = " +
|
|
nf.format(cok.getProfit())
|
|
);
|
|
System.out.println();
|
|
System.out.println(
|
|
"You can carry the following materials " +
|
|
"in the knapsack:"
|
|
);
|
|
for (Item item : itemList) {
|
|
if (item.getInKnapsack() > tolerance) {
|
|
System.out.format(
|
|
"%1$-10s %2$-15s %3$-15s \n",
|
|
nf.format(item.getInKnapsack()) + " kg ",
|
|
item.getName(),
|
|
"(value = " + nf.format(item.getInKnapsack() *
|
|
(item.getValue() / item.getWeight())) + ")"
|
|
);
|
|
}
|
|
}
|
|
} else {
|
|
System.out.println(
|
|
"The problem is not solved. " +
|
|
"Maybe you gave wrong data."
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
new ContinousKnapsackForRobber();
|
|
}
|
|
|
|
} // class
|