すべての制約を満たすすべてのソリューションを見つけるという線形の問題があります。たとえば、私の変数は = [0.323, 0.123, 1.32, 6.3...] です。たとえば、フィットネス (最大化/最小化) 関数で並べ替えられた上位 100 のソリューションを取得することは可能ですか?
2 に答える
継続的な LP では、さまざまなソリューションを列挙することは難しい概念です。たとえば、 を検討してmax x, s.t. x <= 1
ください。明らかにx=1
、x=0.99999
は解決策であり、その間に無限の数の解決策があります。「コーナーソリューション」(または基本的なソリューション)を列挙できます。例については、こちらを参照してください。このようなスキームは、目的別にソートされた最初の 100 個の異なるコーナー ポイントを見つけるように適合させることができます。離散変数を持つモデルの場合、多くの制約プログラミング ソルバーにより、多くの解を見つけることができます。
あなたが提案したようにフィットネス関数を定義できる場合は、最初にこの関数を最大化する LP を解きたいと思うかもしれません。その後、2 番目のソリューションが最初のソリューションよりもわずかに悪くなるように強制する客観的なカットオフを含めることができます。の右辺で目的関数であるカットを導入することで、これを実装できますoptimal value - epsilon
。
もちろん、これですべての (基本的な) 解が得られるわけではありませんが、どの変数が常に同じ値であるか、または異なる解の間にどれだけの差異があるかを発見できるかもしれません。