数学模型数学建模 第四次作业 整数规划和对策论模型.docx

上传人:b****5 文档编号:7935190 上传时间:2023-01-27 格式:DOCX 页数:26 大小:194.63KB
下载 相关 举报
数学模型数学建模 第四次作业 整数规划和对策论模型.docx_第1页
第1页 / 共26页
数学模型数学建模 第四次作业 整数规划和对策论模型.docx_第2页
第2页 / 共26页
数学模型数学建模 第四次作业 整数规划和对策论模型.docx_第3页
第3页 / 共26页
数学模型数学建模 第四次作业 整数规划和对策论模型.docx_第4页
第4页 / 共26页
数学模型数学建模 第四次作业 整数规划和对策论模型.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数学模型数学建模 第四次作业 整数规划和对策论模型.docx

《数学模型数学建模 第四次作业 整数规划和对策论模型.docx》由会员分享,可在线阅读,更多相关《数学模型数学建模 第四次作业 整数规划和对策论模型.docx(26页珍藏版)》请在冰豆网上搜索。

数学模型数学建模 第四次作业 整数规划和对策论模型.docx

数学模型数学建模第四次作业整数规划和对策论模型

数学模型第四次作业整数规划和对策论模型

4.1实验目的

学会建立整数规划模型、对策论模型,学会用LINGO软件求解。

4.2基本实验

1.工程安排问题

三年内有五项工程可以考虑施工,每项工程的期望收入和年度费用如表4.1所示。

假定每一项已经选定的工程要在整个三年内完成。

目标是要选出使总收入达到最大的那些工程。

解:

根据题意,设

,i=1,2,3,4,5

目标函数为:

限制条件为:

使用Lingo编程:

model:

max=20*x1+40*x2+20*x3+15*x4+30*x5;

5*x1+4*x2+3*x3+7*x4+8*x5<=25;

1*x1+7*x2+9*x3+4*x4+6*x5<=25;

8*x1+10*x2+1*x3+2*x4+10*x5<=25;

@bin(x1);

@bin(x2);

@bin(x3);

@bin(x4);

@bin(x5);

end

运行得到结果:

Globaloptimalsolutionfound.

Objectivevalue:

95.00000

Objectivebound:

95.00000

Infeasibilities:

0.000000

Extendedsolversteps:

0

Totalsolveriterations:

0

 

VariableValueReducedCost

X11.000000-20.00000

X21.000000-40.00000

X31.000000-20.00000

X41.000000-15.00000

X50.000000-30.00000

RowSlackorSurplusDualPrice

195.000001.000000

26.0000000.000000

34.0000000.000000

44.0000000.000000

分析结果易知,总收入达到最大为95(千元),应选第一、二、三、四项工程可以使总收入达到最大。

2.固定费用问题

一服装厂生产三种服装,生产不同种类的服装要租用不同的设备,设备租金和其他的经济参数如表4.2所示。

假定市场需求不成问题,服装厂每月可用人工工时为2000小时,该厂如何安排生产可以使每月利润达到最大?

解:

根据题意三种服装的利润分别为120元、10元、100元.

设xi表示生成第i(i=1,2,3)种服装的数量,yi表示是否生产第i种服装。

列出目标函数:

列出限制条件:

5x1+x2+4x3≤2000

3x1≤300y1

0.5x2≤300y2

2x3≤300y3

使用Lingo编程求解:

model:

sets:

m/1,2,3/:

x,y;

endsets

[obj]max=100*x

(1)+10*x

(2)+100*x(3)-5000*y

(1)-2000*y

(2)-3000*y(3);

5*x

(1)+x

(2)+4*x(3)<=2000;

3*x

(1)<=300*y

(1);

0.5*x

(2)<=300*y

(2);

2*x(3)<=300*y(3);

@for(m(i):

x(i)>=0;@bin(y(i)););

end

得到结果:

Globaloptimalsolutionfound.

Objectivevalue:

21000.00

Objectivebound:

21000.00

Infeasibilities:

0.000000

Extendedsolversteps:

0

Totalsolveriterations:

0

 

VariableValueReducedCost

X

(1)100.00000.000000

X

(2)600.00000.000000

X(3)150.00000.000000

Y

(1)1.000000-5000.000

Y

(2)1.000000-4000.000

Y(3)1.000000-12000.00

RowSlackorSurplusDualPrice

OBJ21000.001.000000

2300.00000.000000

30.00000033.33333

40.00000020.00000

50.00000050.00000

6100.00000.000000

7600.00000.000000

8150.00000.000000

所以三种服装应该都生产,且生产西服100件、衬衫600件、羽绒服150件时可以使每月利润达到最大21000元。

3.串并联系统可靠性问题

