第十章非线性规划§10—1问题提出----公交公司的营运策略一个大型的公交公司:(1)年预算2亿元;(2)营业额与全部营运车辆的总里程M成正比,总里程M与车辆数B、员工总人数W、燃油总量F的关系(统计分析而得的经验公式)是56.032.006.07.15FWBM,(其中,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问题分析与模型建立这是优化问题,优化问题的三个要素是决策变量、约束条件和目标函数。决策变量:购买车数1x;出售车数2x;新雇员工数3x;解雇员工数4x;每车年燃油量5x。约束条件:年预算约束;车数与员工数;每车的最大燃油量;非负性。目标函数:总里程M的最大化。根据题给数据,建立如下优化模型:.50),5,4,3,2,1(0,10033,12840)(3.02104.28.33.88.21..,))700(()2200()700(7.15max543215215432156.052132.04306.021xixxxxxxxxxxxxxtsxxxxxxxMi(注意到,在目标函数、约束条件的表达式中,决策变量不是以线性形式出现的)§10—3数学知识:非线性规划1.无约束优化问题)(minxfnRx,其中向量x的n个分量ix都是决策变量,称)(xf目标函数。用Matlab求解:先建立函数文件mbhs.m,内容是)(xf的表达式;再回到Matlab命令区,输入决策变量初值数据x0,执行命令[x,fmin]=fminunc(@mbhs,x0)如:)32(min22212xxRx的最优解是.)0,0(Tx用Matlab计算,函数文件为functionf=mbhs(x)f=2*x(1)^2+3*x(2)^2;再输入初值x0=[1;1];并执行上述命令,结果输出为x=1.0e-008*0.12530.3817fmin=4.6849e-0172.约束优化问题.),,...,2,1(,0)(),,...,2,1(,0)(..)(minUxLmixhpixgtsxfiiRxn其中:向量x的n个分量ix都是决策变量,称)(xf目标函数、)(xgi等式约束函数、)(xhi不等式约束函数、L下界、U上界。用Matlab求解:先把模型写成适用于Matlab的标准形式.,0)(,0)(,,..)(minUxLxhxgbeqxAeqbAxtsxfnRx约束条件中:把线性的式子提炼出来得前两个式子;后三个式子都是列向量。(如:)()()([],[],,,11262xgxgxgbeqAeqbAp)再建立两个函数文件:目标函数mbhs.m;约束函数yshs.m再回到Matlab命令区,输入各项数据及决策变量初值数据x0,执行命令[x,fmin]=fmincon(@mbhs,x0,A,b,Aeq,beq,L,U,@yshs)例:单位球1222zyx内,曲面xyyxz1.05.022的上方,平面008.0zyx之中(不是上面),满足上述三个条件的区域记为D,求函数)1cos()sin(2zezyxexyxyz在D上的最大值、最大值点。解:(1)目标函数mbhs.mfunctionf=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.mfunction[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.23670.2368-0.3935fmin=-1.3732答:最大值点(0.2367,0.2368,-0.3935),最大值1.3732§10—4模型求解.50),5,4,3,2,1(0,10033,12840)(3.02104.28.33.88.21..,))700(()2200()700(7.15max543215215432156.052132.04306.021xixxxxxxxxxxxxxtsxxxxxxxMi(1)目标函数mbhs.mfunctionf=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.mfunction[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.0000615.7895050.0000fmin=-1.0355e+005生产与销售计划问题某公司用两种原油(A和B)混合加工成两种汽油(甲和乙)。甲、乙两种汽油含原油A的最低比例分别为50%和60%,每吨售价分别为4800元和5600元。该公司现有原油A和B的库存量分别为500吨和1000吨,还可以从市场上买到不超过1500吨的原油A.原油A的市场价为:购买量不超过500吨时的单价为10000元/吨;购买量超过500吨但不超过1000吨时,超过500吨的部分单价为8000元/吨;购买量超过1000吨时,超过1000吨的部分单价为6000元/吨。该公司应怎样安排原油的采购和加工?问题分析安排原油采购、加工的目的是:利润最大题中给出的是:甲乙两种汽油的售价,原油A的进价.利润==“销售汽油的收入”—“购进原油A的支出”难点:原油A的采购价与购买量的关系复杂,是分段函数关系。能否用、如何用线性规划、整数规划模型加以处理?模型建立以下约定:货币单位是“千元”;价格单位是“千元/吨”。设原油A的购买量为x,采购支出记为)(xc,则有如下的分段线性函数:.15001000,1000500,5000,63000,81000,10)(xxxxxxxc设原油A用于生产甲、乙两种汽油的数量分别为21,xx,原油B用于生产甲、乙两种汽油的数量分别为43,xx,则总的销售收入为)(6.5)(8.44231xxxx,优化目标函数(利润)为)()(6.5)(8.4max4231xcxxxxz.约束条件:原油A的数量xxx50021;原油B的数量100043xx;原油A的采购量1500x;原油A在汽油甲中的比例%50311xxx;原油A在汽油乙中的比例%60422xxx;非负性0,,,,4321xxxxx.模型求解1.目标函数中,分段函数)(xc必须处理掉:记765xxxx,其中765,,xxx分别是以价格10、8、6购进的原油A的量,则模型中的目标函数变成线性函数)6810()(6.5)(8.4max7654231xxxxxxxz.2.那么,765,,xxx应该满足什么样的约束条件呢?显然有500,,0765xxx;只有以价格10购买了500吨之后,才有资格以价格8购买,即只有当5005x时才有06x,该约束条件可用如下式子代表0)500(65xx;同理,只有以价格8购买了500吨之后,才有资格以价格6购买,得0)500(76xx.3.得到如下“非线性规划”模型.500,,0,0,,,0)500(0)500(03201000500..)6810()(6.5)(8.4max76543217665423143765217654231xxxxxxxxxxxxxxxxxxxxxxtsxxxxxxxz用LINGO软件编程计算,得最优解.5000max)0,500,500,1000,0,1500,0(),,,,,,(7654321zxxxxxxx答:采购1000吨原油A,不生产汽油甲,用全部的1500吨原油A、1000吨原油B投入生产汽油乙;此时,利润达到最大值5000千元.