2011-09-13 9 views
3

私は、一般的には、プログラミングと拘束プログラミングが初めてです。Gecodeで '入れ子にされた'コスト関数を実装する方法は?

これまでのところ、私は大変なことにgecodeを取り上げるのに苦労していませんでした。しかし、 "入れ子にされた"コスト関数を実行する最良の方法が何であるか疑問に思っていました。具体的には、私はXを最小化しようとしていますが、Xが等しいソリューションの空間内でYを最小化するソリューションが好まれますか?おそらく、X * large_number + Yのようなコスト関数を定義することによってそれをハックする可能性がありますが、良い解決策があればこれを適切に行うことを好むでしょう。

これを実装する方法を誰かが指摘できれば、本当に役に立ちます。ありがとう!

+0

多目的最適化の一種を実行しようとしているようです。 GeoCodeでサポートされているかどうかはわかりません。例えば、Minionは1つの目的関数しかサポートしていない(または全くない)ことを明示しています。 –

答えて

2

Gecodeのスペース内の制約メンバーを使用して、あらゆる種類の最適化基準を定義できます。例としては、Modeling and Programming with Gecodeのセクション2.5を参照してください。あなたのケースでは、直前の最善の解答と現在の空間の間に辞書編集の制約を加える制約メンバーを追加するのが簡単な方法です。通常、辞書編集の順序に基づいて最適化すると、無駄になる(検索が多すぎる)ことがあります。最初のコンポーネント(あなたの場合はX)を最適化する検索を最初に実行する方が良い場合があります。その後、最初のコンポーネントの値を固定(Xは可能な限り最良の値に設定)して検索を再実行し、2番目の値(ケースのY)を最適化します。コストのすべての要素に対して必要に応じて繰り返します。

関連する問題