基础线性规划实现(matlab,lingo)

建模学习打卡第一天补充本学习是跟随大佬@川川菜鸟 开始的!有想学习的可以关注大佬,一起学习哦!


目录

一、本次所需解的问题

 二、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:为具体解题过程,我们其实并不需要看这些,只需要知道最优解,最优值是什么就好!

最后:

本次学习到此结束,如有不足之处,希望大家多多指点,感谢!!!   

猜你喜欢

转载自blog.csdn.net/qq_25990967/article/details/121186348
今日推荐