目录
一、本次所需解的问题
二、matlab解题
1)语法
2)数学思维
3)matlab解题
运行结果:
三、lingo解题
lingo解题如下:
运行结果:
最后:
一、本次所需解的问题
需解出下面该线性规划问题对应的最大值z以及x1,x2,x3
二、matlab解题
1)语法
我们使用linprog函数,这是专门解决线性规划问题的,我们来看一看该函数的语法:
具体含义是什么呢?似乎你还看不懂这个,因此我用中文来说一下我们主要用到的部分:
x = linprog(f,A,b) 求解 min f'*x 约束条件为 A*x ≤ b.
x = linprog(f,A,b,Aeq,beq) 求解上述问题,但是增加了约束条件,即将: Aeq*x = beq. 如果没有等式存在可以用:A = [] and b = []
x = linprog(f,A,b,Aeq,beq,lb,ub) 定义变量x的下界lb和上街ub,使得x始终在该范围内,即lb ≤ x ≤ ub。若没有约束条件,则设: Aeq = [] and beq = []
2)数学思维
我们的数学公式拿下来看看,看着我们对比着写代码:
目标函数:
max z=2x1+3x2-5x3
约束条件:
x1+x2+x3=7;
2x1-5x2+x3>=10;
x1+3x2+x3<=12
x1,x2,x3>0
至于从数学角度来看,emmmm,我们还是直接上代码吧!
3)matlab解题
强调: 在这里我需要说明的是,求解max=cx在matlab中就是min=-cx,记住有个负号!
因此matlab代码:
%打卡第一天
clear all
clc
c=[2 3 -5];%用系数确定目标函数
a=[-2,5,-1;1,3,1]; %第二个函数全部取反保证方向一致
b=[-10;12];%右边的值10编程-10
aeq=[1,1,1];%等式系数单独拎出来
beq=7;%等式只有一个,结果为7
lb=[0;0;0];%没有下限
ub=[inf;inf;inf];%没有上限
[x,fval]=linprog(-c,a,b,aeq,beq,lb,ub);
x
best=c*x%计算最优值
运行结果:
因此最优解x1 =6.4286,x2=0.5714,x3=0,最优值为14.5714
三、lingo解题
强调: 在这里我需要说明的是,求解max z=cx在lingo中就是min=cx,且lingo默认变量>=0,每次输入一段代码结束后需加“;”分号才可以,不然会报错!!!
lingo解题如下:
max=2*x1+3*x2-5*x3;
x1+x2+x3=7;
2*x1-5*x2+x3>=10;
x1+3*x2+x3<=12;
运行结果:
Objective value(最优值): 14.57143
最优解x1 =6.428571,x2=0.5714286,x3=0
row:为具体解题过程,我们其实并不需要看这些,只需要知道最优解,最优值是什么就好!
最后:
本次学习到此结束,如有不足之处,希望大家多多指点,感谢!!!