线性规划matlab及LinGo

目录

1.线性规划matlab  

2.lingo


1.线性规划matlab  

建立线性规划模型有三个步骤:
1 . 找出待定的未知变量(决策变量),并用代数符号表示它们。
2 . 找出问题中所有的限制或约束,写出未知变量的线性方程或线性不等式。
3 . 找到模型的目标或者判据,写成决策变量的线性函数,以便求出其最大值或者最 小值。
线性规划问题的一些应用
1.生产计划问题
2.运输问题
3.合理下料问题
4.投资证券组合问题
5.分派问题
6.生产工艺优化问题

基本函数形式为 linprog(c,A,b) ,它的返回值是向量 x 的值。
所有的函数调用形式:
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
fval 返回目标函数的值
A,b对应线性不等式约束
Aeq,beq对应线性等式约束
LB UB 分别是变量 x 的下界约束和上界约束
x 0 x 的初始值
OPTIONS 是控制参数

 

c=[2;3;-5];
a=[-2,5,-1;1,3,1]; b=[-10;12];
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1))
value=c'*x

 

C= [6 3 4];%目标函数的系数
A= [0 1 0];  %不等式左边x前的系数构成的矩阵
b= [50];%不等式右边的值 
Aeq= [1 1 1]; %等式左边x前的系数构成的矩阵
beq= [120]; %等式右边的值
LB= [30; 0;20]; ;%x1,x2,x3的下界向量
UB= []; 
[x,fval]= linprog(C,A,b,Aeq,beq,LB,UB)

c=[-72 -64];
A=[1 1;12 8;3 0];
b=[50;480;100];
aeq=[];
beq=[];
lb=zeros(2,1);
ub=[];
[x,fval]=linprog(c,A,b,aeq,beq,lb,ub)
fval=-fval%求最大值,取反
clear
C= [160 130 220 170 140 130 190 150 190 200 230];
A= [1 0 0 0 1 0 0 0 1 0 0 ;
 0 1 0 0 0 1 0 0 0 1 0 ;
 0 0 1 0 0 0 1 0 0 0 1 ;
 0 0 0 1 0 0 0 1 0 0 0;
 -1 0 0 0 -1 0 0 0 -1 0 0;
 0 -1 0 0 0 -1 0 0 0 -1 0 ;
 0 0 -1 0 0 0 -1 0 0 0 -1;
 0 0 0 -1 0 0 0 -1 0 0 0];
 b= [80;140;30;50;-30;-70;-10;-10];
 Aeq= [1 1 1 1 0 0 0 0 0 0 0 ; 0 0 0 0 1 1 1 1 0 0 0; 0 0 0 0 0 0 0 0 1 1 1];
beq= [50;60;50];
LB= zeros(11,1);
UB= [];
[x,fval]= linprog(C,A,b,Aeq,beq,LB,UB)

 

 

clc,clear
a=0;
hold on
while a<0.05
 c=[-0.05,-0.27,-0.19,-0.185,-0.185];
 A=[zeros(4,1),diag([0.025,0.015,0.055,0.026])];
 b=a*ones(4,1);
 Aeq=[1,1.01,1.02,1.045,1.065];
 beq=1;
 LB=zeros(5,1);
 [x,Q]=linprog(c,A,b,Aeq,beq,LB)
 Q=-Q;
 plot(a,Q,'*r');
 a=a+0.001;
end
xlabel('a'),ylabel('Q')

2.lingo(对于规划类问题,作用很强大)

线性规划

model:
max=2*x11+3*x12+2*x21+5*x22+5*y11+6*y12+5*y21+7*y22;
11+x21<=900;
x12+x22<=7500;
y11+y21<=12000;
y12+y22<=6000;
1.5*x11+1.5*x12<=12000;
2*y11+2*y12<=16000;
x21+x22<=8000;
2*y21+2*y22<=22000;
3*x11+3*x12+2*y11+2*y12<=30000;
2.5*x21+2.5*x22+1.5*y21+1.5*y22<=40000;
end

整数规划

LinGo整数变量输入
@BIN()
@GIN()

 

model:
min=200*x1+200*x2+200*x3+200*x4+200*x5+200*x6+200*x7;
x2+x3+x4+x5+x6>=12;
x3+x4+x5+x6+x7>=15;
x1+x4+x5+x6+x7>=12;
x1+x2+x5+x6+x7>=14;
x1+x2+x3+x6+x7>=16;
x1+x2+x3+x4+x7>=18;
x1+x2+x3+X4+x5>=19;
@gin (x1) ;@gin (x2) ;@gin(x3) ; @gin (x4) ;@gin (x5);@gin (x6);@gin (x7);
end

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
线性规划是指目标函数和约束条件都包含非线性项的最优化问题。在解决非线性规划问题时,可以使用多种工具和软件进行求解,其中比较常用的有LINGOMATLABLINGO是一种用于线性和非线性优化问题求解的商业软件。它具有直观的用户界面,能够处理包括非线性约束和非线性目标函数在内的各种问题。LINGO通过提供一套强大的求解算法,包括全局优化、混合整数规划和二次规划等,能够有效地求解各类复杂的非线性规划问题。LINGO还提供了可视化工具,可以方便地分析和展示优化结果,使用户能够更好地理解和解释求解过程。 MATLAB是一种强大的数值计算和编程平台,也可以用于求解非线性规划问题。MATLAB具有丰富的优化函数库,其中包括专门用于非线性规划的函数。用户可以通过调用这些函数来定义目标函数和约束条件,并利用MATLAB提供的求解算法,比如内点法、序列二次规划法等,来寻找最优解。此外,MATLAB还提供了丰富的数据可视化和分析工具,可以帮助用户更好地理解和解释求解结果。 无论是LINGO还是MATLAB,它们都具有各自独特的优点和适用场景。对于不同的非线性规划问题,可以根据问题的特点和需求选择合适的软件进行求解。同时,了解这两种软件的使用方法和特点,对于解决非线性规划问题具有重要的参考价值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ADoubleLiu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值