运输问题—R实现

2023-06-25

table { margin: auto }

运输问题

随着社会和经济的不断进步,现代物流业蓬勃发展,如何充分利用时间、信息、仓储、配送和联运体系创造更多的价值,是物流运作必须解决的问题。运输问题(transportation problem)就是要求所采用运输方案是最经济或成本最低的,日益复杂的运输活动使得运输问题变得越来越庞杂,但是其核心思想仍然是实现现有资源的最优化配置。

例:某制药公司在全国设有六个生产基地,这些生产基地每天将这些药分别运往八个地区的经销部门,已知从每个生产基地到各销售部门每箱药品的运价如下表所示,问该制药公司应如何调运(运输方案),使在满足各销售部门需要的情况下,总的运输费用最少?

\(c_{ij}\) B1 B2 B3 B4 B5 B6 B7 B8 产量\(a_i\)
A1 6 2 6 7 4 2 5 9 60
A2 4 9 5 3 8 5 8 2 55
A3 5 2 1 9 7 4 3 3 51
A4 7 6 7 3 9 2 9 1 43
A5 2 3 9 5 7 2 6 5 41
A6 5 5 2 2 8 1 4 3 52
销量\(b_j\) 35 37 22 32 41 32 43 38

运输问题的数学模型

1. 运输问题类型

\[\sum_{i=1}^{m}{a_i}\geq\sum_{j=1}^{n}{b_j}
\]

其中\(m=6;n=8\),由于总供给大于总需求,属于供大于求的运输问题。

2. 数学模型的建立

设从产地\(i\)调运到销地\(j\)的药品数量为\(x_{ij}\),建立数学模型如下:

\[min \ \ \ \sum_{i=1}^{m}\sum_{j=1}^{n}{c_{ij}{x_{ij}}}\\\ \ \ \begin{cases} \sum_{j=1}^{n}{x_{ij}}\geq{a_i};{i=1,2,...,m}\\\\\sum_{i=1}^{m}{x_{ij}}={b_j};{j=1,2,...,n}\\\\ x_{ij}\geq0;{i=1,2,...,m};{j=1,2,...,n}\end{cases}
\]

运输问题求解

1. R计算程序

#运输问题加载包
library(lpSolve)
#运价矩阵
costs<-matrix(c(6,4,5,7,2,5,2,9,2,6,3,
5,6,5,1,7,9,2,7,3,9,3,5,2,4,8,7,
9,7,8,2,5,4,2,2,1,5,8,3,7,6,4,9,2,3,1,5,3),nrow=6)
row.signs<-rep("<=",6) #产量约束符号
row.rhs<-c(60,55,51,43,41,52) #产量约束向量
col.signs<-rep("=",8) #销量约束符号
col.rhs<-c(35,37,22,32,41,32,43,38) #销量约束向量 #最优解和最优值
res<-lp.transport(costs,"min",row.signs,row.rhs,col.signs,col.rhs)
res
res$solution

2. R计算结果

最优值
Success: the objective function is 664
最优解
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 0 19 0 0 41 0 0 0
[2,] 0 0 0 32 0 0 0 1
[3,] 0 12 0 0 0 0 39 0
[4,] 0 0 0 0 0 6 0 37
[5,] 35 6 0 0 0 0 0 0
[6,] 0 0 22 0 0 26 4 0

由R输出结果可知6个生产点8个销售点的最小运费为664,相应的运送方案为A1→B2:19个单位,A1→B5:41个单位,A2→B4:32个单位,A2→B8:1个单位,A3→B2:12个单位,A3→B7:39个单位,A4→B8:37个单位,A5→B1:35个单位,A5→B2:6个单位,A6→B3:22单位,A6→B6:26个单位,A6→B7:4个单位。

总结

通过运用运筹学的知识和方法对运输问题进行资源的优化配置和人员的合理分配,不仅可以为企业节省成本,提高效益和利润还可以节约运输的时间,为科学管理带来决策支持,为广大的消费者带来优惠和便利。

参考文献

R语言与优化模型:线性规划、整数规划和运输问题

运输问题—R实现的相关教程结束。

《运输问题—R实现.doc》

下载本文的Word格式文档,以方便收藏与打印。