您好,欢迎访问三七文档
Lingo软件实验报告一、实验内容:1)用lingo软件解决线性规划问题;2)熟悉lingo软件的相关操作。3)对线性规划问题建立目标函数,罗列对应的表达式约束条件,并且对各变量设定实际的非负约束,考虑到lingo软件能方便地输入数据,并且有内置建模语言,提供内部处理函数,能很方便地处理一系列约束条件解出目标函数的最值,所以采用lingo软件解决线性规划问题。4)对目标规划问题进行多目标处理,添加正负偏差变量罗列对应的表达式约束条件,并且对欲达到目标顺序添加优先等级,建立目标函数,利用lingo软件能能很方便地处理一系列约束条件解出目标函数的最值,采用lingo软件解决线性规划问题。二、实验设备:计算机三、使用软件:lingo软件四、软件特点与优势:可以简单地表示模型,能方便地输入数据和选择输出。五、举例计算:1,线性规划A:营养套餐问题:根据生物营养学理论,要维持人体正常的生理健康需求,一个成年人每天需要从食物中获取3000cal热量,55g蛋白质和800mg钙。假定市场上可供选择的食品有猪肉、鸡蛋、大米和白菜,这些食品每千克所含热量和营养成分,以及市场价格见下表。问如何选购才能满足营养的前提下,使购买食品的总费用最小?序号食品名称热量(cal)蛋白质(g)钙(mg)价格元/kg1猪肉100050400202鸡蛋8006020083大米9002030044白菜200105002解:为了建立该问题的数学模型,假设xj(j=1,2,3,4)分别为猪肉、鸡蛋、大米和白菜每天的购买量,则目标函数为Minz=20x1+8x2+4x3+2x4表示在满足营养要求的系列约束条件下,确定各种食物的购买量,使每天购买食物的总费用最小。其约束条件是热量需求:1000x1+800x2+900x3+200x4=3000蛋白质需求:50x1+60x2+20x3+10x4=55钙需求:400x1+200x2+300x3+500x4=800决策变量的非负约束:xj=0(j=1,2,3,4)因此,营养配餐问题的数学模型为Minz=20x1+8x2+4x3+2x41000x1+800x2+900x3+200x4=300050x1+60x2+20x3+10x4=55400x1+200x2+300x3+500x4=800xj=0(j=1,2,3,4)B:lingo代码:model:min=20*x1+8*x2+4*x3+2*x4;1000*x1+800*x2+900*x3+200*x4=3000;50*x1+60*x2+20*x3+10*x4=55;400*x1+200*x2+300*x3+500*x4=800;ENDC:结果截屏:D:运行结果分析:由运行结构可知:该线性规划的最值为13.33333,即在变量为非负的情况下,只买3.33kg的大米可以满足目标函数的要求。2,目标规划A:设有一纺织厂可生产衣料和窗帘布共两种产品。该厂两班生产,每周的生产时间为80h,无论生产那种产品,该厂每小时的产量都是1km。根据市场预测,每周窗帘布的销售量为70km,而衣料的销售量为45km。工厂有纺纱9000kg,生产1km窗帘布需要纺纱800kg,生产1km衣料需要纺纱500kg。假定窗帘布和衣料的单位利润分别为2.5千元/km和1.5千元/km,上级主管部门对该厂提出了以下4个顺序目标:(1)尽可能避免开工不足;(2)尽可能限制每周加班时间不超过10h;(3)尽可能满足市场需求;(4)尽可能减少加班时间。目标的惩罚因子各为:5、8、9、2.问该厂应如何安排生产才能使这些目标依序实现?解:建立该问题的数学模型,设该厂每周生产衣料和窗帘各为x1,x2km,即为决策变量。此外,引进正负偏差变量d,d_.则:生产工时约束:x1+x2+d1_-d1=80加班时间约束:d1+d2_-d2=10窗帘布销售量约束:x1+d3_-d3=70衣料销售量约束:x2+d4_-d4=454个有序目标分别为:P1:minz1=d1_P2:minz2=d2P3:minz3=5d3_+3d4_P4:minz4=d1综上,该问题的目标规划模型为:minz=5d1_+8d5+9(5d3_+3d4_)+2d1500x1+800x2=9000x1+x2+d1_-d1=80d1+d2_-d2=100x1+d3_-d3=70x2+d4_-d4=45xj=0,di_,di=0B:lingo编程:model:min=5*d1_+8*d2+45*d3_+27*d4_+2*d1;500*x1+800*x2=9000;x1+x2+d1_-d1=80;d1+d2_-d2=100;x1+d3_-d3=70;x2+d4_-d4=45;EndC:结果截图:D:运行结果分析:由运行结果可知:在惩罚因子如给出的条件下,目标函数的最值为3865.即只安排生产衣料18km,此时,开工少62h,比市场需求量少生产52km,减少加班时间45h。六、实验总结:在使用lingo软件做实验的时候,我们小组选择了一道关于线性规划的营养套餐问题和一道关于目标规划的工业生产问题。对于实际问题的要求,分别列出约束条件,此外对于目标规划问题列写有正负偏量的有权式,建立相应的数学模型,再根据lingo软件的语言要求,编写lingo程序,上机运行,得到运行结果。由小组明确分工合作,一步步得以实现。之后再对运行结果进行实际的分析和讨论,检验结果的实际意义,从而了解lingo软件的方便性和局限性,以便对该软件有一定深入的理解,避免只依赖其运行结果而忽略掉其实际的可行度与否。如上述线性规划选例,对所列模型,在满足目标函数的条件下,所得结果明显不符合实际情况,营养套餐应该实现食物的多样化再实现费用的最小化。因此,再建立模型时,应全面考虑所有的约束条件范围,从而得到合理的最优解。用lingo软件处理目标规划问题的时候,特别地,要处理多目标,即对于含有权系数的目标函数,则需要从高到低一步步求不同优先级的最值,先满足高一级的目标要求再考虑低一级的目标,使不同程度重要的目标一一得以实现,即利润大的先满足需求,从而得到最理想的最值。在对选例的处理中,我们也遇到了一些操作问题,得到了一些实用的软件使用经验,例如:在对实例的约束条件进行处理的时候,应该注意对所设变量范围的实际约束;在对lingo编程的时候,应该注意输入的语法。如乘号(*)不能省略;model后有“:”等等。总之,lingo软件在求解数学规划问题方面速度很快、易于方便输入、求解和分析。如果我们可以很熟悉地运用该软件,对于很多关于规划的问题便可以很方便的得以解决,联系实际因素,从而得到具有实际意义的结果。MATLAB软件实验报告一、实验内容:1)用MATLAB软件解决线性规划问题;2)熟悉MATLAB软件的相关操作。3)对线性规划、目标规划、整数规划,0-1规划问题建立目标函数,罗列对应的表达式约束条件,并且对各变量设定实际的变量约束,考虑到MATLAB有超级强大的矩阵计算能力,能很方便地处理一系列约束条件解出目标函数的最值,所以采用MATLAB软件解决线性规划问题。4)对目标规划问题进行多目标处理,添加正负偏差变量罗列对应的表达式约束条件,并且对欲达到目标顺序添加优先等级,建立目标函数,列写对应约束条件的矩阵形式,利用MATLAB解决目标规划问题。二、实验设备:计算机三、使用软件:MATLAB软件四、软件特点与优势:MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。语言简洁紧凑,使用方便灵活,库函数及其丰富。运算符丰富,语法限制不严格,程序设计自由度大,程序可移植性好。可以简单地表示模型,能方便地输入数据和选择输出。五、举例计算:3、线性规划A:现在要做100套钢架,每套用长为2.9米,2.1米和1.5米的元钢各一根。已知原材料长7.4米,问如何下材料使原材料最省。解:最简单的做法是:在每一根原材料上截取2.9m,2.1m和1.5m的元钢各一根组成一套,每根原材料剩下料头0.9m。为了做100套钢架,需要原材料100根,有90m料头,若改为用套裁,这样可以节约原材料。下面几种套裁方案,都可以考虑采用。如表:为了得到100套钢架,需要混合使用各种下料方案。设按(一)方案下料的原材料根数为想x1,(二)方案为x2,(三)方案为x3,(四)方案为x4,(五)方案为x5.根据方案可列出以下数学模型:Minz=0x1+0.1x2+0.2x3+0.3x4+0.8x5下料根数长度方案一二三四五2.9120102.1002211.531203合计7.47.37.27.16.6料头00.10.20.30.8x1+2x2++x4=1002x3+2x4+x5=1003x1+x2+x3++3x5=100x1,x2,x3,x4,x5=0B、MATLAB编程:c=[0,0.1,0.2,0.3,0.8]aeq=[12010;00221;31203]Beq=[100100100]Lb=[0000000]Ub=[]C;结果截图:D:运行结果分析:由运行结果得到:由计算得到最优下料方案是:按Ⅰ方案下料30根;Ⅱ方案下料10根;方案下料50根。即需要90根原材料可以造100套钢架。4、目标规划A:某公司分厂用一条生产线生产两种产品A和B,每周生产线运行时间为60h,生产一台A产品需要4h,生产一台B产品需要6h。根据市场预测,A和B产品平均销售量分别为每周9台、8台,它们销售利润分别为12万、18万元。在指定生产计划时,经理考虑下述4项目标:首先,产量不能超过市场预测的销售量;其次,工人加班时间最少;第三,希望总利润最大;最后,要尽可能满足市场需求,当不能满足时,市场认为B产品的重要性啊A产品的2倍。单目标线性规划模型如下:引入正负偏差变量d+-d-、优先因子P1和权系数Wj,建立目标规划的目标函数如下:P=[1000,100,10,1]B:MATLAB程序C=[0,0,1,1000,2,1000,0,100,10,0];A=[];b=[];Aeq=[1,0,1,-1,0,0,0,0,0,0;12121212121846609..8,0Maxzxxxxxstxxx11111223344212221233124412298..46601218252,,,0,1,2,3,4iiMinfPddPdPdPddxddxddstxxddxxddxxddi0,1,0,0,1,-1,0,0,0,0;4,6,0,0,0,0,1,-1,0,0;12,18,0,0,0,0,0,0,1,-1];beq=[9;8;60;252];lb=zeros(1,10);ub=[];[x,fval,exitflag,output]=linprog(c,A,b,Aeq,beq,lb,ub)x=38600000720fval=726exitflag=1C;结果截图:D:运行结果分析:由运行结果得到:A产品产量每周生产3台,B产品产量每周为8太时可以得到最大利润,最大利润为726万元。5、整数规划A:有四个人,要指派他们分别完成四项工作,每人做各项工作所消耗的时间如表所示:甲乙丙丁A15192619B18231721C21221623D24181917则怎么分配使他们所用总时间最短。B:MATLAB代码:c=[15,18,21,24,19,23,22,18,26,17,16,19,19,21,23,17];a=[15,18,21,24,zeros(1,12);zeros(1,4),19,23,22,18,zeros(1,8);zeros(1,8),26,17,16,19,zeros(1,4);zeros(1,12),19,21,23,17;15,zeros(1,3),19,zeros(1,3),26,zeros(1,3),19,zeros(1,3);zeros(1,1),18,zeros(1,3),23
本文标题:运筹学实验讲解
链接地址:https://www.777doc.com/doc-1805136 .html