二次プログラミングとは何ですか?
二次プログラミングは、線形に制約されている場合としない場合がある多変数二次関数を最適化するために使用される方法です。 企業のポートフォリオの最適化やメーカーのコストの削減など、多くの現実世界の問題は、2次プログラムを使用して説明できます。 目的関数が凸である場合、実行可能なソリューションが存在し、拡張されたシンプレックスアルゴリズムなどの既知のアルゴリズムによって解決される場合があります。いくつかの非凸の二次関数を解くための方法が存在しますが、それらは複雑であり、容易に入手できません。
目的関数を最小限に抑えるために、数学的最適化手法が2次プログラミングで使用されます。 目的関数は、制限される場合と囲まれていない場合がある多くの決定変数で構成されています。 決定変数にはパワー0、1、または2があります。目的関数には、決定変数に関する多くの線形等式と不平等制約がかかる場合があります。二次プログラミングの例は次のとおりです。f(x、y)= x 2 + 3y 2 -12y + 12ここで、x + y = 6およびy≥0。
多変量二次関数を使用して現実世界の問題を説明することは興味深いことがよくあります。 たとえば、最新のポートフォリオ理論を使用して、財務アナリストは、特定の期待収益に関連するリスクを最小限に抑える資産の割合を選択することにより、企業のポートフォリオを最適化しようとします。 資産の重みで構成される二次式と資産間の相関は、二次プログラミングを使用して最小化できるポートフォリオの分散を表します。 別の例は、2次方程式を使用して、さまざまな品質コンポーネントと製品のコストとの関係を説明するメーカーです。 メーカーは、2次プログラムに線形制約を追加することにより、特定の基準を維持しながらコストを最小限に抑えることができます。
最も重要な条件の1つ2次プログラムの解決におけるNSは、目的方程式の凸性です。 二次関数の凸性は、ヘシアンまたはその2番目の導関数のマトリックスによって決定されます。 ヘシアンマトリックスが正確または正の半定義のいずれかである場合、つまり、すべての固有値がそれぞれ正または非陰性である場合、関数は凸と呼ばれます。 ヘシアンが正であり、実行可能なソリューションが存在する場合、その局所的最小は一意であり、グローバルな最小値です。 ヘシアンが半陽性の場合、実行可能なソリューションは一意ではないかもしれません。非凸関数はローカルまたはグローバルな最小値を持っている可能性がありますが、決定がより困難です。
二次プログラミングを使用して、凸状の二次関数を解くための多くのアプローチがあります。 最も一般的なアプローチは、シンプレックスアルゴリズムの拡張です。 他のいくつかの方法には、内部ポイントまたはバリア法、アクティブセット方法、および共役勾配法が含まれます。 これらの方法はCERに統合されていますMathematica®やMatlab®などのTainプログラムと、多くのプログラミング言語のライブラリで入手できます。