数学建模-线性规划
线性规划大家都很熟悉,就直接写如何使用matlab解线性规划问题了
MATLAB的线性规划
在MATLAB中,规定线性规划的标准形式为
其中$c$和$x$为$n$维列向量,$A$ 、$Aeq$ 为适当维数的矩阵, $b$ 、$beq$ 为适当维数的列向量。
例如线性规划
的MATLAB标准形式为
matlab代码为
1 | [x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS) |
这里x是结果,fval 返回目标函数的值,c是目标函数的参数,LB 和UB 分别是变量x 的下界和上界, x0是x的初始值,OPTIONS 是控制参数。
官方文档: https://ww2.mathworks.cn/help/optim/ug/linprog.html
例子
求解线性规划问题
对应的MATLAB代码为
1 | c=[2;3;-5]; |
其中,c为目标函数的参数矩阵,a为约束条件矩阵,其中a必须是转化为MATLAB形式的线性规划问题的参数矩阵,即$Ax\le b$
aeq和beq为等式约束条件,形如$Aeq \cdot b = beq$
最后的zeros(3,1)
为下界,在这里的意思是三个变量最小值为0
1 | c=[2;3;1]; |
一样的方法,如果缺少一个变量对应的参数就是0,这里没有等式约束所以aeq,beq为0
MATLAB 中的整数规划
许多问题要求解必须为整数,在最新的matlab中应该使用intlinprog
来计算。对应文档为: https://ww2.mathworks.cn/help/optim/ug/intlinprog.html
intlinprog
函数的签名如下
1 | x = intlinprog(c,intcon,A,b,Aeq,beq,lb,ub) |
可以看到,和linprog
相比,该函数多出了intcon
参数, 该参数的作用是高速MATLAB哪些变量取值必须是整数
例子
对应的MATLAB代码
1 | c = [8;1]; |
其中intcon = 2
代表第二个x只能取整数,如果有多个变量就使用intcon=[]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RainChan的小博客!
评论