【线性规划】基于MATLAB数学建模的线性规划代码编写

文章讲述了如何使用MATLAB解决线性规划问题,特别是如何将最大化问题转换为最小化问题,以及如何处理不等式约束和目标函数的符号。同时提到了等式约束条件的表示方法和上下限的概念。

我是看的北海老师的视频。

首先线性规划的所有变量,函数关系全是一次的,就是没有平方,立方这种。

这题求的是最大利润之类的,先将最大利润转变为求最小,最简单的方法就是加个负号写入代码中,然后在结尾处再加一次负号负负得正抵消。因为在MATLAB中求解线性规划只能求 最小 取值,不等式约束条件也要这样处理。

-y min = -40x1-30x2

这是我们处理后的目标函数,等式右边两个系数 -40 -30将它们构成的列向量记作 f

f = [-40;-30](注意这里是分号,MATLAB中分号表换行,f是一个2x1的矩阵,也就是列向量)

不等式约束条件的系数矩阵记作a,注意这里也要转化为最小取值,所以所有的不等号都要变为小于等于<=

因此,a = 【1,1;-1,0;0,-1;240,120】(注意什么时候用逗号,什么时候用分号

将不等式约束条件的常数项矩阵,也就是式子右边的常数构成的矩阵,记作b

注意变号之后不仅a变了,b中的元素也跟着改变

b = [6;-1;-1;1200](分号

这道题没有等式约束条件和上下限,也就是没有aeq,beq,lb,vb,直接不写就行。

举一个等式约束条件的例子

等式约束条件  x1 x2的总和必须为s

写成等式就是x1+x2=s;

对应的:

aeq = 【1,1】(这里是逗号,因为这是一个式子的两个未知数的系数,如果是两个式子就应该有四个系数,两行两列

beq = 【s】。

aeq的行数等于beq的元素数,这是必须要满足的条件,你写对了肯定是满足的。

这个条件其实就相当于要满足aeq*【x1;x2】=beq,也就是将给出的等式转化为矩阵相乘的形式,因为等式成立,所以这个式子也必定成立。

上下限

就是明确告诉你x1 x2的最小取值与最大取值,但我有时搞不懂上下限和不等式约束的区别(求大侠支招),因为有时我都直接把上下限当做不等式约束条件,直接算在a里面了。

 就像这道题,我写不写lb的结果都是一样的。

最后,一定注意是求最小取值,所以原题如果给的是最大,一定要再填一次负号。不过这个到很容易检查出来,最后结果出来取值是个负数你就会发现是忘记加负号了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值