
本文共 6525 字,大约阅读时间需要 21 分钟。
建立露天矿优化模型解决问题
【摘要】
本文通过建立优化模型,分别针对原则一提出的总运输量最小,并且同时出动最少的车辆要求,和原则二提出的要求利用现有车辆运输,获得最大的产量要求,解决了露天矿生产的车辆安排问题与线路问题。
针对原则一,先求总运量(吨公里)最小,不考虑卡车数量的多少,求出满足卸点的产量要求的总运量最小由运输成本最小的要求,建立总运量最少模型,根据分层序列法简化程序,归纳约束条件,得到一个可行的算法。根据实例,带入具体数值,利用Lingo软件,得出最小总运量为85628.62吨公里,在铲位1、2、3、4、8、9、10派出铲车使得运输成本最少。在总运量最少的前提下,建立派车模型,利用Lingo软件,得出最少需要13辆卡车。具体的路线的车辆安排见正文。
关键词:多目标规划模型 Lingo程序
- 问题重述
- 引言
如今钢铁工业是国家工业的基础之一,而铁矿是其主要原料基地。一个完整周期的采矿是“爆破-采石-分类-装车-运输-卸车-矿山处理”。
其中装车需用电动铲车(以下简称电铲),运输需要使用电动轮自卸卡车(以下简称卡车)来完成,由于工业具有较强经济效益性,故应有科学完善的调度方案来使经济效益,资源利用率最大化。
在已知矿石供需量及类别,硬件条件属性(铲车,卡车数量,载重,时速,铲位,卸点位置,道路属性,其他因素)的条件下,分别表示出满足原则一(总运量(吨公里)最小,出动最少卡车,成本最小)及原则二(在岩石产量优先的前提下,获最大产量时总运量最小的解)对应的快速算法及排班表。
- 本文需要解决的问题
本题在已知如下条件下,根据两个原则分别建立模型,求解出最优生产计划。
(1)每个铲位至多能安置一台电铲,电铲的平均装车时间为5分钟.电铲和卸点都不能同时为两辆及两辆以上卡车服务。
(2)尽量把矿石按矿石卸点需要的铁含量29.5%± 1% ,搭配起来送到卸点,搭配的量在一个班次(8小时)内满足品位限制即可。
(3)卡车的平均卸车时间为3分钟,载重量154吨,平均时速 28km/h 。卡车的耗油量很大,发动机点火和等待时所耗费的能量也是相当可观的。
(4)要求一个班次中只在开始工作时点火一次,原则上在安排时不应发生卡车等待的情况。
(5)卡车每次都是满载运输。
计划要求满足基本条件,出动几台电铲;分别在哪些铲位上;出动几辆卡车;分别在哪些路线上各运输多少次;在卡车不等待条件下满足产量和质量(品位)要求的基础上。还要满足下面两条原则之一:
1.总运量(吨公里)最小,同时出动最少的卡车,从而运输成本最小;
2.利用现有车辆运输,获得最大的产量(岩石产量优先;在产量相同的情况下,取总运量最小的解).
就两条原则分别建立数学模型,并给出一个班次生产计划的快速算法。针对下面的实例,给出具体的生产计划、相应的总运量及岩石和矿石产量。某露天矿有铲位10个,卸点5个,现有铲车7台,卡车20辆.各个卸点一个班次的产量要求:矿石漏1.2万吨、倒装场I 1.3万吨、倒装场II 1.3万吨、岩石漏1.9万吨、岩场1.3万吨。
- 问题分析
本文根据要求,通过建立优化模型,利用Lingo程序,分别针对原则一和原则二解决露天矿生产的车辆安排问题。
- 针对原则一
对于原则一,根据露天矿的车辆安排问题,要求总运量最小,并且同时出动最少的车辆。
要求总运量(吨公里)最小,不考虑卡车数量的多少,先求出满足卸点的产量要求的卡车数量,再求总运量最小,即每个铲位运往每个卸点的矿石或岩石的数量乘以每个铲位到每个卸点的距离,然后再求和,最后在约束条件的约束下求得最小值.
要求投入车辆最少,由题意可知要将7台电铲分布在10个铲位中,一个铲位最多只能存放一台电铲,先求出电铲摆放的铲位地点。我们把卡车来回一次计为一个周期,假设每个卡车大小质量都一样,且卡车每次运输的重量均一样,忽略运输过程中矿石或者岩石损耗的误差。在总运量最小的前提下计算投入车辆即可。 最后根据这两个方面的目标要求,加上基本条件约束,就可以得到使得总运输成本最小的方法及其结果。
- 针对原则二
原则二的分析过程类似于原则一,他们都是在满足基本露天矿车辆安排的基础上讨论的优化模型,首先要在现有车辆的基础上,考虑如何获得最大的产量;再在产量最大的基础上,保证岩石产量优先;最后考虑,如果产量相同,要取总运量最小的解,一步步求解,后面的目标变量是在满足前面一个目标变量的基础上讨论的。
但是在原则二中,每个目标需要考虑的前后关系是不同的,即重要性不同.这是和原则一不同的地方,需要重新考虑变量的定义,定义过程不同于原则一,考虑前后关系之后可以直接定义产量为变量,通过原则一模型的约束与题目所给出的要求定义约束。
- 符号说明
xij | 第i 个铲位到第j 个卸点的车辆运输次数 |
dij | 第i 个铲位到第j 个卸点的距离 |
fi | 代表第i 个铲位有无电铲的情况。fi =1则有一台电铲, fi =0则无电铲 |
ai | 第i 个铲位的矿石量 |
bi | 第i 个铲位的岩石量 |
ei | 第i 个铲位的铁含量 |
cj | 第j 个卸点的产量要求量 |
lk | 第k 辆车是否参与运输任务 |
hij | 第i 个铲位到第j 个卸点所需完成运输任务的次数 |
- 模型假设
- 假设铲车在卸点卸货时不停止卸货动作;
- 假设一个铲车只存在于一个铲位中
- 假设卡车装货物时不需要等待时间;
- 假设每辆卡车每次都是满载运输,装载量均为154吨;
- 假设卡车因改变运输线路而产生的时间忽略不计;
- 假设在运输过程中,矿石和岩石没有损失或损失的质量忽略不计;
- 假设卡车在一个班次中只在开始工作时点火一次,所以在安排时不发生卡车等待的情况;
- 假设卡车的运输矿石与岩石的路线可以转移;
- 假设电铲和卡车在一个班次的时间内都正常工作,不存在突发状况;
- 假设卡车的掉头时间忽略不计;
- 假设卡车空车与满载时的时速都为28km/h
- 假设每辆卡车相同的,运输时间都没有差异
- 假设电铲和卡车在一个班次(8 小时)中连续工作,不发生故障等意外状况
- 假设对卸点的矿石品位限制(28.5%-30.5%) 由不同铲位运来的不同含铁量的矿石混合而成,岩石不能掺入矿石
- 假设车辆更换运输路线的时间不计。
- 模型建立与求解
1.针对原则一建立优化模型
对于原则一,根据露天矿的车辆安排问题,要求总运输量最小,并且同时出动最少的车辆。按照以下两个方面建立优化模型
1.1要求总运量最小,不考虑卡车使用的数量,建立总运量最小模型。
已知总运量等于卡车装载矿石或岩石与卡车从铲位到达卸点的距离相乘可以得到以下数学模型。
目标函数:
经过排序整理后得到dij
5.26 | 1.9 | 5.89 | 0.64 | 4.42 |
5.19 | 0.99 | 5.61 | 1.76 | 3.86 |
4.21 | 1.9 | 5.61 | 1.27 | 3.72 |
4 | 1.13 | 4.56 | 1.83 | 3.16 |
2.95 | 1.27 | 3.51 | 2.74 | 2.25 |
2.74 | 2.25 | 3.65 | 2.6 | 2.81 |
2.46 | 1.48 | 2.46 | 4.21 | 0.78 |
1.9 | 2.04 | 2.46 | 3.72 | 1.62 |
0.64 | 3.09 | 1.06 | 5.05 | 1.27 |
1.27 | 3.51 | 0.57 | 6.1 | 0.5 |
1.1.1在已知总运量最小情况下,计算卡车使用数量
Miny=i=110k=120xijk
s.t
1.1.2约束条件
(1)第i 个铲位的矿石量对运输量的约束
(2)第i 个铲位的岩石量对运输量的约束
(3)一个班次内第i 个铲位的最大装车次数的约束
- 第i 卸点的产量要求的约束
对矿石:
对岩石:
(5)“0-1”变量的约束
由题意可知,每i 个铲位最多只能存在1个电铲,考虑到铲位存放电铲数量的约束可以进行“0-1”变量的设置
(6)矿石卸点铁含量的约束
对所有矿石卸点,还有质量(品位)要求,即矿石卸点一个班次内矿石总的铁含量要求为29.5%±1% 。
28.5%≤i=110j=130.0154xiji=110j=130.0154xij100%ei≤30.5%
1.1.3模型的建立与求解
Min z=i=110j=15154dijxij
1.1.4具体结果:
首先先求出电铲的分配问题,由题意可知要将7台电铲分布在10个铲位中,一个铲位最多只能存放一台电铲。通过上述的模型使用Lingo求解可以得出,7台电铲分别摆放在铲位1,2,3,4,8,9,10中,下列图标为卡车从铲位去往的卸点及次数
表一:卡车从铲车去往卸点及其次数
卡车抵达的铲位与卸点 | 卡车去往的次数 |
铲位1à岩石漏 | 81 |
铲位2à矿石漏 | 13 |
铲位2à倒装场Ⅰ | 42 |
铲位2à倒装场Ⅱ | 13 |
铲位3à倒装场Ⅱ | 2 |
铲位3à岩石漏 | 43 |
铲位4à倒装场Ⅰ | 43 |
铲位8à矿石漏 | 54 |
铲位9à岩场 | 70 |
铲位10à矿石漏 | 11 |
铲位10à倒装场Ⅱ | 70 |
铲位10à岩场 | 15 |
图一:卡车从铲位到卸点直观图
1.2派车模型
在总运量最小的情况下完成运输任务所需要的车辆最少为目标建立派车模型
目标函数:
Min z=k=120lk
1.2.1约束条件
(1)“0-1”变量的约束
考虑到卡车一天行驶过程中耗油量过多造成的损失,则需要对第i 个铲位到达第j 个卸点是否派送lk 辆卡车进行“0-1”变量约束,具体约束如下:
lk∈0,1 (k=1,2….20)
(2)一个班次内卡车工作时间的约束
由题意可知,卡车的驾驶速度为28km/h,装车时间为5分钟,卸车时间为3分钟,如果卡车参与运输任务那么在一个班次内一辆卡车工作的时间不得超过8小时,具体约束如下:
i=110j=15860yijk+2dijvyijk≤8lk (i=1,2…10;j=1,2…5;k=1,2…20)
(3)运输路线上对任务量的约束
在第i 个铲位到第j 个卸点的路线上,所有卡车运输的次数要大于等于在第i 个铲位到第j 个卸点的路线上所需要任务量,具体约束如下:
k=120yijk≥hij (i=1,2…10;j=1,2…5;k=1,2…20)
(4)整数与小数的约束
通过现实状况可知车辆的数量不得为小数,具体约束如下:
yijk∈N* (i=1,2…10;j=1,2…5;k=1,2….10)
1.2.2模型二的建立与求解
Min z=k=120lk
i=110j=15860yijk+2dijvyijk≤8lk (i=1,2…10;j=1,2…5;k=1,2…20)k=120yijk≥hij (i=1,2…10;j=1,2…5;k=1,2…20)lk∈0,1 (k=1,2….20)yijk∈N* (i=1,2…10;j=1,2…5;k=1,2….10)
1.2.3具体结果:
表二:卡车分配表
卡车号数 | 铲位 | 卸点 | 运输次数 |
1 | 8 | 矿石漏 | 29 |
2 | 2 | 矿石漏 | 2 |
8 | 矿石漏 | 10 | |
10 | 倒装场Ⅱ | 23 | |
3 | 1 | 岩石漏 | 30 |
10 | 岩场 | 15 | |
4 | 1 | 岩石漏 | 44 |
5 | 1 | 岩石漏 | 7 |
2 | 倒装场Ⅰ | 29 | |
3 | 倒装场Ⅰ | 2 | |
6 | 2 | 倒装场Ⅰ | 13 |
2 | 倒装场Ⅱ | 13 | |
7 | 9 | 岩场 | 38 |
8 | 9 | 岩场 | 32 |
10 | 4 | 倒装场Ⅰ | 37 |
11 | 2 | 矿石漏 | 9 |
3 | 岩石漏 | 8 | |
4 | 倒装场Ⅰ | 6 | |
12 | 3 | 岩石漏 | 35 |
16 | 2 | 矿石漏 | 2 |
8 | 矿石漏 | 15 | |
10 | 矿石漏 | 11 | |
20 | 10 | 倒装场Ⅱ | 47 |
如上述Lingo求解的图标答案可知线路铲位1到岩石漏安排3辆车号数分别为3,4,5;线路铲位2到矿石漏安排3辆车,号数分别为2,11,16;线路铲位2到倒装场Ⅰ安排1辆车,号数为6;线路铲位2到倒装场Ⅱ安排1辆车,号数为6;线路铲位3到倒装场Ⅰ安排1辆车,号数为5;线路铲位3到岩石漏安排2辆车,号数分别为11,12;线路铲位4到倒装场Ⅰ安排2辆车,号数分别为10,11;线路铲位8到矿石漏安排3辆车,号数分别为1,2,16;线路铲位9到岩场安排2辆车,号数分别为7,8;线路铲位10到矿石漏安排1辆车,号数为16;线路铲位10到倒装场Ⅱ安排2辆车,号数分别为2,20;线路铲位10到岩场安排1辆车,号数为3。
2.原则二
1.1原则二的分析过程类似于原则一,他们都是在满足基本露天矿车辆安排的基础上讨论的优化模型,通过原则一可以知道总运量最小时车辆的安排方式,在此优化模型的基础上要使产量最大化再加入新的变量与约束条件建立新型优化下
关于产量最大的目标函数:
max Z=j=15i=1100.0154xij
在产量最大的前提下,需要岩石产量优先
j=15i=1100.0154xij≥3.2
如果产量相同,要取总运量最小的解
min z=j=15i=1100.0154xijdij
1.3模型的建立与求解
Max Z=j=15i=1100.0154xij (i=1,2…10;j=1,2…5)
- 模型的优点与推广
1.模型的优点
优点:
①排车方案lingo程序计算速度快,且便于计算机程序实现;
②对于每辆车都存在有具体的方案,可操作性强。
附录
原则一
总运量最小模型的lingo程序代码
sets:
aa/1..10/:a,b,f,e;
bb/1..5/:c;
cc(aa,bb):x,d;
endsets
data:
a=9500,10500,10000,10500,11000,12500,10500,13000,13500,12500;
b=12500,11000,13500,10500,11500,13500,10500,11500,13500,12500;
c=12000,13000,13000,19000,13000;
e=0.3,0.28,0.29,0.32,0.31,0.33,0.32,0.31,0.33,0.31;
d=@ole('D:\数模\路程(2).xlsx','lc');
enddata
min=@sum(cc(i,j):154*d(i,j)*x(i,j));
@for(aa(i):@sum(bb(j):x(i,j))<=96);
@for(aa(i):@sum(bb(j)|j#lt#4:154*x(i,j))<=a(i)*f(i));
@for(aa(i):@sum(bb(j)|j#gt#3:154*x(i,j))<=b(i)*f(i));
@for(bb(j)|j#lt#4:@sum(aa(i):154*x(i,j))>=c(j));
@for(bb(j)|j#gt#3:@sum(aa(i):154*x(i,j))>=c(j));
@sum(aa(i):f(i))<=7;
@for(bb(j)|j#lt#4:@sum(aa(i):154*x(i,j)*e(i))>=0.285*@sum(aa(i):154*x(i,j)));
@for(bb(j)|j#lt#4:@sum(aa(i):154*x(i,j)*e(i))<=0.305*@sum(aa(i):154*x(i,j)));
@for(aa(i):@bin(f(i)));
@for(cc(i,j):@gin(x(i,j)));
派车模型的Lingo程序代码
sets:
aa/1..10/:;
bb/1..5/:;
cc/1..20/:l;
dd(aa,bb):d,h;
ee(aa,bb,cc):y;
endsets
data:
v=28;
h=@ole('D:\math\cc.xlsx','rr');
d=@ole('D:\math\cc.xlsx','dd');
enddata
min=@sum(cc(k):l(k));
@for(cc(k):@sum(dd(i,j):2/15*y(i,j,k)+2*d(i,j)*y(i,j,k)/v)<=8*l(k));
@for(dd(i,j):@sum(cc(k):y(i,j,k))>=h(i,j));
@for(cc(k):@bin(l(k)));
@for(ee(i,j,k):@gin(y(i,j,k)));
转载地址:https://blog.csdn.net/m0_62355031/article/details/125523798 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关于作者