有一台电器由三个部件组成,这三个部件串联,假如有一个部件发生故障,电器就不能工作。

可以通过在每个部件里安装1到2个备份元件来提高该电器的可靠性(不发生故障的概率)。

表4.3列出了可靠性和成本费用。

假设制造该电器的已有资金共10万元,那么怎样来构造这件电器呢?

解:

构造集合bujian/1..3/(部件),yuanjian/1..2/(每个部件可并联的元件数集合),links(bujian,yuanjian):

p,C,R。

其中

列出Lingo程序:

model:

sets:

bujian/1..3/;!

部件1,2,3;

yuanjian/1..2/;!

每个部件可装元件1,2;

links(bujian,yuanjian)/1,11,22,12,23,13,2/:

p,C,R;!

p(i,j)=1,则表示部件i上并联j个元件,否则,p(i,j)=0.C,R分别为成本,可靠性;

!

links中的元素必须罗列出来;

endsets

data:

C=12

35

24;

R=0.600.80

0.700.80

0.500.70;

enddata

max=@prod(bujian(I):

@sum(yuanjian(J)|@in(links,I,J):

p(I,J)*R(I,J)));!

整个系统的可靠性,为每个部件的可靠性之积;

@for(bujian(I):

@sum(yuanjian(J)|@in(links,I,J):

p(I,J))=1);

@for(links(I,J)|@in(links,I,J):

@bin(p(I,J)));

!

对于每一个部件,并联的元件数是一定的,p(I,J)只能取0或1,且p(I,J)的和为1;

@sum(bujian(I):

@sum(yuanjian(J)|@in(links,I,J):

p(I,J)*C(I,J)))<=10;!

总成本小于10(万元);

end

运行得到如下结果:

Linearizationcomponentsadded:

Constraints:

64

Variables:

16

Integers:

16

Globaloptimalsolutionfound.

Objectivevalue:

0.3920000

Objectivebound:

0.3920000

Infeasibilities:

0.000000

Extendedsolversteps:

0

Totalsolveriterations:

12

 

VariableValueReducedCost

P(1,1)0.0000000.000000

P(1,2)1.0000000.000000

P(2,1)1.0000000.000000

P(2,2)0.0000000.000000

P(3,1)0.0000000.000000

P(3,2)1.0000000.000000

C(1,1)1.0000000.000000

C(1,2)2.0000000.000000

C(2,1)3.0000000.000000

C(2,2)5.0000000.000000

C(3,1)2.0000000.000000

C(3,2)4.0000000.000000

R(1,1)0.60000000.000000

R(1,2)0.80000000.000000

R(2,1)0.70000000.000000

R(2,2)0.80000000.000000

R(3,1)0.50000000.000000

R(3,2)0.70000000.000000

RowSlackorSurplusDualPrice

10.39200001.000000

20.0000000.000000

30.0000000.000000

40.0000000.000000

51.0000000.000000

因此,此时的最优解可以得到:

即在第一个部件上并联两个元件,第二个部件上并联一个元件,第三个部件上并联两个元件,此时系统的在成本允许的情况下稳定性达到最大0.392。

4.二选一约束条件

某汽车公司正在考虑生产3种类型的汽车:

微型、中型和大型。

表4.4给出了每种汽车需要的资源及产生的利润。

目前有6000吨钢材和60000小时的劳动时间。

要生产一种在经济效益上可行的汽车,这种汽车必须至少生产1000辆。

试为该公司制定一个使生产利润达到最大的方案。

解:

设X1、X2、X3分别表示生产微型汽车、中型汽车、大型汽车的数量。

引入0-1变量,化为整数规划。

设yi只取0,1两个值,则生产1000辆或不生产用数学表达为:

目标函数:

max=2000*x1+3000*x2+4000*x3;

限制条件:

1.5*x1+3*x2+5*x3<=6000;

30*x1+25*x2+40*x3<=60000;

x1<=5000*y1;(取个合理范围)

x1>=1000*y1;

x2<=5000*y2;

x2>=1000*y2;

x3<=5000*y3;

x3>=1000*y3;

x1,x2,x3为整数;

用Lingo编程求解:

model:

max=2000*x1+3000*x2+4000*x3;

1.5*x1+3*x2+5*x3<=6000;

30*x1+25*x2+40*x3<=60000;

x1<=5000*y1;

x1>=1000*y1;

x2<=5000*y2;

x2>=1000*y2;

x3<=5000*y3;

x3>=1000*y3;

@bin(y1);

@bin(y2);

@bin(y3);

@gin(x1);

@gin(x2);

@gin(x3);

End

运行得到结果:

Objectivevalue:

6000000.

Objectivebound:

6000000.

