私はJaCoP制約プログラミングライブラリの使い方を教えてきましたが、0/1のナップザック問題を実装するのは少し難しかったです。私は4の問題の大きさを試してみましたが、次のように項目と変数を定義しました:JaCoP:0/1のナップザック問題を解決する
knapsack[0] = new KnapsackItem(quantity[0], 5, 7);
knapsack[1] = new KnapsackItem(quantity[1], 7, 9);
knapsack[2] = new KnapsackItem(quantity[2], 2, 3);
knapsack[3] = new KnapsackItem(quantity[3], 3, 3);
IntVar knapsackCapacity = new IntVar(store, "capacity", 0, 10);
IntVar knapsackProfit = new IntVar(store, "profit", 0, 22);
私はその後、ナップザックリストを使用してナップザック制約を追加しました:
制約CON =新しいナップザック(ナップザック、ナップザック能力、ナップザック能力); store.impose(con);
そして、私はその後、チュートリアルで与えられた方法で解決策を検索しました:
//search for a solution and print results
Search<IntVar> search = new DepthFirstSearch<IntVar>();
SelectChoicePoint<IntVar> select = new InputOrderSelect<IntVar>(store, quantity,
new IndomainMin<IntVar>());
boolean result = search.labeling(store, select);
if (result) {
System.out.println("Solution: "+quantity[0]+", "+quantity[1]+", "+quantity[2]+", "+quantity[3]);
} else {
System.out.println("*** No");
}
を私が得る結果は、全ての量がゼロであるということだけである制約条件を満たしているが、何を最適化していません。各項目の利益*数量を最大化するために追加する必要がある別の制約や何かがありますか?
search.labeling(store, select, cost);
:
は、私はあなたが(第3引数としてコスト)以下を使用します(最小化)Knapsack
制約を使用していないが、一般的に最適化するために、
ベン