【泊位调度】基于NSGA-II求解船舶靠泊优化问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

在码头岸线资源有限的情况下,合理的泊位调度方案能有效缩短船舶在港时间,提高码头生产效率,进而增加码头自身竞争力.泊位调度问题是集装箱码头生产组织优化的基础问题,其任务是,在泊位数量,作业岸桥数,码头前方堆场规模等有限的资源条件下,确定各船舶的靠泊位置和靠泊时间,从而合理的安排岸桥进行装卸作业,以确保所选定的生产目标最优.由于班轮运输方式的广泛运用,集装箱码头的调度管理人员便可根据船公司到港之前提供的船期表和装卸箱量等信息,提前制定泊位调度计划,保证了船舶进港作业的有序性.目前,集装箱码头泊位调度理论研究大多采用面向静态生产环境的调度优化方法,即考虑调度计划执行过程中,内外部环境不发生变化.然而在实际生产中,泊位调度经常要面临非常复杂的不确定性环境,这就使得这种静态调度优化方法经常难以满足实际生产需要.本文基于NSGA-II求解船舶靠泊优化问题​。

⛄ 部分代码

clc

clear all

close all

pop = 500; %种群数量

gen = 10000; %迭代次数

M = 3; %?标函数数量

V = 20; %维度(决策变量的个数)

min_range=zeros(1,V);

max_range=ones(1,V);

chromosome = Chushihuaqunti2(pop, M, V);%初始化种群

chromosome = non_domination_sort_mod1(chromosome, M, V);%对初始化种群进行非支配快速排序和拥挤度计算

for i = 1 : gen

    pool = round(pop/2);%round() 四舍五入取整交配池??

    tour = 2;%竞标赛参赛选手个数

    parent_chromosome = tournament_selection(chromosome, pool, tour);%竞标赛选择适合繁殖的父代

    mu = 20;%交叉和变异算法的分布指数

    mum = 20;

    offspring_chromosome = genetic_operator(parent_chromosome,M, V, mu, mum, min_range, max_range);%进行交叉变异产生子代该代码中使用模拟二进制交叉

    [main_pop,~] = size(chromosome);%父代种群的大小?

    [offspring_pop,~] = size(offspring_chromosome);%子代种群的大小??

    clear temp

    intermediate_chromosome(1:main_pop,:) = chromosome;

    intermediate_chromosome(main_pop + 1 : main_pop + offspring_pop,1 : M+V) = offspring_chromosome;%合并父代种群和子代种群

    intermediate_chromosome = non_domination_sort_mod1(intermediate_chromosome, M, V);%对新的种群进行快速非支配排序

    chromosome = replace_chromosome(intermediate_chromosome, M, V, pop);%选择合并种群中前N个优先的个体组成新种群

    if ~mod(i,100)

        clc;

        fprintf('%d generations completed\n',i);

    end

end

if M == 2

    plot(chromosome(:,V + 1),chromosome(:,V + 2),'*');

    xlabel('f_1'); ylabel('f_2');

    title('Pareto Optimal Front');

elseif M == 3

    plot3(chromosome(:,V + 1),chromosome(:,V + 2),chromosome(:,V + 3),'*');

    xlabel('f_1'); ylabel('f_2'); zlabel('f_3');

    title('Pareto Optimal Surface');

end

⛄ 运行结果

⛄ 参考文献

[1] 曹慧. 基于蚁群算法的集装箱码头船舶调度优化问题研究[D]. 大连海事大学, 2012.

[2] 吴暖, 王诺, 于安琪,等. 基于柔性靠泊的港口疏船调度多目标优化及最优解选择[J]. 计算机集成制造系统, 2021.

[3] Huang Jingguang, 黄景光, Wu Wei,等. 基于NSGA-Ⅱ多目标风电-抽水蓄能优化调度研究[C]// 中国电机工程学会2017年全国电工理论与新技术学术年会. 中国电机工程学会中国电工技术学会, 2017.

[4] 杨春霞, 王诺. 基于SPEA2算法的泊位调度多目标优化[J]. 工业工程与管理, 2010(3):5.

[5] 刘晓娟, 闫海兰. 基于NSGA2算法的并行机多目标调度问题研究[J]. 物联网技术, 2013, 3(10):2.

[6] 蔡芸, 孙国正. 同时求解泊位分配及岸桥调度问题的仿真优化方法[C]// 全国博士生学术论坛. 2005.

[7] 禹美凤. 基于柔性靠泊的集装箱港口泊位和岸桥的调度优化[D]. 浙江工业大学, 2014.

[8] 禹美凤. 基于柔性靠泊的集装箱港口泊位和岸桥的调度优化[D]. 浙江工业大学, 2013.

[9] 季彬. 水利枢纽船舶过闸—泊位联合调度模型与方法研究[D]. 华中科技大学.

[10] 林治国. 基于滚动窗口的集装箱码头泊位动态调度优化研究[D]. 大连海事大学, 2010.

⛳️ 代码获取关注我

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

❤️ 关注我领取海量matlab电子书和数学建模资料

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
NSGA-II(Nondominated Sorting Genetic Algorithm II)是一种多目标优化算法,可用于求解水库调度问题。水库调度问题是通过合理安排水库的放水策略,以满足下游需水量、发电需求和洪水调节等多个目标。 在使用NSGA-II求解水库调度问题时,需要将问题转化为一个多目标优化问题。常见的目标包括:最大化发电量、最小化下游缺水量、最小化下游洪水峰值等。同时,还需考虑到水库的运行约束,如保证水位在合理范围内、避免过快过慢的调节等。 NSGA-II算法的基本步骤如下: 1. 初始化种群:随机生成一组初始解,代表水库的放水策略。 2. 评估适应度:根据每个解所对应的目标函数值,计算适应度。 3. 非支配排序:根据解的适应度值,进行非支配排序,将解划分为不同的等级。 4. 拥挤度计算:根据解所在的等级和其在该等级中的密度,计算每个解的拥挤度。 5. 选择操作:根据非支配排序和拥挤度计算结果,选择出下一代的解。 6. 交叉操作:对选择出的解进行交叉操作,生成新的解。 7. 变异操作:对新生成的解进行变异操作,引入新的搜索空间。 8. 终止条件判断:判断是否满足终止条件,如果不满足则返回步骤3,否则结束算法。 通过多次迭代,NSGA-II算法可以逐步优化水库调度策略,找到一组最优解的近似集合,供决策者选择最合适的方案。需要注意的是,NSGA-II算法的结果并不是唯一的,而是一组可能的最优解,决策者需要根据具体情况进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值