lsqcurvefit関数を使用して曲線をフィットさせたい。これは次のような問題です。
y = a1 * x + a2 * z
s.t
a1 > 0
a2 > 0
a1 + a2 <= some number
matlabでこのような動的な制約を設定することは可能ですか、それとも他のパッケージを使用する必要がありますか?
lsqcurvefit関数を使用して曲線をフィットさせたい。これは次のような問題です。
y = a1 * x + a2 * z
s.t
a1 > 0
a2 > 0
a1 + a2 <= some number
matlabでこのような動的な制約を設定することは可能ですか、それとも他のパッケージを使用する必要がありますか?
fminconはおそらくあなたが望むものです。制約は別個の関数であるため、方程式として表現できる限り、そこに何でも、任意の数の制約を詰め込むことができます。
lsqlinは、制約が線形等式または不等式である限り、問題のツールです。線形の場合について説明したので、これが正しい解決策です。
非線形制約のある例を示した場合、(Marcinによって提案されたように)fminconを使用することを余儀なくされますが、これは完全な線形問題にはやり過ぎです。そしてもちろん、fminconは、制約の下で目的が線形最小二乗であることを認識していないため、効率が大幅に低下します。
最後に、fminconを使用するには、残差の二乗和として目的を定義する必要があります。lsqlinは問題のクラスを解決するように明示的に設計されているため、この後者の手順はlsqlinには必要ありません。