MATLABで線形計画問題を解く方法
📂最適化理論MATLABで線形計画問題を解く方法
概要
Optimization Toolbox
を使えばいいんだ。線形計画問題を行列形で表されたA,b,cを入れて使う。
コード
Maximizesubject to−x1x1x1++x2x2x2≤≤≤132
簡単な例として、x1,x2≥0のような最大化問題を解いてみよう。生エビ寿司屋ではこの問題をシンプレックス・メソッドを使って手で解いて、その答え(x1∗,x2∗)=(3,2)を知っている。この線形計画問題は、
Optimizesubject tocTxAx≤b
このような形で、c=(1,1)、A=−111100、b=(1,3,2)だから、次のように書き写して解くことができる。
>> A = [-1 1
1 0
0 1];
b = [1 3 2];
c = [-1 -1];
x = linprog(f,A,b,[],[], [0,0])
ここで、c = [-1,-1]
をc = [1,1]
ではなく使う理由は、linprog()
の基本的な最適化方向が最小化のためだ。その方向だけを反転すれば最大化と同じで、結果は我々が既に知っていたように(x1,x2)=(3,2)=[3 2]
だ。
최적해를 구했습니다.
x =
3
2
環境
- OS: Windows
- MATLAB: v9.9.0.1592791 (R2020b)
- Optimization Toolbox: v9.0 (R2020b)
参考にした方がいいもの