实验9非线性规划化工系分0毕啸天2010011811【实验目的】1.掌握用MATLAB优化工具箱和LINGO解非线性规划的方法;2.练习建立实际问题的非线性规划模型。【实验内容】题目4某公司将3种不同含硫量的液体原料(为分别记为甲、乙、丙)混合生产两种产品(分别记为A,B)。按照生产工艺的要求,原料甲、乙必须首先倒入混合池中混合,混合后的液体再分别与原料丙混合生产A,B。已知原料甲、乙、丙的含硫量分别是3%,1%,2%,进货价格分别为6千元/t,16千元/t,10千元/t;产品A,B的含硫量分别不能超过2.5%,1.5%,售价分别为9千元/t,15千元/t。根据市场信息,原料甲、乙、丙的供应量都不能超过500t;产品A,B的最大市场需求量分别为100t,200t。(1)应如何安排生产?(2)如果产品A的最大市场需求量增长为600t,应如何安排生产?(3)如果乙的进化价格下降为13千元/t,应如何安排生产?分别对(1)、(2)两种情况进行讨论。4.1模型分析这是一个规划问题。首先按题目要求写出决策变量、目标函数、约束条件。4.1.1决策变量决策变量是各原料、混合液体的用量。设公司取甲原料(量为a)、乙原料(量为b)用于生产混合液体。将混合液体(量为c)、丙原料(量为e)用于生产A。将混合液体(量为d)、丙原料(量为f)用于生产B。4.1.2目标函数目标函数是公司生产的总利润,记为z。公司成本x为原料的价格之和,x=6a+16b+10e+f;公司销售额y为AB产品价格之和,y=9c+e+15d+f;故总利润z=y−x=−6a−16b+9c+15d−e+5f;可以看出此题中目标函数应是一个线性函数。由于MATLAB求解规划问题时需要化为最小值求解,最终确定目标函数的形式:f=−z=6a+16b−9c−15d+e−5f;4.1.3约束条件(1)首先由原料供应量的限制,各原料供应不能超过500t。故有500500500cba;(2)再由A,B的最大市场需求量分别为100t,200t。故有200100fdec;(3)含硫量要求:甲乙混合物的含硫量为baba01.003.0。A由混合物与丙混合,故可由AB中的含硫量得到约束条件015.002.001.003.0025.002.001.003.0fdfdbabaececbaba;(4)由投入产出总量守恒a+b=c+d;(5)另有非负限制,即a,b,c,d,e,f≥0。4.2各题解法4.2.1第一题解首先写出目标函数functionz=P2204z(x)z=6*x(1)+16*x(2)-9*x(3)-15*x(4)+x(5)-5*x(6);end再写出c向量的约束条件function[c1,c2]=P2204c(x)c1=[x(1)-500;x(2)-500;x(3)-500;x(3)+x(5)-100;x(4)+x(6)-200;(0.03*x(1)+0.01*x(2))*x(3)/(x(1)+x(2))+0.02*x(5)-0.025*(x(3)+x(5));(0.03*x(1)+0.01*x(2))*x(4)/(x(1)+x(2))+0.02*x(6)-0.015*(x(4)+x(6))];c2=x(1)+x(2)-x(3)-x(4);endx0=[100,100,100,100,100,100]';v1=[0,0,0,0,0,0];opt=optimset('largescale','off','MaxFun',20000);[x,fv,ef,out,lag]=fmincon(@P2204z,x0,[],[],[],[],v1,[],@P2204c,opt)输出结果如下:Activeinequalities(towithinoptions.TolCon=1e-006):lowerupperineqlinineqnonlin153657x=-6.7289e-016100-1.1215e-015100-6.7289e-015100fv=-400ef=4out=iterations:9funcCount:64lssteplength:1stepsize:2.0405e-006algorithm:[1x44char]firstorderopt:6.948e-006constrviolation:1.158e-008message:[1x766char]lag=lower:[6x1double]upper:[6x1double]eqlin:[0x1double]eqnonlin:16ineqlin:[0x1double]ineqnonlin:[7x1double]可以看出,公司最优进货应为甲0t,乙100t,丙100t,全部用于生产200t产品B,可获利400千元,也即40万元。4.2.2第二题解当A的最大市场需求量增长为600t时,可改变约束条件中相应的量。但是该函数对初值十分敏感,用上题中的初值无法得出答案。不断尝试变换初值后,当设置x0=[300,0,300,0,200,0]'后,可以得到函数的最优化解。给出输出结果如下:Activeinequalities(towithinoptions.TolCon=1e-006):lowerupperineqlinineqnonlin244667x=3009.6731e-02230003005.0593e-021fv=-600ef=1out=iterations:6funcCount:42lssteplength:1stepsize:2.7174e-012algorithm:[1x44char]firstorderopt:6.3949e-012constrviolation:1.7053e-013message:[1x787char]lag=lower:[6x1double]upper:[6x1double]eqlin:[0x1double]eqnonlin:6ineqlin:[0x1double]ineqnonlin:[7x1double]可以看出,公司最优进货应为甲300t,乙0t,丙300t,全部用于生产600t产品A,可获利60万元。4.2.3第三题解乙的进货价格变为13千元/t,最大市场需求量仍为100t,则利润函数变化为z=6∗x(1)+13∗x(2)−9∗x(3)−15∗x(4)+x(5)−5∗x(6)。4.2.3.1A的最大市场需求量为100t改动程序后输出结果如下:Activeinequalities(towithinoptions.TolCon=1e-006):lowerupperineqlinineqnonlin355667x=50150-2.36e-01620000fv=-750ef=4out=iterations:9funcCount:63lssteplength:1stepsize:6.2424e-007algorithm:[1x44char]firstorderopt:2.4805e-006constrviolation:2.4031e-007message:[1x766char]lag=lower:[6x1double]upper:[6x1double]eqlin:[0x1double]eqnonlin:11.25ineqlin:[0x1double]ineqnonlin:[7x1double]此结果表示,当A的最大市场需求量为100t时,公司应进货甲50t,乙150t,丙0t。将甲与乙混合后完全用于生产B产品,不加丙原料直接成品。最大利润为75万元。4.2.3.2A的最大市场需求量为600t改动程序数值后,如设定初值为x0=[000000]',输出结果如下:Activeinequalities(towithinoptions.TolCon=1e-006):lowerupperineqlinineqnonlin355667x=501505.3864e-016200-1.2119e-0150fv=-750ef=4out=iterations:16funcCount:125lssteplength:1stepsize:1.6762e-006algorithm:[1x44char]firstorderopt:8.6302e-006constrviolation:7.872e-010message:[1x766char]lag=lower:[6x1double]upper:[6x1double]eqlin:[0x1double]eqnonlin:11.25ineqlin:[0x1double]ineqnonlin:[7x1double]此结果表明,此时公司应当进货甲50t,乙150t,丙0t,将甲乙混合全部用于生产200tA。可获最大利润75万元。【本题小结】上题的计算、调试过程中,我发现非线性规划的结果对初值十分敏感,改变初值设定,可能给出各种不同的结果。此题中约束条件比较繁杂,不太容易直观地判断出某一个变量对整体的影响。但是各小题做出的结果经常会出现将原料全部用于生产需求量较高的产品的情况。可以大致分析出,生产者应该针对市场需求来确定生产方案。如B的需求量高时,最优解应该是全部生产B,而A的需求量升高到600t时,就应该完全投入A的生产中。题目7美国某三种股票(A,B,C)12年(1943-1954年)的价格(已经包括了分红在内)每年的增长情况如下表所示(表中还给出了相应年份的500种股票的价格指数在增长情况)。例如,表中第一个数据1.300的含义是股票A在1943年的年末价值是其年初价值的1.300倍,即收益为30%,其余数据的含义依此类推。假设你在1955年时有一笔资金准备投资这三种股票,并期望年收益率至少达到15%,那么你应当如何投资?此外,考虑一下问题:(1)当期望的年收益率在10%~100%变化时,投资组合和相应的风险如何变化?(2)假设除了上述三种股票外,投资人还有一种无风险的投资方式,如购买国库券。假设国库券的年收益率为5%,如何考虑该投资问题?(3)假设你手上目前握有的股票比例为:股票A占50%,B占35%,C占15%。这个比例与你得到的最优解可能有所不同,但实际股票市场上每次股票买卖通常总有交易费,例如按交易额的1%收取交易费,这是你是否仍需要对手上的股票进行买卖(换手),以便满足“最优解”的要求?年份股票A股票B股票C股票指数19431.3001.2251.1491.25899719441.1031.2901.2601.19752619451.2161.2161.4191.36436119460.9540.7280.9220.91928719470.9291.1441.1691.05708019481.0561.1070.9651.05501219491.0381.3211.1331.18792519501.0891.3051.7321.31713019511.0901.1951.0211.24016419521.0831.3901.1311.18367519531.0350.9281.0060.99010819541.1761.7151.9081.5262367.1模型分析题目已经给出12年以来ABC三支股票的走势,可以利用这三股数据求出ABC三支股票的平均年收益率以及标准差。设三支股票的平均年收益率为向量E,标准差为向量sigma,相关系数为向量corr。按要求写出决策变量、目标函数、约束条件。7.1.1决策变量决策变量是向各股票的投资资金数。假设手头有1单位的资金,向ABC股票分别投资a,b,c单位资金。则abc为决策变量。7.1.2目标函数由于收益率已经确定为15%,故要做到风险最小。目标函数为风险risk=D[aE(1)+bE(2)+cE(3)]=a2DE(1)+b2DE(2)+c2DE(3)+2ab*cov(E(1),E(2))+2bc*cov(E(2),E(3))+2ac*cov(E(1),E(2))]