Infeasibilities:

0.000000

Extendedsolversteps:

1

Totalsolveriterations:

8

 

VariableValueReducedCost

X10.000000-2000.000

X22000.000-3000.000

X30.000000-4000.000

Y10.0000000.000000

Y21.0000000.000000

Y30.0000000.000000

RowSlackorSurplusDualPrice

16000000.1.000000

20.0000000.000000

310000.000.000000

40.0000000.000000

50.0000000.000000

63000.0000.000000

71000.0000.000000

80.0000000.000000

90.0000000.000000

 

易知生产中型车2000辆可以使生产利润达到最大为6000000美元。

5.最小覆盖问题

某市管辖6个区(区1〜区6).这个市必须明确在什么地方修建消防站,在保证至少有一个消防站在每个区的15分钟(行驶时间)路程内的情况下,这个市希望修建的消防站最少。

表4.5给出了该市各个区之间行驶需要的时间(单位为分钟)。

这个市需要多少个消防站,以及它们所在的位置。

解:

根据题意,设x表示是否在某区建消防站,c表示两区之间是否15分钟内可以到达,使用Lingo编程:

model:

sets:

area/1..6/:

x;

link(area,area):

t,c;

endsets

data:

t=

01020303020

10025352010

20250153020

30351501525

30203015014

20102025140;

enddata

calc:

