数学建模 码头货轮集装箱装卸的优化问题.docx
《数学建模 码头货轮集装箱装卸的优化问题.docx》由会员分享,可在线阅读,更多相关《数学建模 码头货轮集装箱装卸的优化问题.docx(22页珍藏版)》请在冰豆网上搜索。
![数学建模 码头货轮集装箱装卸的优化问题.docx](https://file1.bdocx.com/fileroot1/2023-2/6/4cc23656-4c92-4a73-b7c3-233064e5a154/4cc23656-4c92-4a73-b7c3-233064e5a1541.gif)
数学建模码头货轮集装箱装卸的优化问题
码头货轮集装箱装卸的优化问题
摘要
集装箱“货币化”已成为发展趋势,而港口发展渐渐滞后于集装箱的吞吐量,研究集装箱装卸的优化问题能有效扩大港口生产力,提高港口经济效益。
本文将建立集卡线路规划模型和岸桥、集卡与龙门吊协同优化模型,通过禁忌搜索算法进行求解,并通过青岛港的数据对模型进行实证分析。
对于提高装卸效率,降低装卸成本这一问题,我们将其分解为线路规划、协同优化和模型检验三个子问题进行分析。
针对问题一,我们建立了集卡线路规划模型。
通过对青岛港前湾港集装箱码头(QQCT)的航拍图和雷达图进行分析,画出了码头泊位到堆场的平面图,按照相应的比例尺,得到实际码头与堆场间的距离、各堆场间的相互距离。
通过集卡行驶的速度,计算得到集卡从码头到堆场的时间、集卡在各堆场之间行驶的相互时间和集卡从堆场返回码头的时间。
集卡在运输过程中,要尽量减少空集卡的行驶,即运送集装箱返回的途中携带需要装运到船上的集装箱。
利用第一阶段的禁忌搜索算法,当所需装卸集装箱位置确定后,最短的行驶路线也就计算出来。
针对问题二,我们建立了桥吊、集卡和龙门吊的协同优化模型。
问题一计算的集卡最佳线路分配结果,继续作为桥吊、集卡和龙门吊协同优化的条件。
第二阶段的禁忌搜素算法分析出最合适的桥吊、集卡与龙门吊的比例,桥吊在不等待集卡的情况下效率高。
通过协同优化,得到最高效率的设备分配比例。
针对问题三,我们汇总了附件中所有集装箱的装卸数据,对模型进行检验分析。
以青岛前湾港区为例,通过带入实际数据,得到如下比例关系,即桥吊:
集卡:
龙门吊为2:
10:
5。
2辆桥吊工作时配备10辆集卡,5辆轮式龙门吊;3辆桥吊工作时配备15辆集卡,7辆龙门吊;如此分配使相对成本与效率达到最大化。
本文的亮点在于:
利用港口的雷达图和航拍图,绘制了港口的分布平面图,分析更贴近实际;以集卡线路规划为突破口,并以此为条件,建立了以集装箱类型为依据的集卡一站式服务(岸桥到堆场的线路标准化);对数据的分类处理,使计算简洁;协同了集卡、桥吊、龙门吊,采用两个阶段的禁忌搜索算法,将集装箱的装与卸混合在一起计算,比原来对集卡、桥吊,集卡、龙门吊等部分优化更加贴近实际,大大提升了港口的运行效率,并且降低的了成本。
关键词:
集卡,桥吊,龙门吊,线路规划,协同优化,禁忌搜索算法
一、问题重述
1.1问题的背景
集装箱码头是海陆联运的枢纽站,在各个经济体的贸易中都占据着举足轻重的地位。
港口的装卸货能力在一定程度上代表着一个港口的生产力,在集装箱吞吐量不断增大而港口发展渐渐滞后的现状下,研究港口集装箱装卸的优化问题就显得尤为重要。
影响集装箱装卸效率的因素主要有装卸设备的硬件配备和在现有设备基础上对各方资源的优化协调程度。
本文将以青岛港前湾港集装箱码头(QQCT)为现实背景,来考虑码头货轮集装箱装卸的优化问题。
QQCT坐落于青岛胶州湾的前港港区,具有水深域阔、不淤不冻、避风浪的优良码头条件,可全天候停靠第六代及以上集装箱船舶。
泊位长度3400米,泊位水深-17.5米,巷道水深-15米,堆场面积225平方米。
该港区配备了世界上最先进、最大型的新型桥吊,可装卸目前世界上最大型的超巴拿马型集装箱船。
1.2要解决的问题
本问将以QQCT为原型,利用卸船箱和装船箱的数据,简化港口条件,仅在投入2个和3个QC时,构造数学模型,分别使相应成本尽量小,效率尽量高。
为方便解决问题,我们将问题进行了分解,主要包括以下几个问题:
(1)基于集装箱类型的集卡线路一站式优化(线路标准化);
(2)岸桥、集卡和龙门吊的协同调度;
(3)以青岛港的实际数据对模型进行检验分析。
二、问题分析
2.1概论
针对以青岛港为原型的码头集装箱装卸优化问题,我们首先通过对青岛港实地情况的分析,将目标港进一步细化,选择了四个港中最专业的集装箱装运码头,即青岛前湾集装箱码头。
通过航拍图(图1)和雷达图(图2),我们初步拿到QQCT的港口分布图,并基于此,我们绘制了港口分布立体图(图3)和平面图(图4),来使分析更加具体和形象。
图1航拍图图2雷达图
(来源:
必应地图截图)
图3立体图
(来源:
XX图片)
图4平面图(泊位确定)
2.2问题一的分析
这是一个线路规划问题,通过对港口平面图、集卡运行速度、桥吊和龙门吊的工作效率分析,得到了集卡的最优工作路线。
问题的特点在于集卡在运输进口、过境等集装箱时是联合搭配的。
问题的难点在于堆场与堆场之间可以相互通行,集卡返回码头时携带需要装船的集装箱,而且需要卸的集装箱往往和需要装的集装箱数目不一致,加大了理解和计算的难度。
2.3问题二的分析
这是一个资源优化问题,通过对桥吊、集卡、龙门吊三个因素进行综合考虑,得到三种资源的最优配比。
问题的特点在于问题一的结论影响问题二的分析,桥吊、集卡、龙门吊之间的相互调配相互制约,但存在整体最优的情况。
问题的难点是在各因素相互制约的条件下寻找最优解,合理有效利用第一问的数据。
2.4问题三的分析
这是一个检验分析问题,通过对QQCT集装箱装卸的数据进行分析整理,对模型进行实证检验,以证明模型的可靠性和实用性。
问题的特点是将实际数据带入模型确定2个桥吊和3个桥吊最佳的资源配比。
问题的难点在于6000多个数据的带入存在一定的技术困难和理解误差,会影响分析结果的合理性。
三、模型假设
1、船一旦靠岸只选择一个泊位,且泊位距各堆场和最近;
2、每个集装箱的装或卸只进行单次作业,作业完成后不再考虑;
3、各堆场位置已知,由集装箱的种类确定;
4、集装箱装卸次序已知;
5、只考虑一条船的情况,装箱与卸箱都是同一艘货轮;
6、假设2个20寸的集装箱视为1个40寸的集装箱;
7、将需装运的集装箱种类简化为过境箱、进口箱和出口箱。
四、符号说明
符号
符号说明
轮船
进口、过境集装箱集合
出口集装箱集合
进口、过境集装箱数量
出口集装箱的数量
进口、过境集装箱所存堆场的集合
出口集装箱所存堆场的集合
进口、过境集装箱所存堆场位置
出口集装箱所存堆场位置
集卡从船到堆场
行驶所用的时间
集卡从堆场
行驶到
所用的时间
集卡从堆场
到船所行驶的时间
集卡是否经过路线
桥吊集合
卸箱桥吊
装箱桥吊
集卡集合
集卡
桥吊完成一个集装箱装卸的时间
龙门吊完成一个集装箱装卸的时间
符号
符号说明
集装箱在船的位置
集装箱从
到
所用的时间
卸箱工作完成的时间
装箱工作完成的时间
无限大的数
箱
由桥吊
运送后,
与
由桥吊
完成,
是
前面的任务,则
箱
被集卡
送,则
箱
与箱
均由集卡
运送,
在
前,
五、模型建立与求解
5.1集卡线路优化模型
5.1.1模型分析
通过查阅资料,我们将集卡的工作流程抽象如下(图5)
图5集卡工作流程图
5.1.2模型建立
集卡的空驾驶距离之和最小:
(1)
堆场对应具体货物,如下为集卡调度模型的表示:
(2)
约束条件:
时,
(5)
现实生活中往往进口箱与出口箱数量不一致,加入虚拟进、出口箱集合(virtual)
时,
(6)
(7)
时,
(8)
(9)
其中,
(1)式为集卡行驶距离最短的的表达式;
(2)式为行驶时间最小的目标函数;
(3)、(4)式为进口、过境箱与出口箱数目相等的一一搭配;
(5)式为变量的约束条件;
(6)、(7)式进口、过境箱数大于出口箱数的虚拟搭配;
(8)、(9)式进口、过境箱数小于出口箱数的虚拟搭配。
5.1.3模型求解
算法求解逻辑:
桥吊的工作效率为1min/箱,集卡的行驶速度为20km/h,桥吊与集卡的比例为1:
5,桥吊到堆场的距离在200—1500之间随机产生。
计算五个不同脚本的数据。
利用MATLAB2014a计算,两阶段禁忌搜索算法计算结果如下表1:
卸箱数
桥吊数
集卡行驶距离(km)
作业时间(min)
计算时间
初始解
禁忌算法
初始解
禁忌算法
100/1
179.88
161.30
198
181
0.6
400/1
711.37
630.36
776
745
8.1
1000/1
2900.67
2839.80
3010
2977
32.2
2000/1
4117.83
4001.56
3771
3705
43.3
2500/1
4779.10
4712.51
4710
4651
53.0
表1两阶段禁忌搜索算法
从结果上看,每个桥吊工作1000到2000个效率最高。
若低于1000箱每个桥吊会造成桥吊等待集卡,导致工作效率大大下降。
若箱数高于2000箱每个桥吊,则造成集卡等待桥吊,造成码头拥挤,次序混乱,结果不令人满意。
5.2岸桥、集卡和龙门吊的协同优化模型
5.2.1模型的分析
以模型一集卡路线的最优化结果作为模型二的条件,综合考虑桥吊、集卡、龙门吊的情况,协同考虑混合装卸,利用禁忌搜索第二阶段的桥吊调度阶段最优解。
5.2.2模型建立
(10)
约束条件:
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
其中,(11)~(14)式说明每个集装箱都有一辆集卡、桥吊进行操作;
(15)~(18)式为桥吊与龙门吊对每个集装箱操作先后次序一定且唯一;
(19)~(20)式为桥吊完成一次集装箱作业的时间关系;
(21)~(22)式为集卡完成一次集装箱作业的时间关系;
(23)式为集装箱约束条件,如i,j集装箱由同一辆集装箱运输;
(24)式为集卡装卸集装箱的顺序;
(25)式为变量取值范围的约束。
5.2.3模型求解
求解算法逻辑:
桥吊的工作效率为1min/箱,集卡的行驶速度为20km/h,桥吊与集卡的比例为1:
5,桥吊到堆场的距离在200—1500之间随机产生。
5000个集装箱等待装卸。
利用MATLAB2014a计算,混合装卸调度模型的结果如表2:
桥吊/集卡
交叉作业
集卡行驶距离(km)
总装卸时间(min)
6/18
是
12950
3815
否
8280
3635
6/24
是
12865
3655
否
8185
3510
6/30
是
12485
3615
否
8125
3485
表2混合装卸调度计算结果
5.3模型的检验分析
根据码头集装箱装卸的数据表,我们得到如下信息(表3)
项目
编号
1
2
3
4
5
6
7
8
9
卸箱量
6
1
3449
2233
15
8
5
20
0
装箱量
0
0
610
387
0
3
0
381
3
种类
FH
FR
GP
HC
HH
OT
RF
RH
0H
表3装、卸船箱在堆场的分布
(数据来源:
两个表格数据汇总)
青岛前湾港区设配数据如表4:
设备效率
设备种类
装集装箱(个/min)
卸集装箱(个/min)
桥吊
1
1
龙门吊
0.5
0.5
表4青岛前湾港设配数据
集卡从桥吊运送集装箱到各堆场的行驶时间如下表5:
堆场号
1
2
3
4
5
6
7
8
9
送箱时间(单位:
min/次)
4.21
3.66
2.51
1.66
1.66
2.51
3.36
4.21
5.06
表5集卡从桥吊运送集装箱到各堆场的时间
集卡从i堆场到j堆场的单次行驶时间如表6(单位:
min/次):
堆场
1
2
3
4
5
6
7
8
9
1
0
3.85
4.70
5.55
8.40
9.25
10.10
10.95
11.80
2
3.85
0
3.85
4.7
5.55
8.4
9.25
10.10
10.95
3
4.70
3.85
0
3.85
4.70
5.55
8.40
9.25
10.10
4
5.55
4.70
3.85
0
3.85
4.70
5.55
8.40
9.25
5
8.40
5.55
4.70
3.85
0
3.85
4.70
5.55
8.40
6
9.25
8.40
5.55
4.70
3.85
0
3.85
4.70
5.55
7
10.10
9.25
8.40
5.55
4.70
3.85
0
3.85
4.70
8
10.95
10.10
9.25
8.40
5.55
4.70
3.85
0
3.85
9
11.80
10.95
10.0
9.25
8.40
5.55
4.70
3.85
0
表6集卡从i堆场到j堆场的单次行驶时间
每个集卡可以装1个40寸集装箱,2个20寸集装箱。
利用模型一、二的算法,带入进行数据进行算法合理性检验。
利用MATLAB2014a计算结果如下表7
桥吊/集卡
交叉作业
集卡行驶距离(km)
总装卸时间(min)
6/18
是
18648
5493
否
11923
5234
6/24
是
15438
4386
否
9882
4214
6/30
是
14982
4338
否
9750
4182
表7模型求解结果
当题目中所给轮船拥有2辆桥吊的时候,10辆集卡,5辆轮式龙门吊可以达到预期效率,拥有3辆桥吊的时候,15辆集卡,7辆轮式龙门吊可以高效完成装卸任务。
题目中所给轮船巨大,完成任务时2辆桥吊最佳效率需要3.6天可以完成装卸任务,3辆桥吊时需要2.9天完成装卸任务,若加上运输时间,此次轮船的作业时间会太长。
建议增加桥吊、集卡、龙门吊的数量以便48小时内完成装卸和运输任务,方便港口的运行。
六、模型评价
6.1模型优点
本模型采用两阶段的禁忌搜索算法,搜索范围以及精度都有很大提高,计算过程清晰,题目数据处理采用分类汇总的方法,大大简化了计算难度。
第一阶段禁忌搜索从集卡调度入手,精确分析得出集卡在当集装箱装卸次序已知的情况下的最佳行驶路线,即一旦装卸的集装箱确定,就可以程序化进行路线分配,大大减少了集卡运送集装箱的总路程。
第一阶段集卡调度的计算结果作为第二阶段禁忌搜索的条件,使模型全局考虑桥吊、集卡、龙门吊的协同调度,达到了在装卸运输成本一定的情况下,效率最高的设备搭配方式。
采取混合装卸模型,更加贴近实际,算得最佳的桥吊、集卡、龙门吊之间的比例,方便工作人员进行设备分配的决策。
模型最后计算出了装卸、运输总体最小时间,为在集装箱数目确定的情况下,投入设备的多少取得最佳效益的决策提供了参考。
6.2模型缺点
本模型的集卡调度为静态调度模型,即每辆集卡满载且只可携带1个40寸,2个20寸的集装箱,实际生活中可根据需要,集卡既可以满载,也可不满载,集卡的调度静态调度存在缺陷。
本模型只考虑了一条船的装卸作业,实际可能有多艘轮船需要完成装卸作业,轮船选择泊位时候过于简化。
6.3模型改进
将静态集卡调度改为集卡可加一节车厢,可以满载或不满载,根据实际情况确定的动态集卡调度模型。
考虑多艘轮船的装卸,根据多艘轮船上的集装箱装卸次序,可用设备数量分配,综合考虑定下若轮船选择不同泊位,确定同一个泊位不同船只的先后装卸次序。
这样模型会更加贴近实际生产生活,方便决策者的决策。
七、参考文献
[1]钱继锋.集装箱码头“岸桥—集卡—堆场”作业计划的优化[D].北京交通大学,2014.
[2]冯春焕.集装箱码头泊位—岸桥—集卡调度优化研究[D].大连海事大学,2011.
[3]单浩.集装箱码头泊位、岸桥和集卡协同调度优化研究[D].大连海事大学,2013.
[4]曾庆成,杨忠振,陆靖.集装箱码头同贝同步装卸调度模型与算法[J].交通运输工程学报,2010,01:
88-93.
[5]曾庆成,胡祥培,杨忠振.集装箱码头泊位分配-装卸桥调度干扰管理模型[J].系统工程理论与实践,2010,11:
2026-2035.
[6]曾庆成.集装箱码头装卸作业集成调度模型与方法[D].大连海事大学,2008.
[7]韩晓龙,牟少莉.基于CHC算法的集卡与岸桥协调调度优化问题[J].武汉理工大学学报(信息与管理工程版),2014,02:
233-236+245.
附录
%%%禁忌搜索算法解决装卸混合调度问题
function[BestShortcut,theMinDistance]=TabuSearch
clear;
clc;
Clist=[‘装卸集装箱的贝位号……’];
ContinaerNum=size(Clist,1);%问题的规模,即集装箱数目
dislist=zeros(ContinaerNum);
fori=1:
ContinaerNum
forj=1:
ContinaerNum
dislist(i,j)=((Clist(i,1)-Clist(j,1))^2+(Clist(i,2)-Clist(j,2))^2)^0.5;
end
end
TabuList=zeros(ContinaerNum);%(tabulist)
TabuLength=round((ContinaerNum*(ContinaerNum-1)/2)^0.5);%禁忌长度(tabulength)
Candidates=200;%候选集的个数(全部领域解个数)
CandidateNum=zeros(Candidates,ContinaerNum);%候选解集合
S0=randperm(ContinaerNum);%随机产生初始解
BSF=S0;
BestL=Inf;
clf;
figure
(1);
stop=uicontrol('style','toggle','string'…
'stop','background','white');
tic;
p=1;
StopL=80*ContinaerNum;
whilepifCandidates>ContinaerNum*(ContinaerNum-1)/2
disp('候选解个数不大于n*(n-1)/2!
');
break;
end
ALong(p)=Fun(dislist,S0);
i=1;
A=zeros(Candidates,2);
whilei<=Candidates
M=ContinaerNum*rand(1,2);
M=ceil(M);
ifM
(1)~=M
(2)
A(i,1)=max(M
(1),M
(2));
A(i,2)=min(M
(1),M
(2));
ifi==1
isa=0;
else
forj=1:
i-1
ifA(i,1)==A(j,1)&&A(i,2)==A(j,2)
isa=1;
break;
else
isa=0;
end
end
end
if~isa
i=i+1;
else
end
else
end
end
BestCandidateNum=100;%保留前BestCandidateNum个最好候选解作为第二阶段的条件
BestCandidate=Inf*ones(BestCandidateNum,4);
F=zeros(1,Candidates);
fori=1:
Candidates
CandidateNum(i,:
)=S0;
CandidateNum(i,[A(i,2),A(i,1)])=S0([A(i,1),A(i,2)]);
F(i)=Fun(dislist,CandidateNum(i,:
));
ifi<=BestCandidateNum
BestCandidate(i,2)=F(i);
BestCandidate(i,1)=i;
BestCandidate(i,3)=S0(A(i,1));
BestCandidate(i,4)=S0(A(i,2));
else
forj=1:
BestCandidateNum
ifF(i)BestCandidate(j,2)=F(i);
BestCandidate(j,1)=i;
BestCandidate(j,3)=S0(A(i,1));
BestCandidate(j,4)=S0(A(i,2));
break;
end
end
end
end%对
BestCandidate
[JL,Index]=sort(BestCandidate(:
2));
SBest=BestCandidate(Index,:
);
BestCandidate=SBest;
ifBestCandidate(1,2)BestL=BestCandidate(1,2);
S0=CandidateNum(BestCandidate(1,1),:
);
BSF=S0;
form=1:
ContinaerNum
forn=1:
ContinaerNum
ifTabuList(m,n)~=0
TabuList(m,n)=TabuList(m,n)-1;
end
end
end
TabuList(BestCandidate(1,3),BestCandidate(1,4))=TabuLength;
else
fori=1:
BestCandidateNum
ifTabuList(BestCandidate(i,3),BestCandidate(i,4))==0
S0=CandidateNum(BestCandidate(i,1),:
);
form=1:
ContinaerNum
forn=1:
ContinaerNum
ifTabuList(m,n)~=0
TabuList(m,n)=TabuList(m,n)-1;
end
end
end
TabuList(BestCandidate(i,3),BestCandidate(i,4))=TabuLength;
break;
end
end
end
p=p+1;
ArrBestL(p)=BestL;%#ok
fori=1:
ContinaerNum-1