b题标准参考答案已经下来了
2003高教社杯全国大学生数学建模竞赛
B题参考答案
注意:以下答案是命题人给出的,仅供参考。各评阅组应根据对题目的理解及学生的解答,自主地进行评阅。
问题分析:
本题目与典型的运输问题明显有以下不同:
1. 运输矿石与岩石两种物资;
2. 产量大于销量的不平衡运输;
3. 在品位约束下矿石要搭配运输;
4. 产地、销地均有单位时间的流量限制;
5. 运输车辆每次都是满载,154吨/车次;
6. 铲位数多于铲车数意味着最优的选择不多于7个产地;
7. 最后求出各条路线上的派出车辆数及安排。
运输问题对应着线性规划,以上第1、2、3、4条可通过变量设计、调整约束条件实现;第5条使其变为整数线性规划;第6条用线性模型实现的一种办法,是从 个整数规划中取最优的即得到最佳物流;对第7条由最佳物流算出各条路线上的最少派出车辆数(整数),再给出具体安排即完成全部计算。
对于这个实际问题,要求快速算法,计算含50个变量的整数规划比较困难。另外,这是一个二层规划,第二层是组合优化,如果求最优解计算量较大,现成的各种算法都无能为力。于是问题变为找一个寻求近优解的近似解法,例如可用启发式方法求解。
调用120次整数规划可用三种方法避免:(1)先不考虑电铲数量约束运行整数线性规划,再对解中运量最少的几个铲位进行筛选;(2)在整数线性规划的铲车约束中调用 函数来实现;(3)增加10个0-1变量来标志各个铲位是否有产量。
这是一个多目标规划,第一问的目标有两层:第一层是总运量(吨公里)最小,第二层是出动卡车数最少,从而实现运输成本最小。第二问的目标有:岩石产量最大;矿石产量最大;运量最小,三者的重要性应按此序。
合理的假设主要有:
1. 卡车在一个班次中不应发生等待或熄火后再启动的情况;
2. 在铲位或卸点处因两条路线(及以上)造成的冲突时,只要平均时间能完成任务即可,不进行排时讨论;
3. 空载与重载的速度都是28km/h,耗油相差却很大,因此总运量只考虑重载运量;
4. 卡车可提前退出系统。
符号:xij ~ 从i号铲位到j号卸点的石料运量 单位 吨;
cij ~ 从i号铲位到j号卸点的距离 公里;
Tij ~ 从i号铲位到j号卸点路线上运行一个周期平均所需时间 分;
Aij ~ 从i号铲位到j号卸点最多能同时运行的卡车数 辆;
Bij ~ 从i号铲位到j号卸点路线上一辆车最多可以运行的次数 次;
pi ~ i号铲位的矿石铁含量。 %
p =(30,28,29,32,31,33,32,31,33,31)
qj ~ j号卸点任务需求 吨
q=(1.2,1.3,1.3,1.9,1.3)*10000
cki ~ i号铲位的铁矿石储量 万吨
cyi ~ i号铲位的岩石储量 万吨
fi: ~ 描述第i号铲位是否使用的0-1开关变量,取1为使用;取0为关闭。
模型建立、算法设计与模型求解:
问题一、求运输成本最小的生产计划
一.以总运量最小为目标函数求解最佳物流—-第一层规划
(1)道路能力约束:一个电铲(卸点)不能同时为两辆卡车服务,一条路线上最多能同时运行的卡车数是有限制的。卡车从i号铲位到j号卸点运行一个周期平均所需时间为 (分钟)。由于装车时间5分钟大于卸车时间3分钟,所以这条路线上在卡车不等待条件下最多能同时运行的卡车数为: ;其中最后开始发车的一辆卡车一个班次中在这条路线上最多可以运行的次数为(其他卡车可能比此数多1次) ,这里 是开始装车时最后一辆车的延时时间。一个班次中这条固定路线上最多可能运行的总车次大约为: ,总吨数 。
(2)电铲能力约束:一台电铲不能同时为两辆卡车服务,所以一台电铲在一个班次中的最大可能产量为8×60/5×154(吨)。
(3)卸点能力约束:卸点的最大吞吐量为每小时60/3=20车次,于是一个卸点在一个班次中的最大可能产量为8×20×154(吨)。
(4)铲位储量约束:铲位的矿石和岩石产量都不能超过相应的储藏量。
(5)产量任务约束:各卸点的产量不小于该卸点的任务要求。
(6)铁含量约束:各矿石卸点的平均品位要求都在指定的范围内。
(7)电铲数量约束:电铲数量约束无法用普通不等式表达,可以引入10个0—1变量来标志各个铲位是否有产量。
(8)整数约束:当把问题作为整数规划模型时,流量xij除以154为非负整数。
(9)卡车数量约束:不超过20辆。
得到的一种模型为
(0)
s.t. (1)
(2)
(3)
(4)
(5)
(6)
. (7)
(8)
(9)
二.对最佳物流的结果进行派车—-第二层规划
这是组合优化中的一维背包模型,针对快速算法的要求,用启发式方法求近优解。
先用最佳物流修正Bij, 确定卡车一个班次中在这条路线上实际最多可以运行的次数。然后在以目标为出动总卡车数最少的各路线派车中,把各路线需要的卡车数 分成整数部分 和小数部分 ,进而可以分配任务让 辆车在i到j路线上,每辆往返运输Bij次。为了最后实现第二层规划的目标,只需联合处理所有的 时把这些小数组合成最少的整数卡车数。所需总卡车数的下界显然是 。如果某种派车方案恰好派出Y0辆车实现了所有的xij,则其即为第二层目标意义下近优解的最优方案。但由于有联合派车而总公里数不一定最小,故不一定为全局意义下的最佳方案。
出动卡车数最少,意味着出动的卡车利用率要最大。容易出现的一辆卡车为两个以上路线服务的联合派车,可分为两种情况:⑴有共同铲位(或卸点)的联合派车(V字形或更复杂);⑵不同铲位且不同卸点之间的联合派车(Z字形或四边形或更复杂)。派车方案的空载路线应尽量安排在第一层规划的最佳物流路线内,即使有的超出也要保证超出的路程总和最小,这样才能实现重载路程最小且使卡车空载路程也最小。而情况⑴的路线不会超出第一层规划的最佳物流路线。只有情况⑵才会有一部分不在第一层规划的最佳物流路线内。
问题:各路线都是小数的需车数,如何组合使总卡车数最少且如果出现情况⑵时空载超出部分总和尽量小。
如果存在情况⑴,则整体考虑情况⑴形路线需要的卡车数相加的和,先确定和的整数部分的车数并对这些车分配任务(任务的形式为在哪条路线上运几趟,再在哪条路线上运几趟,等等)。之后已无情况⑴了,再对各个小数进行组合相加试探,在所有动用卡车数最少的情况中,选择超出第一层最佳物流路线的总和最小的,即为最后派车方案,再对这些车分配任务。由于属情况⑴的为多数,故后面的组合搜索比较简单,常常只有一两个任务属情况⑵。
根据最后派车方案,回代计算出各车辆在各路线的运输次数。由于整数部分已分配完运输次数,小数乘以对应路线上的Bij取整计算出小数部分对应的具体运输次数.
进一步计算出实际总运量与矿石和岩石的产量。
三、求解过程:
(一) 第一层规划
求解前面给出的整数规划模型可计算出最优值为总运量85628.62吨公里。
最佳物流相对应的各个路线上的最佳运输车次:
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 13 54 11
倒装场Ⅰ 42 43
岩场 70 15
岩石漏 81 43
倒装场Ⅱ 13 2 70
(二)第二层规划
用具体流量计算卡车在各个路线上一个班次最多可以运行的次数:(即修正的Bij)
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 15 15 18 19 23 24 26 29 45 35
倒装场Ⅰ 30 39 30 37 36 27 33 28 22 21
岩场 14 15 15 17 21 20 26 26 37 46
岩石漏 44 31 35 30 24 25 18 20 16 14
倒装场Ⅱ 18 19 20 22 27 24 42 32 36 47
根据最佳物流,计算各路线上需要的卡车数(实数):
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 0.867 1.862 0.314
倒装场Ⅰ 1.077 1.162
岩场 1.892 0.326
岩石漏 1.841 1.229
倒装场Ⅱ 0.684 0.1 1.489
所有路线所需卡车数(实数)的和为 12.843。
各路线上需要的整数卡车数为7(这些卡车在一个班次内一直在固定路线上运输):
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 1
倒装场Ⅰ 1 1
岩场 1
岩石漏 1 1
倒装场Ⅱ 1
各个路线上的联合派车的卡车数为6,方案为:
第1辆:从铲位1、3到岩石漏,铲位1到岩石漏运37车,铲位3到岩石漏运5车。
第2辆:从铲位9、10到岩场,铲位9到岩场运33车,铲位10到岩场运5车。
第3辆:从铲位8、10到矿石漏,铲位8到矿石漏运22车,铲位10到矿石漏运6车。
第4辆:从铲位2、8到矿石漏,铲位2到矿石漏运13车,铲位8到矿石漏运3车。
第5辆:从铲位2、4到倒装场Ⅰ和从铲位2、3到倒装场Ⅱ,铲位2到倒装场Ⅰ运3车,铲位4到倒装场Ⅰ运6车,铲位2到倒装场Ⅱ运13车,铲位3到倒装场Ⅱ运1车。
第6辆:从铲位3到倒装场Ⅱ、岩石漏和从铲位10到矿石漏、岩场、倒装场Ⅱ,铲位3到岩石漏运3车,铲位3到倒装场Ⅱ运1车,铲位10到倒装场Ⅱ运33车,铲位10到岩场运10车,铲位10到矿石漏运5车。
对这道题的数据来说,只有共卸点或共铲位情况,没出现⑵型联合派车。
铲位1、2、3、4、8、9、10处各放置一台电铲。
一共使用13辆卡车;总运量为85628.62吨公里;
岩石产量为32186吨;矿石产量为38192吨。
问题二、利用现有车辆运输而获得最大的产量
一. 在卡车不等待条件下利用现有车辆资源运输,获得最大的产量(岩石产量优先,在产量相同的情况下,取总运量最小的解)
卡车不发生等待,即每条路线的车不能过多,否则将增加空载耗油,同时降低设备利用率,所以不一定全部车都用。
第二问的解法和第一问类似,也采用多目标二层规划算法,第一层用整数线性规划,第二层用求派出车辆数最小的启发式方法。下面是第二问解法与第一问的不同之处。
(一)第一层目标函数的确定
由于岩石产量优先,第一层规划计算前先做目标函数取岩石产量最大( )的试算,来判断岩石产量是否能达到上限 。如果是,把岩石的总产量取最大值,即 加入到约束条件中,以矿石产量最大为目标;如果否,把岩石产量最大做为目标,求解最佳物流。为了求岩石(或矿石)产量最大的同时,保证总运量(吨公里)较小,还不影响轻重顺序,运量的加权系数很小。如 (10)
或 (11)
为目标函数。
(二)第一层约束条件的确定
以(10)或(11)为目标,(1)至(9)为约束求解。
第一层规划采用结合线性规划来求解整数规划:
(1)在现有条件下岩石产量能否达到上限
以岩石产量最大为目标函数试算整数线性规划,可得岩石卸点总产量达到了约束上限。
下面用岩石产量达到上限为约束,矿石产量最大为目标函数求解最佳物流。
(2)计算整数线性规划,以得到最大矿石产量及最佳物流
由于这个整数规划的复杂性,所以必须考虑快速算法。
先求解去掉整数约束的相应的线性规划,目标值为341.2807车次。由于求的是整数线性规划,矿石的最大产量(车次)必然应为一整数。因为线性规划的最优解是整数规划最优解的上界,逐个减一地依次求“矿石产量等于比342小的整数”加到约束条件中,目标为总运量最小的整数规划。第一个出现可行解的规划的最优解必为原整数规划的最优解,且总运量最小。由于等式约束造成可行域的减小,运算量已大幅度减少。
把矿石卸点的最大产量为341车次作为约束条件加入到整数线性规划中,没有可行解。
把矿石卸点的最大产量为340车次作为约束条件加入到整数线性规划中,得出的结果如下,即为所求。
最佳物流相对应的各个路线上的最佳运输车次为:
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 38 24 18
倒装场Ⅰ 16 54 22 68
岩场 12 74 74
岩石漏 80 28 32 20
倒装场Ⅱ 14 4 60 22
第二层规划仍用启发式算法:
用实际流量,计算卡车在各个路线上一个班次最多可以运行的次数:
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 15 16 18 19 23 24 26 29 44 36
倒装场Ⅰ 29 39 29 37 36 27 33 28 22 21
岩场 14 15 15 17 21 20 26 26 37 45
岩石漏 44 30 35 30 24 25 18 20 16 14
倒装场Ⅱ 18 19 20 22 27 24 42 31 36 47
根据最佳物流计算各路线上需要的卡车数:
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 2.1111 0.8276 0.4091
倒装场Ⅰ 0.5517 1.3846 0.7586 1.8378
岩场 0.4615 2 1.6444
岩石漏 1.8182 0.9333 0.9143 0.6667
倒装场Ⅱ 0.7368 0.2 1.9355 0.4681
所有路线所需卡车数(实数)的和,为19.66。
各路线上需要的整数卡车数为9(这些卡车在一个班次内一直在固定路线上运输):
铲位1 铲位2 铲位3 铲位4 铲位5 铲位6 铲位7 铲位8 铲位9 铲位10
矿石漏 2
倒装场Ⅰ 1 1
岩场 2 1
岩石漏 1
倒装场Ⅱ 1
各个路线上的联合派车的卡车数为11,方案为:
第1辆:从铲位1到倒装场Ⅰ、岩石漏,铲位1到倒装场Ⅰ运5车,到岩石漏运36车。
第2辆:从铲位2到倒装场Ⅰ、岩石漏,铲位2到倒装场Ⅰ运2车,到岩石漏运28车。
第3辆:从铲位3到倒装场Ⅰ、岩石漏,铲位3到倒装场Ⅰ运2车,到岩石漏运32车。
第4辆:从铲位4到倒装场Ⅰ、岩石漏,铲位4到倒装场Ⅰ运12车,到岩石漏运20车。
第5辆:从铲位1、2、3到倒装场Ⅰ,铲位1到倒装场Ⅰ运11车,铲位2到倒装场Ⅰ运13车,铲位3到倒装场Ⅰ运8车。
第6辆:从铲位3、4到倒装场Ⅰ和铲位3到矿石漏,铲位3到倒装场Ⅰ运12车,铲位4到倒装场Ⅰ运19车,铲位3到矿石漏运1车。
第7辆:从铲位2、3、8到倒装场Ⅱ,铲位2到倒装场Ⅱ运14车,铲位3到倒装场Ⅱ运4车,铲位8到倒装场Ⅱ运1车。
第8辆:从铲位8、10到倒装场Ⅱ,铲位8到倒装场Ⅱ运28车,铲位10到倒装场Ⅱ运4车。
第9辆:从铲位10到岩场、倒装场Ⅱ,铲位10到岩场运27车,铲位10到倒装场Ⅱ运18车。
第10辆:从铲位8、9到岩场和从铲位8到矿石漏,铲位8到岩场运12车,铲位10到岩场运2车,铲位8到矿石漏运14车。
第11辆:从铲位3、8、9到矿石漏,铲位3到矿石漏运1车,铲位8到矿石漏运10车,铲位9到矿石漏运18车。
铲位1、2、3、4、8、9、10处各放置一台电铲。
一共使用20辆卡车;总运量为142385.3吨公里;
岩石产量为49280吨;矿石产量为52360吨。
附注:本题主要难点
1.各路线上安排的车辆数应有一个最大值限制。
如果在一个路线上的车辆过多就会出现题意不允许发生的等待情况。如果这一点没想到,后面的结果很难正确。
2.从铲位i到卸点j的流量为154吨的整数倍。
这题的核心问题之一是如何用近似算法求解NPC问题。整数规划的现有解法不是快速算法,无法保证在任何数据下都能在短时间内算完。对这题的数据而言,从竞赛的时间和软件上来说最优解是求不出来的,必须想办法巧妙地使用规划软件减少运行整数规划耗费的时间。比如:求解相对应的线性规划,最优解取整,如果还可行作为整数规划的近优解,等等。
3.怎样处理在10个铲位安排7台电铲的问题。
4.关于派车算法中的一些问题。
派车问题本质为组合优化问题,学生需要想办法快速得到最优解或近优解。可能还要考虑卡车的初始位置和终止位置,特别是两种联合派车时。另外由于装车造成的延时可能造成后面的卡车运行的次数与前面的卡车不同。
5.多目标规划的处理方法;二层规划的处理方法。
以上是解题过程中不好解决的难点问题,看答卷怎么处理的是评阅时的重点。评卷时不能只看数值结果,更重要的是模型和方法,还有结果的可行性。
|