0
私はChoco SolverでJAVAを使って多次元ナップザック問題を実装しようとしています。私の考えは、2つのナップザックに3つのアイテムを割り当てることです。チョコソルバーを使ったナップザックでのアイテム割り当て
私のアイテムには重量とナップザックの制限があります。 int [] itemWeight = {2、2、2}; int [] knapsackLimit = {4、4};
3つのアイテムが{0、1}の間にナップザックを持つ私の決定変数: int [] itemAllocation = {1,1,0};
私はチョコソルバーを使用することによって、この問題を書いた:
Model model = new Model("KnapsackProblem");
// Allocation variable
IntVar[] x = new IntVar[3];
for (int i = 0; i < itemNumber; i++) {
x[i] = model.intVar("x"+i, 0, knapsackNumber-1);
}
// Knapsack capacities variables
IntVar[] limitVar = new IntVar[knapsackNumber];
for (int i = 0; i < knapsackNumber; i++) {
limit[i] = model.intVar(knapsackLimit[i]);
}
IntVar[] itemWeightVar = new IntVar[itemNumber];
for (int i = 0; i < itemNumber; i++) {
itemWeightVar[i] = model.intVar(0, 2);
model.element(itemWeightVar[i], itemWeight,x[i]);
}
// Limit Cosntraints
for (int i = 0; i < knapsackNumber; i++) {
model.sum(itemWeightVar, "<=", limit[x[i].getValue()]);
}
model.getSolver().solve();
を残念ながら、この方法では動作しません。私はいつも以下の割り当てを得る:[x0 = 0、x1 = 0、x2 = 0]
ありがとう。
ベスト
は、あなたの答えをいただき、ありがとうございます。それはチョコソルバーの新しい名前です? – AkrogAmesようこそ。いいえコスリング私の会社の名前ですが、私たちはチョコソルバーにあなたの興味をそそるかもしれないprofessionnalサポートを提供する –