
二次関数は数学的プログラミングにおける強力なモデリング構成要素であり、統計学、機械学習(Lasso回帰)、金融(ポートフォリオ最適化)、工学(OPF)、制御理論など様々な分野で使用されています。nAGライブラリのMark27.1で、nAGはnAG最適化モデリングスイートに2つの新しい追加を導入しました。これにより、ユーザーは二次目的関数や制約を簡単に定義し、他の制約とシームレスに統合し、余分な労力を必要とせずに問題を解くことができるようになりました。
QCQP問題は、目的と制約の両方に二次関数のみを持つ純粋な形式で、以下のように表現できます。
ここで は対称行列であり、 はベクトルであり、 はスカラーです。 しかし多くの場合、線形制約や単純な境界も含めて記述されます。 2つの新しいルーチンは、上記のように2次関数を組み立てて定義するhandle_set_qconstr(e04rs)と、 のファクト付き形式を使用するhandle_set_qconstr_fac(e04rt)です。 後者の形式は、データフィッティング のように、係数 が自然に現れる多くのアプリケーションで有用です。
重要な問題は、その問題が凸であるか非凸であるかであり、それが、円錐最適化(二次円錐計画法、SOCP)で解けるか、もしくは一般的な非線形計画法(NLP)でしか解けないかを決定します。すべての が正の半定値であれば、この問題は凸となります(分解された形式は定義上、正の半定値となります)。
QCQP問題は、このリリースで新たに追加された機能がなくても解くことができましたが、 今までは、再定式化を行った上で、SOCPソルバーを使うか、もしくは2次関数部分に関してコールバックを使う等の工夫が必要で、簡単であるとは言えませんでした。 ユーザーの不必要な負担を取り除くために、新しいルーチンは、スイートから選択されたソルバーが必要とする適切な自動再定式化を使用して、2次データをソルバーに直接提供します。

- 非凸QCQPの場合、nAGは入力データを使用して、非線形計画ソルバー(handle_solve_ipopt(e04st)など)によって使用される第一導関数と第二導関数を自動的にアセンブルします。
- 凸QCQP問題は非線形計画法でも解くことができますが、計算効率と実現不可能性の検出能力の優れた2次円錐計画ソルバー(handle_solve_socp_ipm< (
e04pt))をお勧めします。その場合、nAGは効率的で数値的に堅固な方法で全ての
行列の因数分解を含む二次関数の円錐への再構成を行います。これは特異行列や特異行列に近い行列の場合に特に役立ちます。
nAG最適化モデリングスイート内のソルバーのインターフェイスの一貫性を維持することにより、e04rsとe04rtは、モデルの構築を簡素化し、数理最適化におけるnAGの提供を強化するスイートの一部になります。例と詳細については、ローカル最適化 Exampleページをご覧ください。