注册地址 登录
数学建模社区-数学中国 返回首页

梦@di?~的个人空间 http://www.madio.net/?1219759 [收藏] [复制] [分享] [RSS]

日志

Lingo精选题目及答案

热度 1已有 385 次阅读2014-8-20 09:48 |个人分类:lingo| lingo, 精选题目及答案

Lingo精选题目及答案

答题要求:将Lingo程序复制到Word文档中,并且附上最终结果。

1、简单线性规划求解

(目标函数)

s.t.(约束条件)

2、整数规划求解

30-1规划求解

Max  

4、非线性规划求解

s.t. 

5、集合综合应用

产生一个集合,(),

y6个数的和S1,后6个数的和S2,第2~8个数中的最小值S3,最大值S4

6、综合题

要求列出具体的目标函数和约束条件,然后附上Lingo程序和最终结果。

6.1 指派问题

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

       工作

工人

15

18

21

24

19

23

22

18

26

17

16

19

19

21

23

17

问指派哪个人去完成哪项工作,可使总的消耗时间为最小?

 

 

6.2 分配问题

某两个煤厂A1A2每月进煤数量分别为60t100t,联合供应3个居民区B1,B2,B33个居民区每月对煤的需求量依次分别为50t70t40t,煤厂A13个居民区B1,B2,B3的距离依次分别为10km,5km,6km,煤厂A23个居民区B1,B2,B3的距离分别为4km,8km,12km。问如何分配供煤量使得运输量(即t·km)达到最小?

 

1

model:

   max=4*x1+3*x2;

   2*x1+x2<10;

   x1+x2<8;

   x2<7;

end

2

model:

   max=40*x1+90*x2;

   9*x1+7*x2<56;

   7*x1+20*x2<70;

   @gin(x1);@gin(x2);

end

3

model:

   max=x1^2+0.4*x2+0.8*x3+1.5*x4;

   3*x1+2*x2+6*x3+10*x4<10;

   @bin(x1);  @bin(x2);

   @bin(x3);  @bin(x4);

end

4

model:

   max=@abs(x1)+2*@abs(x2)+3*@abs(x3)+4*@abs(x4);

   x1-x2-x3+x4=0;

   x1-x2+x3-3*x4=1;

   x1-x2-2*x3+3*x4=-1/2;

end

5

