2

一次方程式のセットがある場合(ランダム行列が生成されます):

2x + 4y + 6z = 4
5x + 3y + 7z = 1
9x + 7y + 3z = 6

を解きたいのですがx、行列の除算を行うだけですy。しかし、この行列にやzのような制約を設定したい場合、これを行う方法はありますか?x > 0x = 4

次の例のように、別の行を正しく追加していますか?

2x + 4y + 6z = 4
5x + 3y + 7z = 1
9x + 7y + 3z = 6
1x + 0y + 0z = 1 <---

より大きな行列とより複雑な係数でこれらの制約を適用する一般的な方法はありますか?

4

2 に答える 2

1

MATLAB では、(すべての変数に対して) 非負の制約に lsqnonneg を使用します。最適化ツールボックスがある場合は、lsqlin を使用して、不等式制約の問題、または特定の変数のみが制約されている問題を解決します。

もちろん、linprog のような LP ソルバーを使用することもできますが、linprog がある場合は、lsqlin も使用できます。quadprog ソルバーを使用することもできると思いますが、わざわざする必要はありません。問題に適したツールを使用してください。

明示的な反復ソルバーを使用して fmincon のように解決するというアイデアについては、はい、それを行うこともできますが、解決に時間がかかり、正確性の低い結果が残ることになります。

于 2012-05-01T16:59:40.937 に答える
0

はい、ラグランジュ乗数またはシンプレックス法のいずれかを調べて、それがどのように行われるかを確認する必要があります。

于 2012-05-01T12:55:11.040 に答える