YALMIP应用篇
yalmip是一个在matlab内的建模工具包,能够用一套统一的建模语言来构建约束,调用其他的求解器,减少了单独学习其他语言的浪费,我根据论文
俞武扬. YALMIP工具箱在运筹学实验教学中的应用[J]. 实验室研究与探索, 2017(8).
由于该论文的代码有错误,我改写了一下 以下例子为论文中的例子 1.一般线性规划 2.运输问题 3.背包问题 4.指派问题 5.最短路问题
在写程序之前要把求解器如cplex,gurobi等路径设置好 然后用yalmiptest来测试一下是否能够调用求解器
yalmip基本格式
- 创建决策变量
- 目标函数
z
- 约束条件设置
C
- 参数设置
ops = sdpsetting('solver','Cplex','verbose',0); verbose:显示冗余度
0为只显示结果 - 求解
result = solvesdp(C,z,ops)
一般线性规划
model
min Z = C X s.t. { A X = b X ⩾ 0 \begin{array}{l}{\min Z=C X} \\ {\text { s.t. }\left\{\begin{array}{l}{A X=b} \\ {X \geqslant 0}\end{array}\right.}\end{array} minZ=CX s.t. { AX=bX⩾0
例子
min Z = 12 x 1 + 5 x 2 + 8 x 3 s.t. { 2 x 1 + 3 x 2 + x 3 ⩾ 30 4 x 1 + x 2 + 5 x 3 ⩾ 15 x 1 , x 2 , x 3 ⩾ 0 \min Z=12 x_{1}+5 x_{2}+8 x_{3}\\ \text { s.t. }\left\{\begin{array}{l}{2 x_{1}+3 x_{2}+x_{3} \geqslant 30} \\ {4 x_{1}+x_{2}+5 x_{3} \geqslant 15} \\ {x_{1}, x_{2}, x_{3} \geqslant 0}\end{array}\right. minZ=12x1+5x2+8x3 s.t. ⎩⎨⎧2x1+3x2+x3⩾304x1+x