私の minizinc モデルは正常に動作していますが、それを Java コードに変換する必要があるため、choco を使用して実行しました。私が今直面している問題は、ミニ亜鉛中華鍋が持つメカニズムがチョコとは異なることです. minizinc で使用した制約を choco で正確に記述しましたが、機能しませんでした。
仮定 :
ミニ亜鉛モデルは:
array[sub_set] of var cl_set: cl_id;
constraint alldifferent(cl_id);
constraint forall(i in sub_set) ( sub_cap[i] <= cl_cap[cl_id[i]]);
チョココードは:
cl_id = VF.boundedArray("", sub_sz, 0, cl_sz - 1, solver);
solver.post(ICF.alldifferent(cl_id));
for (int i = 0; i < sub_sz; i++) {
Constraint a = ICF.arithm(VF.fixed(cl_cap[cl_id[i].getValue()], solver), ">=", sub_cap[i]);
solver.post(a);
}
- cl_cap は int の配列です。
cl_id[i].getValue()
ドメインの下限を取得し、制約が cl_id に適用されないため、常に 0 です。
choco 制約を minizinc と同じように機能させるにはどうすればよいですか?