解データの照会

最適化の後で解に関するデータを照会するために、C++ API で使用できるメソッドについて説明します。

getValueIloTrue を返す場合、実行可能解が見つかっているので、モデル変数の解値を照会できます。例えば、数値変数 var1 の解値には以下のようにしてアクセスできます。

IloNum x1 = getValue(var1);

しかし、解値を変数ごとに照会しようとすると、コードが長くなってしまう可能性があります。そこで、Concert Technology の配列を使用すると、より短いコードで解値にアクセスできます。 例えば、変数が var という名前の数値変数の配列 (IloNumVarArray) に格納されているとします。その場合、以下のようなコードを使用すると、var 内のすべての変数の解値に同時にアクセスできます。

IloNumArray x(env); getValues(x, var);

x[i] には、変数 var[i] の解値が含まれます。

解データは、変数の解値に制限されません。また、解データには制約のスラック変数の値 (制約が線形か 2 次か) と目的値も含まれます。抽出されたモデルに目的オブジェクトが含まれない場合、IloCplex は式オブジェクトがないものと見なします。目的値は、呼び出しメソッド getObjValue によって戻されます。 スラック値には、メソッド getSlack および getSlacks を使用してアクセスします。これらのメソッドでは、線形制約、2 次制約、または制約の配列をパラメーターに取ります。

LP や QP の場合、解データには双対変数や被約費用などの情報が含まれます。このような情報を照会するには、メソッド getDualgetDualsgetReducedCost、および getReducedCosts を使用します。