Concert Technologies(Javaを使用)で決定変数タイプを変更するにはどうすればよいですか?

Aug 20 2020

連続変数を持つMILPモデルがあります($y_{ij}$)とバイナリ($x_{ij}$)。実装にはJavaとcplex12.8を使用しています。

Java-cplex APIを使用して、バイナリで最初に解決できるモデルを1つだけ作成できる方法はありますか? $x_{ij}$の次に連続変数の場合($0 \leq x_{ij} \leq 1$)?LP-RとMIPのギャップをその場で確認したいのですが、2つの異なるLPモデルとMILPモデルを作成したくありません。

回答

2 AlexFleischer Aug 20 2020 at 21:53

変数のタイプは変更できません。ただし、IloConversionオブジェクトを追加することで、特定のモデルに対して上書きできます。これにより、そのモデル内の変数に新しいタイプを指定できます。ILOG CPLEXは、アクティブなモデルで変換オブジェクトを見つけると、最適化に指定された元のタイプではなく、変換オブジェクトで指定された変数タイプを使用します。たとえば、次のものを含むモデルの場合:

IloNumVar x = cplex.numVar(0.0, 1.0);   
cplex.add(cplex.conversion(x, IloNumVarType.Int));