运筹学实验讲解.docx

上传人:b****5 文档编号:6437772 上传时间:2023-01-06 格式:DOCX 页数:13 大小:261.53KB
下载 相关 举报
运筹学实验讲解.docx_第1页
第1页 / 共13页
运筹学实验讲解.docx_第2页
第2页 / 共13页
运筹学实验讲解.docx_第3页
第3页 / 共13页
运筹学实验讲解.docx_第4页
第4页 / 共13页
运筹学实验讲解.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

运筹学实验讲解.docx

《运筹学实验讲解.docx》由会员分享,可在线阅读,更多相关《运筹学实验讲解.docx(13页珍藏版)》请在冰豆网上搜索。

运筹学实验讲解.docx

运筹学实验讲解

Lingo软件实验报告

一、实验内容:

1)用lingo软件解决线性规划问题;

2)熟悉lingo软件的相关操作。

3)对线性规划问题建立目标函数,罗列对应的表达式约束条件,并且对各变量设定实际的非负约束,考虑到lingo软件能方便地输入数据,并且有内置建模语言,提供内部处理函数,能很方便地处理一系列约束条件解出目标函数的最值,所以采用lingo软件解决线性规划问题。

4)对目标规划问题进行多目标处理,添加正负偏差变量罗列对应的表达式约束条件,并且对欲达到目标顺序添加优先等级,建立目标函数,利用lingo软件能能很方便地处理一系列约束条件解出目标函数的最值,采用lingo软件解决线性规划问题。

二、实验设备:

计算机

三、使用软件:

lingo软件

四、软件特点与优势:

可以简单地表示模型,能方便地输入数据和选择输出。

五、举例计算:

1,线性规划

A:

营养套餐问题:

根据生物营养学理论,要维持人体正常的生理健康需求,一个成年人每天需要从食物中获取3000cal热量,55g蛋白质和800mg钙。

假定市场上可供选择的食品有猪肉、鸡蛋、大米和白菜,这些食品每千克所含热量和营养成分,以及市场价格见下表。

问如何选购才能满足营养的前提下,使购买食品的总费用最小?

序号

食品名称

热量(cal)

蛋白质(g)

钙(mg)

价格元/kg

1

猪肉

1000

50

400

20

2

鸡蛋

800

60

200

8

3

大米

900

20

300

4

4

白菜

200

10

500

2

解:

为了建立该问题的数学模型,假设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+2x4

1000x1+800x2+900x3+200x4>=3000

50x1+60x2+20x3+10x4>=55

400x1+200x2+300x3+500x4>=800

xj>=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;

END

C:

结果截屏:

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=45

4个有序目标分别为:

P1:

minz1=d1_

P2:

minz2=d2

P3:

minz3=5d3_+3d4_

P4:

minz4=d1

综上,该问题的目标规划模型为:

minz=5d1_+8d5+9(5d3_+3d4_)+2d1

500x1+800x2<=9000

x1+x2+d1_-d1=80

d1+d2_-d2=100

x1+d3_-d3=70

x2+d4_-d4=45

xj>=0,di_,di>=0

B:

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;

End

C:

结果截图:

D:

运行结果分析:

由运行结果可知:

在惩罚因子如给出的条件下,目标函数的最值为3865.即只安排生产衣料18km,此时,开工少62h,比市场需求量少生产52km,减少加班时间45h。

6、实验总结:

在使用lingo软件做实验的时候,我们小组选择了一道关于线性规划的营养套餐问题和一道关于目标规划的工业生产问题。

对于实际问题的要求,分别列出约束条件,此外对于目标规划问题列写有正负偏量的有权式,建立相应的数学模型,再根据lingo软件的语言要求,编写lingo程序,上机运行,得到运行结果。

由小组明确分工合作,一步步得以实现。

之后再对运行结果进行实际的分析和讨论,检验结果的实际意义,从而了解lingo软件的方便性和局限性,以便对该软件有一定深入的理解,避免只依赖其运行结果而忽略掉其实际的可行度与否。

如上述线性规划选例,对所列模型,在满足目标函数的条件下,所得结果明显不符合实际情况,营养套餐应该实现食物的多样化再实现费用的最小化。