model:

   sets:

      jihe/1..10/:y;

      ss/1..4/:S;

   endsets

   !由于ys中部分有负数,所以要先去掉这个约束;

   @for(jihe:@free(y));

   @for(ss(i):@free(S));

   !产生元素;

   @for(jihe(x):y(x)=x^2-5*x-50);

   S(1)=@sum(jihe(i)|i#le#6:y(i));

   S(2)=@sum(jihe(i)|i#ge#5:y(i));

   S(3)=@min(jihe(i)|i#ge#2 #and# i#le#8:y(i));

   S(4)=@max(jihe(i)|i#ge#2 #and# i#le#8:y(i));

end

6.1

设:第i个工人做第j项工作用时,标志变量 定义如下:

    

s.t.       每份工作都有一人做

         每人都只做一项工作

model:

   sets:

      work/A B C D/;

      worker/jia yi bing ding/;

      time(worker,work):t,f;

   endsets

   !目标函数可以用[obj]标志出,也可以省略;

   [obj] min=@sum(time(i,j):t(i,j)*f(i,j));

   data:

       !可以直接复制表格,但是在最后要有分号;

      t=

15

18

21

24

19

23

22

18

26

17

16

19

19

21

23

17

; enddata

   !每份工作都有一人做;

   @for(work(j):@sum(time(i,j):f(i,j))=1);

   !每人都只做一项工作;

   @for(worker(i):@sum(time(i,j):f(i,j))=1);

   !f0-1值,此条件可以省略;

   !@for(time(i,j):@bin(f(i,j)));

end

 

6.2 

设:煤厂进煤量,居民区需求量为,煤厂距居民区的距离为,煤厂供给居民区的煤量为

那么可以列出如下优化方程式

s.t    

    

model:

sets:

     supply/1,2/:s;

     demand/1,2,3/:d;

     link(supply,demand):road,sd;

endsets

data:

      road=10 5 6

           4 8 12;

      d=50 70 40;

      s=60 100;

enddata

[obj] min=@sum(link(i,j):road(i,j)*sd(i,j));

@for(demand(i):@sum(supply(j):sd(j,i))=d(i));

@for(supply(i):@sum(demand(j):sd(i,j))<s(i));

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.线性规划模型。某战略轰炸机群奉命摧毁敌人军事目标。已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽油消耗(空载时每升汽油可飞行4千米)外,起飞和降落每次各消耗100升。

表1 相关数据

要害部位

离机场距离

(千米)

摧毁可能性

每枚重型弹

每枚轻型弹

1

2

3

4

450

480

540

600

0.10

0.20

0.15

0.25

0.08

0.16

0.12

0.20

为了使摧毁敌方军事目标的可能性最大,应如何确定飞机轰炸的方案。

 

 

2、资源配置模型。某工厂有原料钢管:每根19米,用户需求450根,620根,815根。 如何下料钢管剩余总余量最小由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。

表1 不同切割的模式

模式

4米钢管根数

6米钢管根数

8米钢管根数

余料(米)

1

4

0

0

3

2

3

1

0

1

3

2

0

1

3

4

1

2

0

3

5

1

1

1

1

6

0

3

0

1

7

0

0

2

3

    

 

    3、图论模型(动态规划)。求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量。其中(xy)中x表示容量,y表示费用。

图1 网络图

 

 

题目解答

1.线性规划模型。

解:设用了x枚重型炸弹,用了y枚轻型炸弹,攻击的是第i个部位,再设一标志变量f定义如下:

目标函数为:             

,

model:

   sets:

     pd/1..4/:Ph,Pl,d,f; 

   endsets

   data:

     d=450,480,540,600;

     Ph=0.1,0.2,0.15,0.25;

     Pl=0.08,0.16,0.12,0.2;

   enddata

   max=@sum(pd(i):(x*Ph(i)+y*Pl(i))*f(i));

   @for(pd(i):x*(d(i)/2+d(i)/4+200)+y*(d(i)/3+d(i)/4)+200<48000);

   x<48;y<32;

   @for(pd(i):@bin(f(i)));

   @sum(pd(i):f(i))=1;

   !验证用油量;

   !l=x*(d(4)/2+d(4)/4+200)+y*(d(4)/3+d(4)/4)+200;

end

2、资源配置模型。某工厂有原料钢管:每根19米,用户需求450根,620根,815根。 如何下料钢管剩余总余量最小由于采用不同切割模式太多,会增加生产和管理成本,规定切割模式不能超过3种。

表1 不同切割的模式

模式

4米钢管根数

6米钢管根数

8米钢管根数

余料(米)

1

4

0

0

3

2

3

1

0

1

3

2

0

1

3

4

1

2

0

3

5

1

1

1

1

6

0

3

0

1

7

0

0

2

3

设:模式的供应量为,对于第i种模式,切割的4米钢管根数,6米钢管根数,8米钢管根数,分别为,余料为,每种钢管的需求量分别为,再设一标志变量f定义如下:

目标函数:    

                       i=1,2,,7

                   

model:

   sets:

     mode/1..7/:m,s,f;

     demand/1..3/:d;

     md(mode,demand):t;

   endsets

   data:

     s=3 1 3 3 1 1 3;

     d=50 20 15;     

     t=

4

0

0

3

1

0

2

0

1

1

2

0

1

1

1

0

3

0

0

0

2

     ;

   enddata

   [obj] min=@sum(mode(i):f(i)*s(i)*m(i));

   @for(demand(j):@sum(mode(i):f(i)*m(i)*t(i,j))=d(j));

   @for(mode(i):@bin(f(i)));

   @sum(mode(i):f(i))<3;

end

3、图论模型(动态规划)。求出下图所示的最小费用和最大流量,以及在最小费用下的最大流量和最大流量下的最小费用。其中(xy)中x表示容量,y表示费用。

图1 网络图

1)求最小费用,解法一:稀疏矩阵0-1规划法

假设图中有n个原点,现需要求从定点1n的最短路。设决策变量为,当,说明弧(i,j)位于定点1至定点n的路上;否则,其数学规划表达式为

  

约束条件,源点只有一条路指出去,终点只有一条路指进来,其余各点指进去的和指出去的相等,表达式如下,

model:

   sets:

     node/1..6/;

     road(node,node)/1 2,1 3,2 4,2 5,

                    3 4,3 5,4 6,5 6/:w,f;

   endsets

   data:

     w=2 1 5 3 4 3 0 0;

   enddata

   n=@size(node);

   [obj] min=@sum(road(i,j):w(i,j)*f(i,j));

   @for(node(i)|i#ne#1 #and# i#ne#n:

       @sum(road(i,j):f(i,j))=@sum(road(j,i):f(j,i)));

   @sum(road(i,j)|i#eq#1:f(i,j))=1;

   !下面这个条件可以省略,这个条件包含在上面的条件了,

因为如果满足上面所以的条件指向终点的路只有且只有一条;

   @sum(road(j,i)|i#eq#n:f(j,i))=1; 

end

 

 

 

解法二:求源点到任意点的最小费用,动态规划法。

1®6的最小费用,只要求1®4 + 4®61®5 + 5®6中的最小费用,以同样的方法向上推,求1®4的最小费用只要求出1®2 + 2®1®3 + 3®4中的最小费用即可。可以归纳出如下的表达式:

 ,  

model:

   sets:

       node/1..6/:L;

       road(node,node)/1 2,1 3,2 4,2 5,3 4,3 5,4 6,5 6/:c;

   endsets

   data:

       c=2 1 5 3 4 3 0 0;

   enddata

   L(1)=0;

   !求一点到任意点的最小费用;

   @for(node(i)|i#gt#1:L(i)=@min(road(j,i)|j#ne#i:(L(j)+c(j,i))));   

end

解法三:邻接矩阵法。

如果,则称邻接,具有n个顶点的图的邻接矩阵是一个n×n阶矩阵,其分量为

n个顶点的赋权图的赋权矩阵是一个n×n阶矩阵,其分量为

只需将动态规划的条件该一下即可

 ,  

model:

   sets:

       node/1..6/:L;

       road(node,node):a,w;

   endsets

   data:

       a=0 1 1 0 0 0

         0 0 0 1 1 0

         0 0 0 1 1 0

         0 0 0 0 0 1

         0 0 0 0 0 1

         0 0 0 0 0 0;

       w=9 2 1 9 9 9

         9 9 9 5 3 9

         9 9 9 4 3 9

         9 9 9 9 9 0

         9 9 9 9 9 0

         9 9 9 9 9 9;

   enddata

   L(1)=0;

   !求一点到任意点的最小费用;

   @for(node(i)|i#gt#1:L(i)=@min(road(j,i)|

         j#ne#i #and# a(j,i)#ne#0:(L(j)+w(j,i))));   

end

 

2)求最大流量:

max       

     

同样也可以用三种方法解,这里只给出邻接矩阵的解法,因为邻接矩阵最容易扩展到多个点,且邻接矩阵用其他的软件非常容易得到。

model:

   sets:

      node/1..6/;

      road(node,node):w,a,f;  

   endsets

   data:

       a=0 1 1 0 0 0

         0 0 0 1 1 0

         0 0 0 1 1 0

         0 0 0 0 0 1

         0 0 0 0 0 1

         0 0 0 0 0 0;

       w=0 1 4 0 0 0

         0 0 0 6 4 0

         0 0 0 5 3 0

         0 0 0 0 0 7

         0 0 0 0 0 3

         0 0 0 0 0 0;

   enddata

   max=vf;

   @sum(road(i,j)|i#eq#1:f(i,j))=vf;

   !用下面的表达也可以;

   !@sum(node(i):f(1,i))=vf;

   @for(node(i)|i#gt#1 #and# i#ne#@size(node):

      @sum(node(j):f(i,j)*a(i,j))=@sum(node(j):f(j,i)*a(j,i)));

   @for(road(i,j):f(i,j)<w(i,j));

   !用下面的表达也可以;

   !@for(road:@bnd(0,f,w));

end

3)最大流量下的最小费用

用上面的方法得到的最大流量的走法只是其中的一种,而不是所有的走法,所以需要找出最优解,其中最小费用或者最短路径是最常见的两类。

这里求最大流量下的最小费用,先要求出最大流量,然后流量就是已知条件,再求出最小费用就可以了。最大流量用前面的方法已经求出来了,约束条件和上面的一样,这里用表示现流量,表示最大流量,即容量。

目标函数,  

约束条件,源点流出去的流量是最大流量,终点流进的也是最大流量,其余各点指进去的和指出去的相等,表达式如下,

对应的流量要小于容量

这里可以由上一问求出=5

model:

   sets:

     node/1..6/;

     road(node,node)/1 2,1 3,2 4,2 5,

                    3 4,3 5,4 6,5 6/:w,x,f;

   endsets

   data:

     w=2 1 5 3 4 3 0 0;

     x=3 4 6 4 5 3 7 3;

   enddata

   n=@size(node);

   [obj] min=@sum(road(i,j):w(i,j)*f(i,j));

   @for(node(i)|i#ne#1 #and# i#ne#n:

       @sum(road(i,j):f(i,j))=@sum(road(j,i):f(j,i)));

   @sum(road(i,j)|i#eq#1:f(i,j))=5;

   @sum(road(j,i)|i#eq#n:f(j,i))=5;

   @for(road(i,j):f(i,j)<x(i,j)); 

end

 


路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (1 个评论)

回复 dsk1209 2014-9-16 18:28
写的很好,学习中,经过这段时间的学习,的确感受的到了数学建模的魅力,希望国人能够跳出应试,取得更加有创意的成果!一起努力

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2025-11-15 22:46 , Processed in 0.219094 second(s), 30 queries .

回顶部