目录
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