4

私の教授は私にバイナリ線形計画問題を教えてくれましたが、この問題は私が解決した最適化問題とは少し異なります(つまり、これはおそらくオブジェクト関数を最大化または最小化していないでしょう)。

問題は次のとおりです。行列Mが与えられた場合、エントリm_ij!= 0には、対応するx_ijk変数があります。エントリm_ij=0は無視できます。

x_ijkは0または1のいずれかであり、各m_ijに対して5つのx_ijk変数(つまり、x_ij1、x_ij2、x_ij3、x_ij4、およびx_ij5。1つは1、他は0)を試して、いくつかの条件を満たすのに十分です。 (不等式のセット)。

より簡単に言えば、これは、各m_ijに対して5つのx_ijk変数を含む一連の制約が有効な(または実行可能な)制約であるかどうかを確認することです。

いくつかの最適化問題を解決しましたが、目的関数なしで問題を解決したことはありません。

ここで目的関数として何を設定する必要がありますか?0?なし?

lp_solveまたはCPLEXを使用している可能性があります。

よろしくお願いします!

4

1 に答える 1

4

そうです、目的関数として任意の定数値を設定できます。

私が試したソルバーのほとんどは、空の目的関数を許可します。モデルから除外するだけです。

使用しているソルバーとAPIによっては、目的のすべての変数の係数をゼロに設定しなければならない場合があります。

心配しないでください、それは機能しなければなりません。


あなたのコメントへの回答:はい、制約プログラミングツールは、LPソルバー(CPLEXなど)よりも実現可能性の問題に対して優れたパフォーマンスを提供できます。私は数ヶ月前にIBMILOGCPLEX CP Optimizerで遊んだことがありますが、アカデミックユーザーは無料です。LPソルバーとCPソルバーの両方が私の問題で失敗しました。制約プログラミングに奇跡を期待しないでください。

制約プログラムを解決するために必要な時間は、最悪の場合、問題のサイズとともに指数関数的に増加することに注意してください。遅かれ早かれ、問題はどちらのツールでも解決できなくなる可能性があります。

参考までに、制約プログラミングソルバーはLPソルバー(たとえばCPLEX)を呼び出します。

私のアドバイスは次のとおりです。あなたがすでに持っているツールを試してみてください/あなたにとってより自然な問題の定式化を使用してください。ツールが問題を解決できるかどうかを確認します。ツールが失敗し、モデルを改善できない場合にのみ、ツールを切り替えます。

于 2013-02-15T18:56:10.323 に答える