第十章 非线性规划
§10—1 问题提出----公交公司的营运策略一个大型的公交公司:
(1)年预算2亿元;
(2)营业额与全部营运车辆的总里程M成正比,总里程M与车辆数B、员工总人数W、燃油总量F的关系(统计分析而得的经验公式)是
,
(其中,M单位千公里;F单位立方米);
(3)初始:B=700,W=2200 ;
(4)各项费用:购新车21万元每辆,卖车得7.5万元每辆,维护费0.8万元每辆,雇佣新员工0.8万元每个,解雇旧员工0.6万元每个,年薪3万元每个员工,油价0.3万元每立方米;
(5)每辆车:至少配备3个员工,至多燃50立方米油。
请提供营运策略,使营业额最大。
§10—2 问题分析与模型建立
这是优化问题,优化问题的三个要素是决策变量、约束条件和目标函数。
决策变量:购买车数;出售车数;新雇员工数;解雇员工数;每车年燃油量 。
约束条件:年预算约束;车数与员工数;每车的最大燃油量;非负性。
目标函数:总里程M的最大化。
根据题给数据,建立如下优化模型:

(注意到,在目标函数、约束条件的表达式中,决策变量不是以线性形式出现的)
§10—3 数学知识:非线性规划
1.无约束优化问题
,其中向量的n个分量都是决策变量,称目标函数。
用Matlab求解:先建立函数文件mbhs.m,内容是的表达式;再回到Matlab命令区,输入决策变量初值数据x0,执行命令
[x,fmin]=fminunc(@mbhs,x0)
如:的最优解是
用Matlab计算,函数文件为
function f=mbhs(x)
f=2*x(1)^2+3*x(2)^2;
再输入初值 x0=[1;1]; 并执行上述命令,结果输出为
x =
1.0e-008 *
0.1253
0.3817
fmin =
4.6849e-017
2.约束优化问题

其中:向量的n个分量都是决策变量,称目标函数、等式约束函数、不等式约束函数、L下界、U上界。
用Matlab求解:先把模型写成适用于Matlab的标准形式

约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。
(如: )
再建立两个函数文件:目标函数mbhs.m;约束函数yshs.m
再回到Matlab命令区,输入各项数据及决策变量初值数据x0,执行命令
[x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs)
例:单位球内,
曲面的上方,
平面之中(不是上面),
满足上述三个条件的区域记为D,求函数

在D上的最大值、最大值点。
解:
(1)目标函数mbhs.m
function f=mbhs(x)
f=-exp(x(1)*x(2)*x(3))*sin(x(1)+x(2)-x(3))-exp(-x(1)*x(2))*cos(x(3)^2-1);
(2)约束函数yshs.m
function [g,h]=yshs(x)
g=[x(1)^2+x(2)^2+x(3)^2-1;x(1)^2+x(2)^2-0.5-0.1*x(1)*x(2)-x(3)];
h=[];
(3)数据准备
x0=[0.0;0.02;0.02];A=[];b=[];Aeq=[1,1,1];beq=0.08;
L=[-1;-1;-1];U=[1;1;1];
(4)执行命令
[x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs)
(5)结果
x = 0.2367
0.2368
-0.3935
fmin = -1.3732
答:最大值点(0.2367,0.2368,-0.3935),最大值1.3732
§10—4 模型求解

(1)目标函数mbhs.m
function f=mbhs(x)
f=-15.7*(700+x(1)-x(2))^0.06*(2200+ x(3)-x(4))^0.32*((700+x(1)-x(2))*x(5))^0.56;
(2)约束函数yshs.m
function [g,h]=yshs(x)
g=21.8*x(1)-8.3*x(2)+3.8*x(3)-2.4*x(4)+210*x(5)+0.3*(x(1)-x(2))*x(5)-12840;
h=[];
(3)数据准备
x0=[0;0;0;0;25];A=[3,-3,-1,1,0];b=100;Aeq=[];beq=[];
L=[0;0;0;0;0];U=[Inf; Inf; Inf; Inf;50];
(4)执行命令
[x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs)
(5)结果
x =
0
-0.0000
615.7895
0
50.0000
fmin =
-1.0355e+005