线性规划matlab及LinGo

发布于:2022-12-19 ⋅ 阅读:(423) ⋅ 点赞:(0)

目录

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

本文含有隐藏内容,请 开通VIP 后查看