欢迎光临散文网 会员登陆 & 注册

【优化调度】基于遗传算法求解码头泊位分配调度优化问题含Matlab源码

2022-04-28 07:38 作者:Matlab工程师  | 我要投稿

1 简介

港口市场不断开放的同时,对港口的要求也更高,港口间的竞争更加激烈,由于运输船舶及港口相关设备价格昂贵,以及运输船舶在港口停泊时间的长短直接影响到港口的经济效益和社会效益,因此需要对港口物流系统进行更加合理有效的规划,以提高港口营运效率,降低费用和成本,从而吸引较多船舶挂靠,产生良好的经济效益.很多码头都尽力通过高效的资源利用率来降低成本,这些资源包括人力资源,泊位,集装箱码头,集装箱起重机和各种各样的码头设备,在所有这些资源中,泊位是最重要的资源,一个好的泊位计划能提高顾客的满意度和港口通过率,从而使港口获得较高的利润. 本文在分析研究港口服务系统特征的基础上,以所有船舶的总在港时间最短为目标,建立了港口泊位调度数学模型,根据模型的特点和各参数的物理意义及其相互关系导出了泊位调度模型必须满足的约束条件,该模型充分考虑了港口泊位调度的随机特性和其它影响因素,能够比较客观地反映港口泊位调度的实际运行状况. 

2 部分代码

%Name:Berth Allocation.mclearclcclose all%% 遗传参数popsize=100;                                                                %群体大小MAXGEN=50;                                                                %最大遗传代数vesselNum=7;                                                               %船舶数量berthNum=2;                                                                %泊位数量chromlength=8;                                                             %染色体长度Pc=0.6;                                                                    %交叉概率Pm=0.001;                                                                  %变异概率GGAP=0.9;                                                                  %选择概率%% 初始化种群pop=initGroup(popsize,chromlength,vesselNum,berthNum);                     %随机产生初始群体%% 输出随机解的泊位调度方案和船舶在港总时间disp('初始种群中的泊位调度方案:')OutputPath(pop);                                         %画出路径函数disp('初始随机解的船舶在港总时间:')objvalue=calobjvalue(pop,popsize,vesselNum,berthNum); disp(objvalue(1))disp('-------------------------------------------------------------')%% 优化gen=0;figure;hold on;box on  %display the boundary of the current axes.xlim([0,MAXGEN])                %x在坐标轴的范围title('优化过程')xlabel('迭代次数')ylabel('船舶在港时间每次迭代的最优解')objvalue=calobjvalue(pop,popsize,vesselNum,berthNum);     %计算目标函数值preobjvalue=min(objvalue);while gen<MAXGEN     %% 计算适应度     objvalue=calobjvalue(pop,popsize,vesselNum,berthNum);     %计算目标函数值     line([gen-1,gen],[preobjvalue,min(objvalue)]);pause(0.0001) %line([X1 X2],[Y1 Y2],S); %点A(X1,Y1)和点B(X2 Y2)之间画一条直线,S为其它属性(颜色,线的粗细等)     preobjvalue=min(objvalue);     fitvalue=fitness(objvalue,popsize);                       %计算适应度函数     %% 选择     newpop=Selection(pop,fitvalue,GGAP);     pop1=newpop;                                              %pop1为选择过后的种群     %% 交叉     [newpop]=Crossover(pop1,Pc);     pop2=newpop;                                              %pop2为交叉后的种群     %% 变异     [newpop]=Mutate(pop2,Pm);     %% 重插入子代     pop=Reins(pop,newpop,objvalue);     gen=gen+1;end[minobjvalue,minIndex]=min(objvalue);   %[Y,U]=min(A):返回行向量Y和U,Y向量记录A的每列的最小值,U向量记录每列最小值的行号minpop=pop(minIndex,:);%% 输出最优解的泊位调度方案和船舶在港总时间disp('最优解的泊位调度方案:')OutputPath(minpop);disp('最优解的船舶在港总时间:')disp(min(objvalue));disp('-------------------------------------------------------------')

3 仿真结果

4 参考文献

[1]张燕涛. 基于遗传算法的泊位调度问题优化研究及仿真[D]. 武汉理工大学, 2005.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。


【优化调度】基于遗传算法求解码头泊位分配调度优化问题含Matlab源码的评论 (共 条)

分享到微博请遵守国家法律