因此,再建立模型时,应全面考虑所有的约束条件范围,从而得到合理的最优解。

用lingo软件处理目标规划问题的时候,特别地,要处理多目标,即对于含有权系数的目标函数,则需要从高到低一步步求不同优先级的最值,先满足高一级的目标要求再考虑低一级的目标,使不同程度重要的目标一一得以实现,即利润大的先满足需求,从而得到最理想的最值。

在对选例的处理中,我们也遇到了一些操作问题,得到了一些实用的软件使用经验,例如:

在对实例的约束条件进行处理的时候,应该注意对所设变量范围的实际约束;在对lingo编程的时候,应该注意输入的语法。

如乘号(*)不能省略;model后有“:

”等等。

总之,lingo软件在求解数学规划问题方面速度很快、易于方便输入、求解和分析。

如果我们可以很熟悉地运用该软件,对于很多关于规划的问题便可以很方便的得以解决,联系实际因素,从而得到具有实际意义的结果。

MATLAB软件实验报告

一、实验内容:

1)用MATLAB软件解决线性规划问题;

2)熟悉MATLAB软件的相关操作。

3)对线性规划、目标规划、整数规划,0-1规划问题建立目标函数,罗列对应的表达式约束条件,并且对各变量设定实际的变量约束,考虑到MATLAB有超级强大的矩阵计算能力,能很方便地处理一系列约束条件解出目标函数的最值,所以采用MATLAB软件解决线性规划问题。

4)对目标规划问题进行多目标处理,添加正负偏差变量罗列对应的表达式约束条件,并且对欲达到目标顺序添加优先等级,建立目标函数,列写对应约束条件的矩阵形式,利用MATLAB解决目标规划问题。

二、实验设备:

计算机

三、使用软件:

MATLAB软件

4、软件特点与优势:

MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。

语言简洁紧凑,使用方便灵活,库函数及其丰富。

运算符丰富,语法限制不严格,程序设计自由度大,程序可移植性好。

可以简单地表示模型,能方便地输入数据和选择输出。

5、举例计算:

3、线性规划

A:

现在要做100套钢架,每套用长为2.9米,2.1米和1.5米的元钢各一根。

已知原材料长7.4米,问如何下材料使原材料最省。

解:

最简单的做法是:

在每一根原材料上截取2.9m,2.1m和1.5m的元钢各一根组成一套,每根原材料剩下料头0.9m。

为了做100套钢架,需要原材料100根,有90m料头,若改为用套裁,这样可以节约原材料。

下面几种套裁方案,都可以考虑采用。

如表:

下料根数

长度

方案

2.9

1

2

0

1

0

2.1

0

0

2

2

1

1.5

3

1

2

0

3

合计

7.4

7.3

7.2

7.1

6.6

料头

0

0.1

0.2

0.3

0.8

为了得到100套钢架,需要混合使用各种下料方案。

设按

(一)方案下料的原材料根数为想x1,

(二)方案为x2,(三)方案为x3,(四)方案为x4,(五)方案为x5.根据方案可列出以下数学模型:

Minz=0x1+0.1x2+0.2x3+0.3x4+0.8x5

x1+2x2++x4=100

2x3+2x4+x5=100

3x1+x2+x3++3x5=100

x1,x2,x3,x4,x5>=0

B、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;

0,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=38600000720

fval=726

exitflag=1

C;结果截图:

D:

运行结果分析:

由运行结果得到:

A产品产量每周生产3台,B产品产量每周为8太时可以得到最大利润,最大利润为726万元。

5、整数规划

A:

有四个人,要指派他们分别完成四项工作,每人做各项工作所消耗的时间如表所示:

A

15

19

26

19

B

18

23

17

21

C

21

22

16

23

D

24

18

19

17

则怎么分配使他们所用总时间最短。

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,zeros(1,3),17,zeros(1,3),21,zeros(1,2);zeros(1,2),21,zeros(1,3),22,zeros(1,3),16,zeros(1,3),23,0;zeros(1,3),24,zeros(1,3),18,zeros(1,3),19,zeros(1,3),17];

b=[24;23;26;23;26;23;23;24];

