💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
随着全球贸易的不断发展,港口作为货物交换的重要枢纽,其效率和运营管理变得越来越重要。多码头连续泊位分配是港口运营中的一个关键问题,它涉及到如何合理地安排船舶在不同码头的泊位,以最大化港口的吞吐量和减少船舶等待时间。
粒子群算法是一种基于群体智能的优化算法,通过模拟鸟群或鱼群的行为,寻找最优解。在多码头连续泊位分配优化中,可以利用粒子群算法来寻找最优的泊位分配方案。
具体而言,可以将每个泊位分配方案表示为一个粒子,通过不断调整粒子的位置和速度,使得粒子群逐渐收敛到最优解。在算法的迭代过程中,可以考虑如下因素来评估每个泊位分配方案的优劣:
1. 各个泊位的利用率:确保每个泊位都能充分利用,避免出现某些泊位过度拥挤而导致其他泊位空闲的情况。
2. 船舶等待时间:尽量减少船舶在港口等待的时间,提高港口的吞吐效率。
3. 泊位之间的冲突:避免不同泊位之间的船舶交叉或碰撞,确保港口运营的安全性。
通过不断优化粒子群的位置和速度,可以逐步找到最优的泊位分配方案,从而提高港口的运营效率和服务质量。在实际应用中,还可以结合其他优化算法或启发式算法来进一步提升算法的性能和效果。
海运占据了全球海上贸易的90%,而欧洲所有进出口货物中有74%是通过船运输的。根据联合国贸易和发展会议(UNCTAD)2021年关于海运的报告,全球集装箱贸易总量增长了45.45%,2010年的标准箱数量为1.1亿个,而到2021年增长至1.6亿个。尽管2020年由于疫情的影响导致集装箱交通量下降,但2021年集装箱交通量也有所增加。海上集装箱码头在满足日益增长的海运需求方面发挥着至关重要的作用。为了满足对海运集装箱码头的不断增长的需求,需要利用现代技术和基于优化的方法来优化它们的运营。由于这一实际需求,学术界和行业对于开发新颖高效的优化码头运营方法的兴趣日益增加。
在码头运营中,包括海上、陆上和编组场等三个基本操作。海上操作涉及对进入的船只进行装卸货物的过程,而编组场旨在存放所有进口集装箱以进行进一步处理(交付)。另一方面,陆上操作包括将内部(码头)和外部(当地)运输联系起来的活动。本研究解决了海上操作中最重要的决策问题之一,即泊位分配问题(BAP)。在泊位布局方面,码头的BAP可以是离散的、连续的或混合的。在离散的BAP中,泊位布局用于执行装卸货物的操作,整个码头被划分为若干个泊位。至于连续的BAP,到达的船只可以停泊在码头的任何地方,通常沿着编号位置。最后一种类型,混合BAP,结合了前两种布局的特点,即离散和连续。在问题类型上,BAP可以分为战略、战术和操作三种类型。在战略层面上,决策可以在一年到数年的时间范围内进行。这个更长的时间跨度包括一些决策,比如建立共享或专用的泊位。在战术层面上,决策是在一周到几个月的时间范围内进行的。在这个层面上可以处理的一些方面包括与相应工作配置文件配备码头起重机、战术修船厂模板、船舶之间的转运流等。操作层面涉及从一天到几天的决策。这些问题通常旨在最小化泊位空闲时间和集装箱船舶到达和离港的延误。本研究侧重于BAP的操作层面。
编辑
许多研究只涉及在单个码头上分配泊位,假设它形成一条直线,船只可以根据其长度和其他船只的位置停泊。例如,[11]提出了解决SQ-BAP的精确方法,[12]中使用了进化算法,[13]中则采用了基于元启发式的方法。然而,对于全球范围内的几个港口来说,这种假设并不现实,因为它们由多个独立的线段或码头组成。例如,塞浦路斯的利马索尔港有七个连续的泊位码头,如图1所示。考虑到多个码头为BAP增加了一个新的维度;除了为每个独立码头分配泊位位置和时间外,还需要解决将船只分配到各个码头的问题。这需要一个多空间-时间表示,如图2所示。
编辑
编辑
基于粒子群算法的多码头连续泊位分配优化研究
一、研究背景与意义
多码头连续泊位分配是港口运营中的关键问题,直接关系到港口的吞吐量、船舶等待时间及运营安全性。随着全球海运贸易量的持续增长,如何高效利用泊位资源、减少船舶等待时间成为港口运营的重要挑战。粒子群算法(Particle Swarm Optimization, PSO)作为一种基于群体智能的优化算法,通过模拟鸟群或鱼群的行为,能够在复杂解空间中高效搜索最优解,为多码头连续泊位分配问题提供了有效的解决方案。
二、问题描述与模型构建
- 问题描述
多码头连续泊位分配问题旨在将到达的船舶合理分配至不同码头的泊位,以最大化泊位利用率、减少船舶等待时间,并避免泊位间的冲突。该问题具有多维性、强约束性和高计算复杂度等特点,属于NP-hard问题。 - 模型假设
- 进港船舶数量、码头可用泊位数量已知。
- 船舶装卸过程不可中断,完成任务后泊位立即可用。
- 船舶的预计到达时间、离开时间、偏好泊位与码头已知。
- 延迟离港、非偏好泊位等带来的惩罚成本已知。
- 忽略天气等不确定因素。
- 数学模型
目标函数为最小化总成本,包括等待成本、装卸成本和惩罚成本:
mins∑(Cws⋅Tws+Chs⋅Ths+Cds⋅Tds+Ps)
其中,Tws为等待时间,Ths为装卸时间,Tds为延迟离港时间,Ps为非偏好泊位或码头的惩罚成本。
约束条件:
- 每艘船在任意时间只能停泊在一个泊位。
- 泊位间需保持安全距离和时间间隔。
- 船舶长度不超过码头岸线长度。
三、粒子群算法设计
- 粒子编码
每个粒子代表一个泊位分配方案,采用整数编码,包含船舶的靠泊时间、码头和位置信息。例如,对于5艘船舶,粒子编码为:
粒子=[t1,q1,b1,t2,q2,b2,…,t5,q5,b5]
其中,ti为靠泊时间,qi为码头编号,bi为泊位位置。
- 适应度函数
适应度函数为目标函数的倒数,即:
Fitness=1+Total Cost1
适应度值越大,表示分配方案越优。
- 参数设置
- 种群规模:400
- 最大迭代次数:1000
- 惯性权重 w:初始值为0.9,线性递减至0.4
- 学习因子 c1、c2:均为1.5
- 速度限制:Vmin=−10,Vmax=10
- 算法流程
- 初始化粒子群,随机生成初始位置和速度。
- 计算每个粒子的适应度值,记录个体最优 pBest 和全局最优 gBest。
- 迭代更新:
- 根据速度和位置更新公式调整粒子状态。
- 计算新位置的适应度值,更新 pBest 和 gBest。
- 终止条件:达到最大迭代次数或全局最优解收敛。
四、实验与结果分析
- 实验设置
- 船舶数量:40艘
- 码头数量:5个
- 规划时间:5天(120小时)
- 码头岸线长度:随机生成,满足船舶停靠需求。
- 数据生成
- 船舶长度、装卸时间、预期到达时间等参数通过随机生成器模拟。
- 成本参数(如等待成本、惩罚成本)根据实际港口运营数据设定。
- 结果分析
- 收敛性:算法在迭代初期快速收敛,后期逐渐稳定,表明惯性权重动态调整策略有效平衡了全局探索与局部开发。
- 泊位利用率:优化后泊位利用率显著提高,避免了某些泊位过度拥挤而其他泊位空闲的情况。
- 船舶等待时间:平均等待时间减少约30%,港口吞吐量提升显著。
- 冲突避免:通过约束条件确保泊位间安全距离和时间间隔,未出现船舶交叉或碰撞现象。
五、改进与优化方向
- 混合算法
结合其他优化算法(如遗传算法、模拟退火)或启发式规则,进一步提升算法性能。例如,在粒子群算法中引入局部搜索策略,增强局部开发能力。 - 动态调整
考虑船舶到港时间的动态性,设计动态泊位分配模型,实时调整分配方案以应对突发情况。 - 多目标优化
将港口运营中的其他目标(如能源消耗、碳排放)纳入优化框架,构建多目标泊位分配模型。
六、结论
基于粒子群算法的多码头连续泊位分配优化研究,通过模拟群体智能行为,有效解决了泊位分配中的多维性、强约束性和高计算复杂度问题。实验结果表明,该算法能够显著提高泊位利用率、减少船舶等待时间,并确保港口运营的安全性。未来研究可进一步探索混合算法、动态调整及多目标优化等方向,以应对更复杂的港口运营场景。
📚2 运行结果
编辑
编辑
部分代码:
%% 载入数据
costs = 'costs.xlsx'; % calling the cost file
costs = readtable(costs,'Range','A1:K2');
% cost包含计算目标函数的各种成本
% 即每小时的装卸费、每小时的等待成本、延迟离港成本、重叠成本、非期望到达时间惩罚成本、超过码头岸线的惩罚成本、、选中备选码头惩罚成本,非备选与首选码头惩罚成本
%% 随机生成船舶信息(包括船舶长度、首选码头、装卸时间、预期到达时间、靠泊位置)
ship_num=40; % 船舶数量
days=5; % 规划时间
hours=days*24; % 以小时计算
quays=5; % 码头数量 1-5
[DataTable]=Instances_generator(ship_num,hours, quays); % select this for random data
LoS=DataTable.vessellength';LoS=LoS+10; % 加上安全距离的船舶长度
LoW=DataTable.LoW; % 每个码头的岸线长度
PBP=DataTable.LowestCostBerthingPos_; % 船舶的首选靠泊位置
data.PBP=PBP;
PBQ=DataTable.PBQ; data.PBQ=PBQ; % 船舶的首选靠泊码头
AT_30min=DataTable.ArrivalTimeOfVessel*2; % 预期到达时间以30min来计算
dep_30min=DataTable.RequestedDep_Time*2; % 预期离开时间以30min来计算
pTime=DataTable.ProcessingTimeOfVessel*2; % 装卸时间
pTime=pTime+1;% safety time
data.AT=AT_30min; data.dep=dep_30min+2; data.pTime=pTime; data.LoS=LoS;% 整合
if max(PBQ)>1
[PBQ ABQ ABP]=PBP_PBQ_function(LoS, PBQ, data.AT, LoW); % 备选码头
data.ABQ=ABQ;
data.ABP=ABP;
else
data.ABQ=PBQ;
data.ABP=PBP;
end
%% 粒子群算法参数
Popsize = 400;
MaxIter = 1000;
VarMin=-10;
VarMax= 10;
w=1; % 惯性权重
wdamp=0.99; % w降率
c1=1.5; % 自我认知
c2=2.0; % 社会认知
nVar=length(data.AT)*3; % 3*船舶数的编码方式
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1] 张肇宝.基于改进蝙蝠