最適化セミナーのご案内

3.2.5 制約式の二次の部分にかかわるもの(solveQPのみ,一括省略可)

int nQCelem 制約式のヘッセ行列の非零要素数
int* ifunQC 制約式のヘッセ行列の非零要素が属する制約式番号(長さ:nQCelem
int* irowQC 制約式のヘッセ行列の行番号(長さ:nQCelem
int* jcolQC 制約式のヘッセ行列の列番号(長さ:nQCelem
double* qc 制約式のヘッセ行列の非零要素の値(長さ:nQCelem

 

 これらの引数で制約の二次部分

\[\frac{1}{2} \sum_{j,k} Q_{j,k}^{i} \cdot x_{j} \cdot x_{k}\quad \mbox{($i$は制約式の番号)}\]

の係数行列(ヘッセ行列)の群

\[Q_{j,k}^{i}\]

を与えます.非零要素と,その非零要素が属する制約式の番号のみを与えます.

 例えば,制約式1,2の二次の部分がそれぞれ

\[Q^{1} = \left[ \begin{matrix} 4 & 3 \\ 3 & 6 \end{matrix} \right],\ Q^{2} = \left[ \begin{matrix} 8 & 2 \\ 2 & 3 \end{matrix} \right]\]

である場合にはnQCelem = 6として

配列の添字 ifunQC irowQC jcolQC qc
0 1 1 1 4
1 1 1 2 3
2 1 2 2 6
3 2 1 1 8
4 2 1 2 2
5 2 2 2 3

 

と設定します.制約式は1始まりの番号で指定します.また,行列の非零要素の場所も1始まりの番号で指定します.

 制約式のヘッセ行列も対称であることを前提としているので,目的関数のヘッセ行列と同じく下三角部分の非零要素を与えると同時に上三角部分も与えたことになる(その逆も同じ)という原則が適用されます.また,目的関数の二次部分のヘッセ行列と同じく,同一の非零要素が二つ以上与えられると和が取られます.

 非零要素の格納順番は任意です.

 nQCelem=0とすると,制約式に二次の部分が存在しないものと解釈されます.その場合にはifunQCirowQCjcolQCqcはすべてNULLポインタとすることができます.

 制約式の二次の部分が存在しない場合には,nQCelemから以降の引数をすべて省略することができます.


 

 

上に戻る