従来、線形計画法は、一連の制約、変数、および目標(すべて線形関係として記述されています)に対する1つの最適な解を見つけるために使用されます。時々、目的が制約に平行であるとき、無限または多くの等しく良い最適解があります。この後者のケースについては質問していません。
私は、私の一連の制約によって生成された実行可能領域にある多くのソリューションを見つけることにもっと興味があります。しかし、私が見つけた解は、それらが互いに最大限に離れているという意味で、実行可能領域の周りに「散在」していることを望みます。ソルバーを複数回実行せずに、複数のソリューションを生成し、目的関数を使用してソリューションを分離することを強制する既知の方法はありますか?
たとえば、決定がaおよびbで制約がw <= a <= xおよびy <= b <= zの線形計画は、2つの解を見つけるために「複製」できます。新しい線形プログラムには、変数a1、a2、b1、およびb2と、制約w <= a1 <= xおよびw <= a2 <= xがあり、b1、b2についても同様です。ただし、目的関数を作成する場合、線形性を破棄せずにL1ノルム以外のノルムを使用できず、L1ノルムを使用することは不可能であるため(本当に私が知る限り) )絶対値をエンコードします。
たぶん、凸最適化や半確定プログラミングなどを検討する必要がありますか?
線形プログラムに対する一連のソリューションを生成し、ソリューション間の「距離」を強制する目的を使用する既知の方法はありますか?