最適化セミナーのご案内

3.2.6 出力とエラーメッセージ

 solveLPsolveQPの戻り値として,nuoptResultというオブジェクトのポインタが返ります.このオブジェクトのメンバに実行結果についての情報が格納されています.利用可能なメンバは以下の通りです.このメンバの利用の詳細は次項で解説するサンプルコードuseSolveQP.cpp(.cc)をご覧ください.このオブジェクトは利用するコード内で開放(delete)する必要があります.

int errorCode(); エラーコード
char* errorMessage(); エラーメッセージ
double optValue(); 最適値
double VarVal(int i); i番目の変数の値
double VarDual(int i); i番目の変数のdual
double FuncVal(int i); i番目の制約の値
double FuncDual(int i); i番目の制約のdual

 

 上記でiは変数,制約式のインデクスですが,0始まりであることにご注意ください(最初の変数/制約式が0番目).

 エラーコードとエラーメッセージはNumerical Optimizer本体のものと同じです.「Numerical Optimizer/SIMPLEマニュアル」の付録Aをご参照ください.また,solveLPsolveQP特有のエラーとして,引数の矛盾や範囲オーバーがありますが,それは151から165のコード番号に対応します注1.意味は以下のとおりです.

コード 意味
151 nが負
152 mが負
153 変数の下限(bL)が上限(bU)よりも大きい
154 制約式の下限(cL)が上限(cU)よりも大きい
155 nAelemが負
156 irowAのコンポーネントの範囲が違反
157 jcolAのコンポーネントの範囲が違反
158 nQelemが負
159 irowQのコンポーネントの範囲が違反
160 jcolQのコンポーネントの範囲が違反
161 nQCelemが負
162 ifunQCのコンポーネントの範囲が違反
163 irowQCのコンポーネントの範囲が違反
164 jcolQCのコンポーネントの範囲が違反
165 ivtypeの範囲が違反

 

 エラーメッセージは

(NUOPT 156) irowA[0] = 9 should be in [1,3]

のように,実際のデータに即したより詳しい情報を含んでいます.

注1)Numerical Optimizer V18からコード番号が変更となりました.


 

 

上に戻る