基于遗传算法的柔性生产调度研究(Matlab代码实现)

欢迎来到本博客 ❤️ ❤️


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


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

本文目录如下:
目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码实现

1 概述

摘要:针对传统作业车间调度存在加工设备功能单一、加工工序对应设备固定的问题,提出一种新型混合改进的遗传算法进行求解优化。首先,采用一种新的编码思想构建双层染色体编码结构,强化初始种群质量,提高种群的多样性;并给出相应的选择操作设计,交叉操作采用单段交叉、两段交叉和三段交叉机制,改善算法全局搜索能力,变异操作引入种群分割的思想,按照适应度将种群分割成两部分,并赋予不同的变异概率,实行两种变异机制,以提高算法的局部搜索能力;添加新的检查操作以增强优化过程的可行性。最后采用MATLAB编程,通过一个6个工件、每工件6道工序的应用实例进行测试,验证了该方法切实可行有效。

关键词:

遗传算法;柔性车间调度;优化;检查;

2 运行结果

基于遗传算法的柔性生产调度研究(Matlab代码实现)_第1张图片
基于遗传算法的柔性生产调度研究(Matlab代码实现)_第2张图片

基于遗传算法的柔性生产调度研究(Matlab代码实现)_第3张图片
基于遗传算法的柔性生产调度研究(Matlab代码实现)_第4张图片

基于遗传算法的柔性生产调度研究(Matlab代码实现)_第5张图片
基于遗传算法的柔性生产调度研究(Matlab代码实现)_第6张图片

部分代码:

%输入机器开始时间,结束时间,最大完工时间

%画出一个甘特图

function draw_gantt(code)

global mac_num;

global job;

[max_mac_time,mac_serial,mac_start,mac_end]=decode(code);

nb_mac=sum(mac_num);

axis([0,max_mac_time+5,0,nb_mac+0.5]);%x轴 y轴的范围

set(gca,'xtick',0:2:max_mac_time+5) ;%x轴的增长幅度

set(gca,'ytick',0:1:nb_mac+0.5) ;%y轴的增长幅度

xlabel('加工时间','FontName','微软雅黑','Color','b','FontSize',10)

ylabel('机器号','FontName','微软雅黑','Color','b','FontSize',10,'Rotation',90)

title('解码甘特图','fontname','微软雅黑','Color','b','FontSize',16);%图形的标题

color=rand(length(job),3);%生成随机的颜色,并使其方差和大于0.3,防止出现多个相似颜色

while sum(var(color))<0.26

color=rand(length(job),3);

end

for i=1:nb_mac

for j=1:length(mac_start{i})

rec=[mac_start{i}(j),i-0.3,mac_end{i}(j)-mac_start{i}(j),0.6];%设置矩形的位置,[矩形左下顶点的x坐标,y坐标,长度,高度]

txt=sprintf('p(%d,%d)=%3.1f',mac_serial{i}(j,1),mac_serial{i}(j,2),mac_end{i}(j)-mac_start{i}(j));%将工序号,加工时间连城字符串

rectangle('Position',rec,'LineWidth',0.5,'LineStyle','-','FaceColor',color(mac_serial{i}(j,1),:));%画每个矩形

text(mac_start{i}(j)+0.2,i,txt,'FontWeight','Bold','FontSize',10);%在矩形上标注工序号,加工时间

end

end

3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]郭庆,张明路,孙立新等.基于遗传算法的柔性车间调度优化[J].科学技术与工程,2020,20(29):11931-11936.

4 Matlab代码实现

你可能感兴趣的:(车间调度,matlab,数学建模,开发语言)