数理最適化セミナーのご案内

3.2.1 問題全体にかかわるもの(solveLP,solveQP共通)

nuoptParam* options Nuorium Optimizerの求解オプション(0:デフォルト)
int n 変数の総数
int m 制約式の総数(等式,不等式含む)
int minimize 最小化かどうかのフラグ(非零:最小化,0:最大化)
double* x0 変数の初期値(長さ:n
double* bL 変数の下限ベクトル(長さ:n
double* bU 変数の上限ベクトル(長さ:n
int* ibL 変数の下限の有無(長さ:n,非零:あり,0:なし)
int* ibU 変数の上限の有無(長さ:n,非零:あり,0:なし)
double* cL 制約式の下限ベクトル(長さ:m
double* cU 制約式の上限ベクトル(長さ:m
int* icL 制約式の下限の有無(長さ:m,非零:あり,0:なし)
int* icU 制約式の上限の有無(長さ:m,非零:あり,0:なし)

 

 ここで紹介する引数はsolveLPsolveQPに共通で,同じ意味を持ちます.最初の引数はNuorium Optimizerの求解オプションを与えるものですが,0を渡すことができます.その場合には求解オプションとしてデフォルトの設定を用いるという意味になります.通常はデフォルトで問題ありませんが,求解オプションの指定を行う場合には,

nuoptParam myparam;
myparam.method = "asqp"; // 解法の指定
solveQP(&myparam,...);

のようにして,myparamのメンバ(個別の求解オプションに相当する)に値を設定して,solveQPにアドレスを渡します.詳細は「6.8Nuorium Optimizer求解オプション」を参照ください.

 

 変数の上下限が存在しない場合には,対応するibLまたはibUのコンポーネントを0にします.例えばn = 3の場合で

\begin{align*}& 0 \le x_{1} \\ & x_{2} \le 1 \\ & 2 \le x_{3} \le 3\end{align*}

という上下限を表現する場合には次のように設定します.

配列の添字 bL bU ibL ibU
0 0 任意 0以外 0
1 任意 1 0 0以外
2 2 3 0以外 0以外

 

 C++では配列の添字は0はじまりですので,1番目の変数は添字0の場所に対応します.配列の「任意」と書かれた場所は無視されます.「0以外」という場所は0以外の任意の値です.制約式についても全く同様です.

 変数の固定,および等式制約は上限と下限を一致させることによって表現します.ibLibUicLicUの場所にNULLポインタを渡すことが許されています.その場合,すべて0が格納された配列を渡すのと同じ意味になります.

 初期値に対応するx0にNULLポインタを渡すことができます.その場合には初期値はデフォルトのものを用いるという意味になります.


 

 

上に戻る