3

私は一般的にgecodeと制約プログラミングに不慣れです。

これまでのところ、gecode を取得するのにそれほど問題はありませんでした。しかし、「ネストされた」コスト関数を実行する最良の方法は何だろうと思っていました。具体的には、X を最小化しようとしていますが、X が等しいソリューションの範囲内で、Y を最小化するソリューションを優先しますか? おそらく、X*large_number+Y のようなコスト関数を定義することでハッキングできますが、適切な解決策があれば、これを適切に行うことをお勧めします。

これを Gecode で実装する方法を誰かが説明してくれれば、それは本当に役に立ちます。ありがとう!

4

1 に答える 1

2

Gecode 内のスペースで制約メンバーを使用して、あらゆる種類の最適化基準を定義できます。例については、 Gecode を使用したモデリングとプログラミングのセクション 2.5 を参照してください。あなたの場合、簡単な方法は、以前の最良の解決策の回答と現在のスペースの間に辞書式の制約を追加する制約メンバーを追加することです。

そうは言っても、一般に、辞書式順序に基づく最適化は無駄になる可能性があります (検索が多すぎます)。多くの場合、最初のコンポーネント (この場合は X) を最適化する検索を最初に実行する方がよい場合があります。その後、最初のコンポーネント値を固定して検索を再実行し (X を可能な限り最適な値に設定)、2 番目の値を最適化します (この場合は Y)。コスト内のすべての要素について、必要に応じて繰り返します。

于 2012-10-09T09:11:26.803 に答える