A=[ones(1,4),zeros(1,12);zeros(1,4),ones(1,4),zeros(1,8);

zeros(1,8),ones(1,4),zeros(1,4);zeros(1,12),ones(1,4);1,zeros(1,3),1,zeros(1,3),1,zeros(1,3),1,zeros(1,3);0,1,zeros(1,3),1,zeros(1,3),1,zeros(1,3),1,zeros(1,2);

0,0,1,zeros(1,3),1,zeros(1,3),1,zeros(1,3),1,0;zeros(1,3),1,zeros(1,3),1,zeros(1,3),1,zeros(1,3),1];

B=ones(1,8);

m=zeros(1,16);

[Q,W]=bintprog(c,a,b,A,B,m)

C;结果截图:

D:

运行结果分析:

由运行结果得到:

即甲做工作B,耗时18h;乙做工作A,耗时19h;丙做工作C,耗时16h;丁做工作D,耗时17h;最小总耗时w=70.

6、0-1规划

A:

求解0-1规划问题的函数bintprog:

对于该0-1规划问题,函数调用形式为x=bintprog(c,A,b,Aeq,beq),求解下列目标函数的最优解。

 

B:

MATLAB程序为:

C=[-3,2,-5];

A=[12-1;141;110;401];

b=[2;4;3;6];

[x,fval]=bintprog(C,A,b)

C:

运行结果:

D:

运行结果分析:

由运行结果得到:

x1=1,x2=0,x3=1时,目标函数取最大值为8。

六:

实验总结:

在使用MATLAB软件做实验的时候,我们小组选择了一道材料使用的线性规划问题、一道关于目标规划的产品生产问题、、一道工作指派的整数规划问题和一道实际求解最大值的0-1规划问题。

对于实际问题的要求,分别列出约束条件,此外对于目标规划问题列写有正负偏量的有权式,建立相应的数学模型,对于所有式子进行矩阵处理,再根据MATLAB软件的语言要求,编写MATLAB程序,上机运行,得到运行结果。

在小组明确分工合作的情况下,一步步得以实现。

之后再对运行结果进行实际的分析和讨论,检验结果的实际意义,从而了解MATLAB软件的方便性和丰富性,以便对该软件有一定深入的理解,更好地掌握该软件的使用方法。

与lingo软件不同的是,用MATLAB软件处理目标规划问题的时候,不需要从高到低一步步求不同优先级的最值,只需要把数学模型处理成合适的矩阵,然后求解即可。

在对选例的处理中,我们也遇到了一些软件操作问题,在修改的过程中得到了一些实用经验,例如:

在矩阵的列写当中,不能很合理地处理好对应的关系;在对MATLAB编程的时候,应该注意在语句后面加“;”,使不希望得到的结果隐藏输出等等。

在实用MATLAB解决运筹学实际问题时,对于不同的问题我们遇到了不同困惑,就拿现行规划来讲,如果我们用传统编写MATLAB代码解决问题可能很复杂,而且容易出现各种编写错误及调试不成功,我们组依照课件给出的方法,直接将各个参数系数输入表中,解决问题,简单而且用时较少,所以值得我们的思考的问题是在之后解决问题中,我们应该探讨是不是有没有简洁的方法求解。

同时在求解证书规划、0-1规划问题上我们也遇到好多问题,最简单的因为刚开始接触MATLAB程序,不清楚它有什么编程要求,导致在边MATLAB程序中出现各种错误,调试过程花费大量的时间,在进一步看MATLAB教程后我们见见熟悉了其编译规则与方法,因而很容易解决了证书规划和0-1规划两题。

相比之下前面解决的问题稍微简单点,后面在解决目标规划问题时,因为要考虑到优先因子以及正负偏差变量,所以比较麻烦,编写MATLAB程序需要理解几个新的概念,在系统掌握了解后,最终我们的问题还是解决了。

总之,MATLAB软件在对矩阵的数据操作上,用很丰富的数值计算函数,以简单紧凑的语言,方便灵活,能很方便地解决实际问题的求解。

如果我们可以很熟悉地运用该软件,它将是未来处理类似问题的一项很强大的工具。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1