@for(link:

c=@if(t#le#15,1,0));

endcalc

min=@sum(area:

x);

@for(area:

@bin(x));

@for(area(i):

@sum(area(j):

c(i,j)*x*(i))>=1);

End

解得如下结果:

Globaloptimalsolutionfound.

Objectivevalue:

2.000000

Objectivebound:

2.000000

Infeasibilities:

0.000000

Extendedsolversteps:

0

Totalsolveriterations:

0

 

VariableValueReducedCost

X

(1)0.0000001.000000

X

(2)1.0000001.000000

X(3)0.0000001.000000

X(4)1.0000001.000000

X(5)0.0000001.000000

X(6)0.0000001.000000

…………………………………………

因此,若要修建消防站最少,只需在区2、区4建立消防站就可以。

6.对策问题1

在一次野餐会上,两个二人组在玩捉迷藏游戏。

共有四个隐藏地点(A、B、C和D),隐藏组的两个成员可以分别藏在四个地点的任何两个,搜寻组人有机会寻找任何两个地点。

如果他们都找到了隐藏组的二个人,搜寻组就可以得到一分奖励,假如两个人都没找到,他们就输一分。

其它情况下,结果是平局。

将这个问题表示成一个二人零和对策,求出搜寻组最优搜寻策略和它们的赢得值。

解:

设此题目局中人为甲乙两组

列出支付函数:

乙组(隐藏组)

甲组

(寻找组)

AB

AC

AD

BC

BD

CD

AB

1

0

0

0

0

-1

AC

0

1

0

0

-1

0

AD

0

0

1

-1

0

0

BC

0

0

-1

1

0

0

BD

0

-1

0

0

1

0

CD

-1

0

0

0

0

1

因为每行或列得分的和均为0,即局中人得失总和为零,所以该对策为二人零和对策。

MODEL:

sets:

playerA/1..6/:

x;

playerB/1..6/;

game(playerA,playerB):

C;

endsets

data:

C=

10000-1

0100-10

001-100

00-1100

0-10010

-100001;

enddata

max=v_A;

@free(v_A);

@for(playerB(j):

@sum(playerA(i):

C(i,j)*x(i))>=v_A);

@sum(playerA:

x)=1;

end

得到结果:

Globaloptimalsolutionfound.

Objectivevalue:

0.000000

Infeasibilities:

0.000000

Totalsolveriterations:

5

 

VariableValueReducedCost

V_A0.0000000.000000

X

(1)0.50000000.000000

X

(2)0.0000000.000000

X(3)0.0000000.000000

X(4)0.0000000.000000

X(5)0.0000000.000000

X(6)0.50000000.000000

因此推出,若搜索组采用50%的概率派出队员去搜索AB和CD的策略,可以得到的赢得值为0。

7.对策问题2

甲手中有两张牌,各为1点和4点;乙手中有两张牌,各为2点和3点。

两人同时各出一张牌,并依据两人所出牌的点数之和来决定各自的收益当点数和为偶数时,甲赢得为两张牌的点数和,乙羸得两张牌的点数差;当点数和为奇数时,甲赢得为两张牌的点数差,乙羸得两张牌的点数和。

求甲乙二人各自的最优策略和各自的羸得值。

解:

根据题意列出支付函数:

2

3

1

(1,4)

(4,2)

4

(6,2)

(1,7)

该题为一个典型的二人非常数和对策,每人的收益矩阵是不相同的,为双矩阵对策。

利用Lingo软件求解:

MODEL:

sets:

optA/1..2/:

x;

optB/1..2/:

y;

AXB(optA,optB):

Ca,Cb;

endsets

data:

Ca=

14

61;

Cb=

42

27;

enddata

Va=@sum(AXB(i,j):

Ca(i,j)*x(i)*y(j));

Vb=@sum(AXB(i,j):

Cb(i,j)*x(i)*y(j));

@for(optA(i):

@sum(optB(j):

Ca(i,j)*y(j))<=Va);

@for(optB(j):

@sum(optA(i):

Cb(i,j)*x(i))<=Vb);

@sum(optA:

x)=1;@sum(optB:

y)=1;

@free(Va);@free(Vb);

End

求得结果:

Infeasibilities:

0.2622347E-12

Totalsolveriterations:

20

 

VariableValue

VA2.875000

VB3.428571

X

(1)0.7142857

X

(2)0.2857143

Y

(1)0.3750000

Y

(2)0.6250000

CA(1,1)1.000000

CA(1,2)4.000000

CA(2,1)6.000000

CA(2,2)1.000000

CB(1,1)4.000000

CB(1,2)2.000000

CB(2,1)2.000000

CB(2,2)7.000000

计算得到混合对策的平衡点为(5/7,2/7),(3/8,5/8),此时的各自的赢得值为2.875和3.428571。

 

4.3加分实验(乒乓球团体赛上场队员排序问题)

乒乓球团体赛的比赛规则如下:

从一个队中挑选出的三名比赛队员和一个队长(可由参赛队员兼任,亦可由其他人员专任)组成。

比赛之前,双方队长应抽签决定A、B、C和X、Y、Z的选择,并向裁判提交每个运动员分配到一个字母的队伍名单。

现行的比赛顺序:

第一场A—X,第二场B—Y,第三场C—Z,第四场A—Y,第五场B—X。

每场比赛为三局两胜制。

当一个队已经赢得三场个人比赛时,该次比赛应结束。

现有甲队挑选出的三名比赛队员分别是:

A1、A2、A3,乙队挑选出的三名比赛队员分别是:

B1、B2、B3,根据以往的历史资料,甲队与乙队比赛,甲队运动员在每一局中获胜的概率如表B.1所示。

1.甲队教练将如何安排上场运动员的次序,使得本队获胜的概率最大。

建立相应的数学模型,并说明你的理由。

2.如果每一局比赛,A1胜B3的概率改为0.45,A3胜B1的概率改为0.55。

在这种情况下,甲队教练将如何调整甲队队员的上场次序?

 

解:

分析此问题,属于运筹学排序问题。

推理建立模型如下:

这是一个排列问题,用lingo软件,

目标函数:

max=@sum(shunxu:

p*x);

设x(i,j)为0,1变量,x为一个3*3的0,1矩阵,x(i,j)表示第i同学是否在第j同学前面,

p为A选手胜B选手的概率=

0.500.550.60

0.450.500.55

0.400.450.50;

约束条件:

选手比赛的前后顺序;

每阶段只有一名选手比赛。

列出Lingo程序:

model:

sets:

aa/1..3/:

a;

bb/1..3/:

b;

cc/1..6/:

c;

ps/1..5/;

psc(ps,cc):

p;

para(aa,bb):

p1,p2,p3,p4,p5,p6,x;

pp(aa,bb,cc):

pb,ppb;

endsets

data:

!

xyz;

p1=0.50.550.60

0.450.500.55

0.400.450.50;

!

yxz;

p2=0.550.600.5

0.500.550.45

0.450.500.40;

!

z,x,y;

p3=0.600.500.55

0.550.450.50

0.500.400.45;

!

x,z,y;

p4=0.500.600.55

0.450.550.50

0.400.500.45;

!

y,z,x;

p5=0.550.600.50

0.500.550.45

0.450500.40;

!

z,y,x;

p6=0.600.550.50

0.550.500.45

0.500.450.40;

enddata

!

yueshu;

calc:

@for(pp(i,j,k):

pb(i,j,1)=p1(i,j));

@for(pp(i,j,k):

pb(i,j,2)=p2(i,j));

@for(pp(i,j,k):

pb(i,j,3)=p3(i,j));

@for(pp(i,j,k):

pb(i,j,4)=p4(i,j));

@for(pp(i,j,k):

pb(i,j,5)=p5(i,j));

@for(pp(i,j,k):

pb(i,j,6)=p6(i,j));

endcalc

@for(bb(j):

@sum(aa(i):

x(i,j))=1);

@fo

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

当前位置:首页 > 总结汇报 > 其它

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

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