3.2.5 制約式の二次の部分にかかわるもの(solveQPのみ,一括省略可)
int |
nQCelem |
制約式のヘッセ行列の非零要素数 |
int* |
ifunQC |
制約式のヘッセ行列の非零要素が属する制約式番号(長さ:nQCelem)
|
int* |
irowQC |
制約式のヘッセ行列の行番号(長さ:nQCelem)
|
int* |
jcolQC |
制約式のヘッセ行列の列番号(長さ:nQCelem)
|
double* |
qc |
制約式のヘッセ行列の非零要素の値(長さ:nQCelem)
|
これらの引数で制約の二次部分
の係数行列(ヘッセ行列)の群
を与えます.非零要素と,その非零要素が属する制約式の番号のみを与えます.
例えば,制約式1,2の二次の部分がそれぞれ
である場合には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とすると,制約式に二次の部分が存在しないものと解釈されます.その場合にはifunQC,irowQC,jcolQC,qcはすべてNULLポインタとすることができます.
制約式の二次の部分が存在しない場合には,nQCelemから以降の引数をすべて省略することができます.
上に戻る
