MATLAB で凸最適化問題の収束を高速化したいと考えています。
私の目的関数は 3 つのパラメーターを持つ凸状で、最大化のために勾配上昇を使用しています。
現在、新しいパラメーター値と古いパラメーター値の差が非常に小さい (約 0.0000001) という終了条件で反復を手動で記述しています。最適解に収束したことを保証するものではないため、反復回数に基づいて終了することはできません。
そのため、収束には多くの時間がかかります - ほぼ 2 日です! これをスピードアップする方法はありますか?
実際、私の目的関数には 3 つのパラメーターしかありません。最初のパラメーターの値が 2 番目のパラメーターの値よりも大きくなければならないことはわかっています。
そのため、初期条件から開始して、2 番目のパラメーターの値が急速に増加し始めます。あるポイントに達すると、最初のパラメーターの値が急速に増加し始めます。最初のパラメーターの値が増加し始める間、2 番目のパラメーターの値はゆっくりと減少し始めます。最終的に、最初のパラメーターの値が2番目のパラメーターの値よりも大きくなります。
プロセスをスピードアップする方法はありますか?2日間はとても長いです。さらに、勾配の計算にも時間がかかります。多くの行列計算が必要です。
parameter1 の値が 2 番目の値よりも大きいような、定義済みのパラメーター値から始めたくありません。また、最初のパラメーターが常に 2 番目のパラメーターよりも大きくなければならないというわけではありません。どのパラメーター値を大きくする必要があるかはわかっています。助言がありますか?