基于粒子群算法的多码头连续泊位分配优化研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、参考文献


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥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所示。

📚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] 张肇宝.基于改进蝙蝠算法的集装箱港口泊位与岸桥联合调度优化[D],2020.

[2] Aslam, S.; Michaelides, M.P.; Herodotou, H. Berth Allocation Considering Multiple Quays: A Practical Approach Using Cuckoo Search Optimization. J. Mar. Sci. Eng. 2023, 11, 1280. https://doi.org/10.3390/jmse11071280

🌈4 Matlab代码、数据、参考文献

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值