1.线性规划(LP)
在生产实践中,如何利用现有资源安排生产,以获取最大经济效益,需要我们进行数学规划。而线性规划(Linear Programming)是数学规划的一个重要分支。
如果目标函数和约束条件均为线性函数,这种问题归为线性规划问题。
看一个例子。
中央电视台为改版后的《非常6+1》栏目播放两套宣传片。其中,宣传片甲播映时间为3.5 min,广告时间为30 s,收视观众为60万人;宣传片乙播映时间为1 min,广告时间为1 min,收视观众为20万人。广告公司规定每周至少有3.5 min广告,而电视台每周只能为该栏目宣传片提供不多于16 min的节目时间。电视台每周应播映两套宣传片各多少次,才能使得收视观众最多?
2.使用matlab进行线性规划
[x,fval] = linprog(c,A,b,Aeq,beq,lb,ub,X0,options)
c、A、b:分别对应上面标准型的c、A、b矩阵
fval:目标函数的返回值
Aeq、beq:对应等式约束Ax=b,Aeq对应A,beq对应b
LB、UB:变量x的下界和上界
X0:x的初始值
OPTIONS:控制参数
例1
c=[2;3;1];
a=[1,4,2;3,2,0];
b=[8;6];
% zeros(3,1)为3x1的零矩阵,表示[x1,x2,x3]T的下界
[x,y] = linprog(c,-a,-b,[],[],zeros(3,1))
例2
转换:max z=170.8582x1 - 17.7254x2 + 41.2582x3 + 2.2182x4 + 131.8182x5 - 500000x6。
c = [170.8582 -17.7254 41.2582 2.2182 131.8182 -500000];
A = [1 -0.17037 -0.5324 0 1 0;0 0.17037 0.5324 0 0 0;1 0.32 1 0 0 0;0 1 0 0 0 0;0 0 1 1 0 0;0 0 0 -1 -1 0];
b = [0;888115;166805;521265.625;683400; -660000];
Aeq =[0 0 0 0 0 1];
beq = 1;
lb=[0;0;0;0;0;0];
% 因为要求z的最大值,所以这里用-c,先求-z最小值
[x, fval, exitflag, output, lambda] = linprog(-c,A,b,Aeq,beq,lb,[]);
max_value = -fval
3.非线性规划(NP)
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
看一个例子。
投资决策问题:某企业有n个项目可供选择投资,并且至少要对其中一个项目投资。已知该企业拥有总资金A元,投资于第i(i=1,2,… ,n)个项目需花资金a;元,并预计可收益b;元。试选择最佳投资方案。
设投资决策变量为
最佳投资方案应该是投资额最小而总收益最大的方案。数学模型如下:
4.使用matlab进行非线性规划
X = FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)
FUN:对应目标函数
X0:x的初始值
A、B:对应线性约束Ax<=B
Aeq、Beq:对应线性约束Aeq·x=Beq
LB、UB:变量x的下界和上界
NONLCON:对应C(x),Ceq(x)
OPTIONS:定义优化参数
例1
例2