1

CPLEX Java API で MIP 開始を効率的に使用する方法が見つかりません。

制約を 1 つだけ変更するか目的を変更することで何度も解決する必要がある線形問題があるため、(MIP 開始を使用して) 解から開始することが計算を高速化する良い方法であると考えました。

そのため、最初に問題を解決した後、すべての変数を IloNumVar の配列に保存し、cplex.addMIPStart を使用して他の cplex オブジェクトに渡します。

問題は、何も高速化されず、速度が低下し、次のメッセージが表示されることです。

警告: 1 つの MIP 開始から解決策が見つかりません。

したがって、MIP にすべての変数を開始させるべきではないかもしれませんが、どの変数を与えるべきかをどのように知ることができますか?

また、MIP の開始努力を変更しようとしましたが、違いはないようです...

なぜ計算が速くならないのですか? わずかな違いしかない多くの問題を解決するためのより良い方法はありますか?

4

1 に答える 1

2

このメッセージは通常、モデル内の十分な決定変数に値を指定していないか、cplexに指定した値が実行可能でないことを意味します。変数でIloNumVar.setBoundsを使用してモデルを解決しようとすると、実現可能性を確認できます。それが実行不可能な場合は、iisファイルを作成できます。CPLEXは試行しますが、mipstartを利用できないため、実行速度が遅くなります。特にcplexが最初に実行可能なソリューションを見つけるのに苦労し、MIPスタートが最適に近い目的関数値を持っている場合、適切なMIPスタートはソリューション時間を劇的に改善できますが、多くの場合、それは何もしません。違い。ウォームスタートMIPは、ウォームスタートLPよりもはるかに困難です。

于 2013-03-19T00:17:18.573 に答える