加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MATLAB编程(运筹学之运输问题)

(2017-04-04 18:52:42)
标签:

matlab

编程

运筹学

运输问题

运筹学与最优化MATLAB编程

使用MATLAB求解:

1、某公司经销甲产品。它下设三个加工厂。每日的产量分别是:A17吨,A24吨,A39吨。该公司把这些产品分别运往4个销售点。各销售点的每日销量分别为:B13吨,B26吨,B35吨,B46吨,已知运价如下表所示,问该公司如何调用产品,在满足各销地需求量的前提下,使总运费最少。 运价表

加工厂

销地

B1

B2

B3

B4

A1

3

11

3

10

A2

1

9

2

8

A3

7

4

10

5

 

     解:设xij为第i加工厂运往第j销地的产品

    min Z=3x11+11x12+3x13+10x14+x21+9x22+2x23+8x24+7x31+4x32+10x33+5x34

     根据合同要求,需满足

 x11+x12+x13+x14=7

       x21+x22+x23+x24=4

       x31+x32+x33+x34=9

       x11+x21+x31=3

       x12+x22+x32=6

       x13+x23+x33=5

       x14+x24+x34=6

    M文件如下:

 c=[3,11,3,10,1,9,2,8,7,4,10,5]

 Aeq=[1,1,1,1,0,0,0,0,0,0,0,0;

     0,0,0,0,1,1,1,1,0,0,0,0;

     0,0,0,0,0,0,0,0,1,1,1,1;

     1,0,0,0,1,0,0,0,1,0,0,0;

     0,1,0,0,0,1,0,0,0,1,0,0;

     0,0,1,0,0,0,1,0,0,0,1,0;

     0,0,0,1,0,0,0,1,0,0,0,1]

 beq=[7;4;9;3;6;5;6]

 lb=[0;0;0;0;0;0;0;0;0;0;0;0]

 ub=[Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf]

 [x,fval]=linprog(c,[],[],Aeq,beq,lb,ub)

2、某厂按合同规定须于当年每个季度末分别提供10,15,25,20台同一格的柴  油机。已知该厂各季度的生产能力及生产每台柴油机的成本如下表所示。又如果生产出来的柴油机当季不交货的,每台每积压一个季度需储存、维护等费用0.15万元。要求在完成合同的情况下,做出该厂全年生产(包括储存、维护)费用最小的决策。

季度

生产能力/

单位成本/万元

1

25

10.8

2

35

11.1

3

30

11.0

4

10

11.3

 

   解:设xij为第i季度生产的用于第j季度交货的柴油机数。

      min Z=10.8x11+10.95x12+11.10x13+11.25x14+0x21+11.10x22+11.25x23+11.40x24+0x31+0x32+11.00x33+11.15x34+0x41+0x42+0x43+11.30x44

       根据合同要求,需满足

  x11          =10

       x12+x22       =15

       x13+x23+x33        =25

       x14+x24+x34+x44  =20

       x11+x12+x13+x14≦25

          x22+x23+x24≦35

             x33+x34≦30

                x44≦10

     M文件如下:

c=[10.8,10.95,11.10,11.25,0,11.10,11.25,11.40,0,0,11.00,11.15,0,0,    0,11.30]

A=[1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0;

   0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0;

   0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0;

   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]

b=[25;35;30;10]

Aeq=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;

     0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0;

     0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0;

     0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1;]

beq=[10;15;25;20]

lb=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0]

ub=[Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf;Inf]

 

[x,fval,]=linprog(c,A,b,Aeq,beq,lb,ub)

请总结MATLAB解运输问题的思路,并说明上面两项实验内容的区别。

解:

运输问题主要有产销平衡和产销不平衡两种情况:

针对产销平衡问题,可利用MATLAB直接求解。

针对产销平衡问题,核心方法是将产销不平衡的转化为产销平衡的问 题,然后进行求解。

对于>问题:可虚拟一个销地,让多余的产量均运往此销地,则其销售量=“-,同时令该虚拟销地的运价等于0

对于>问题:可虚拟一个产地,让不足的销售量均由此产地提供,则其销售量=“-,同时令该虚拟产地的运价等于0

上面两个实验,第一个为产销平衡问题,约束条件都为等式,而第二个为产销不平衡问题,销量约束条件为不等式。

   4、实验中,你的易错点有哪些?应该如何避免?

   答:我在试验中易错的问题是因为变量、约束条件太多,导致输入约束条件时容易出现遗漏变量或者输错变量的情况,所以每打完一条约束条件后应回车换行,然后对照变量,减少失误,减少对照时间。在结束时不能打分号。

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有