問題タブ [choco]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
constraint-programming - 制約で IntVar[] 配列のインデックスとして IntVar を使用する
Choco Solver を使用して、制約内の別の IntVar 配列のインデックスとして IntVar の値を使用したいと考えています。
i 番目のタスクに続く次のタスクを含む IntVar があり、タスクに割り当てられた人を含む別の IntVar があります。私の制約は、タスク割り当ての連続性を確保することです。
これは私がすでに試したことですが、失敗しました:
java - choco ソルバー モデルを再利用して、ソリューションをさらに制約する
choco ソルバー ライブラリを使用して一連のパズルを生成しています。ソルバーを実行し、解がいくつあるかを確認し、複数ある場合は制約を追加する必要があります。これを繰り返すと、独自の解決策を持つ一連の制約 (手がかり) が得られます。
ただし、 model.getSolver(findAllSolutions()) を実行すると、追加のチェックはゼロのソリューションを返します。
どうにかしてモデル ソルバーをリセットする必要があると思いますが、これを達成する方法が見つかりません。必要に応じて、新しいモデルを生成したり、既存の制約を再作成したりしたくありません。
元のコードには 110 の IntVar と膨大な数の制約がありますが、私ははるかに小さな例を作成しました。
注: 実際のアプリケーションでは、高速化のために model.getSolver().findAllSolutions(new SolutionCounter(model,2)) を使用していますが、ここではその手順を省略しています。