2

私の 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 と同じように機能させるにはどうすればよいですか?

4

1 に答える 1