3.2.4 目的関数の二次の部分にかかわるもの(solveQPのみ)
int |
nQelem |
目的関数のヘッセ行列の非零要素数 |
int* |
irowQ |
目的関数のヘッセ行列の行番号(長さ:nQelem )
|
int* |
jcolQ |
目的関数のヘッセ行列の列番号(長さ:nQelem )
|
double* |
q |
目的関数のヘッセ行列の非零要素の値(長さ:nQelem )
|
ここに挙げた引数で目的関数の二次の部分の係数行列(ヘッセ行列)
のを与えます.制約式の係数行列と同様に非零要素のみを与えます.指定の仕方は制約式の係数行列と同様です.非零要素の場所は1始まりの番号で与えます.しかし,目的関数のヘッセ行列は対称行列であることを前提としていますので,下三角部分の非零要素を与えると同時に上三角部分も与えたことになる(その逆も同じ)という点に注意してください.
例えば
というヘッセ行列を定義するためにはnQelem = 3
として
のように与えます.
あるいは以下のようにしても同じ意味です.
同じ非零要素を二つ与えるとその和が取られます.従ってnQelem=4
として
とすると,上の下三角部分の非零要素を与えると同時に上三角部分も与えたことになるという原則(その逆も同じ)によって
を定義したことになりますのでご注意ください.また,非零要素の格納順番は任意です.
nQelem=0
とすると,目的関数に二次の部分が存在しないものと解釈されます.その場合にはirowQ
,jcolQ
,q
はすべてNULLポインタとすることができます.
上に戻る