资源描述:
《数学实验非线性规划》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《大学数学实验》作业非线性规划班级:姓名:学号:日期:目录【实验目的】3【实验内容】3题目1(课本习题第九章第4题)3【第(1)问求解】3【第(2)问求解】7【第(3)问求解】7【拓展实验、思考、对比、分析】8【木题小结】10题目2(课本习题第九章第8题)10【模型建立】11【模型求解】14【第(1)问求解】14【第(2)问求解】20【第(3)问求解】22【拓展实验、思考、对比、分析】23【本题小结】25【实验心得、体会】25注:本实验作业脚本文件均以ex9_4_l形式命名,其中ex代表作业,9_4_1表示第九章第四小题第一个程序。自编函数均以exf9_4_l形式命名,exf代表作
2、业函数,9_4_1表示第九章第四题第一个自编函数。【实验目的】1.掌握用MATLAB优化工具箱和LINGO解非线性规划的方法;2.练习建立实际问题的非线性规划模型。【实验内容】题目1(课本习题第九章第4题)某公司将3种不同含硫量的液体原料(分别记为甲、乙、丙)混合生产两种产品(分别记为A,B)。按照生产工艺的要求,原料甲、乙必须首先倒入混合池中混合,混合后的液体再分别与原料丙混合牛产A,Bo已知原料甲、乙、丙的含硫量分别是3%,1%,2%,进货价格分别为6千元/t,16千元/t,10千元/t;产品A,B的含硫量分别不能超过2.5%,1.5%,售价分别为9千元/t,15千元/t。根据
3、市场信息,原料甲、乙、丙的供应量都不能超过500t;产品A,B的最大市场需求量分别为100t,200to(1)应如何安排生产?⑵如果产品A的最大市场需求量增长为600t,应如何安排生产?⑶如果乙的进货价格下降为13千元/t,应如何安排生产?分别对(1)、(2)两种情况进行讨论。【第(1)问求解】【模型建立】⑴模型该题为带约束非线性规划问题,其模型包含决策变量、FI标函数和约束条件。决策变量:设生产A所用的甲、乙、丙原料的量分别为xrx2/X3;生产B所用的甲、乙、丙原料的量分别为x4,x5,x6;所生产的A、B产品的量分别为x7,x8o单位均为t。口标函数:设总获利为Z,同时设销售
4、收入为习,进货费用为Z2(单位均为千元)。则总获利Z=-z2由题中条件,销售收入Z]=9x*7+15x&进货费用z2=6(xi+x4)+16(x2+x5)+10(x3+x6)故可得,总获利=-6X]—16x2—10x3—6x4—16x5—10x6+9x7+15x8即为本题的目标函数。(2)约束条件浓度约束:按照生产工艺的要求,原料甲、乙必须先混合再分别与原料丙混合生产A,B。故有X1X5=x2x4含硫量约束:要求产品A,B的含硫量分别不能超过2.5%,1.5%。故可得(3%x1+l%x2+2%x3<2.5%x7(3%x4+l%x5+2%x6<1.5%x8+x2+2x3—2.5x7<
5、0+x5+2x6-1.5x8<0原料供应约束:原料甲、乙、丙的供应量都不能超过500仁故得X]+x4<500x2+x5<500,x3+x6<500市场需求约束:产品A,B的最大市场需求量分别为100t,200t。故有x7<100x8<200A、B产量约朿:生产的A、B产品的量与所用的甲、乙、丙原料的量所满足的关系X7=X]+X2+x3x8=x4+x5+x6非负约束:XpX2,x3,X4,X5/x6,X7,X8均为非负。(3)模型整理将前面分析得到的带约束非线性规划模型化为如下标准形式:minz=f(x)s.t.c(x)=0A]Xvt其中,x=[xnx2/x3/x4/x5/
6、x6lx7lx8]将目标函数系数以及各约束条件的数值代入标准形式,可得各函数表达式及参数数值分别为f(x)=6X]+16x2+10x3+6x4+16x5+10x6—9X7—15xgc(x)=X1X5-x2x4Al=[l0010000;01001000;00100100;00000010;00000001;312000・2.50;0003120-1.5]bl=[50050050010020000]A2=[l11000・10;0001110・1]b2=[00]vl=[00000000]【模型求解及结果分析】根据已经建立好并化为标准形式的模型,利用Matlab优化工具箱对该模型进行求解。
7、对于第(1)问,编写运行代码如下:%作业题9_4目标函数M文件(含梯度以及黑塞矩阵)exf9_4_lfunction[f,g,H]=exf9_4_l(x)f=6*x(l)+16*x(2)+10*x(3)+6*x(4)+16*x(5)+10*x(6)-9*x(7)-15*x(8);%给出分析梯度ifnargout>lg=[6,16,10,6,16,10,-9,-15];encl%给出黑塞矩阵(由于木题不能使用大规模算法,因此该黑塞矩阵不会被使用)ifnargout>2H