【生产调度】基于matlab遗传算法求解柔性生产调度(FJSP)问题【含Matlab源码 1780期】

   日期:2024-12-26    作者:xianshi321 移动:http://mip.riyuangf.com/mobile/quote/30117.html

⛳️座右铭:行百里者,半于九十。
更多Matlab车间调度仿真内容点击👇
①付费专栏Matlab车间调度(初级版
②Matlab车间调度 (进阶版

【生产调度】基于matlab遗传算法求解柔性生产调度(FJSP)问题【含Matlab源码 1780期】

⛳️关注CSDN海神之光,更多资源等你来

相比于传统作业车间,柔性车间作业调度的调度任务不仅要确定工序的加工顺序,而且需要确定每道工序的机器分配。比如,确定了O21->O22->O11->O23->O12->O13的加工顺序,我们并不能相应工序的加工机器,所以还应该确定对应的[M1、M3、M5]->[M1、M2、M3]->[M1、M2、M3、M4、M5]->[M2、M3、M4、M5]->[M2、M4]->[M1、M3、M4、M5]的机器组合。调度的目的还是总的完工时间最短(也可以是其他目标,比如机器最大负荷最短、总的机器负荷最短

clear
global mac_num;
global job;
global mac;
gnmax=50;%最大代数
pc=0.8; %交叉概率
pm=0.2; %变异概率
[job,mac_num]=read_data(‘data.xlsx’);
mac=creat_machine(mac_num);
pop_size=10;
pop=inipop(pop_size);
best_time=[];
mean_time=[];
best_pop=[];
generation=1;
while generation<=gnmax
father_pool=choose_father(pop,pop_size);
child_cross=cross_pox(father_pool,pc);
child_mut=mutation_exchange(child_cross,pm);
[~,best_time(end+1),best_pop_n,f]=choose_prob(child_mut);
mean_time(end+1)=mean(f);
best_pop(end+1,:)=child_mut(best_pop_n,:);
generation=generation+1;
end
[minst_time,minst_n]=min(best_time);
draw_gantt(best_pop(minst_n,:));
figure(2);
plot(best_time,‘r’); hold on;
plot(mean_time,‘b’);grid;
title(‘搜索过程’);
legend(‘最优解’,‘平均解’);
fprintf(‘遗传算法得到的最短时间:%.2f ’,minst_time);
function child=cross_pox(father_pool,pc)
global job;
job_n=length(job);
job_length=size(father_pool,2)/2;
child=zeros(size(father_pool));
for i=1:2:size(father_pool,1)
if rand<pc
%job段交叉
cross_job=find(rand(1,job_n)>0.5);
while length(cross_job)job_n || isempty(cross_job)%交叉的工件集合为全部工件,则相当于二者互换位置,无交叉工件则相当于没有交叉
cross_job=find(rand(1,job_n)>0.5);
end
k1=1;%指针,k1用于child1从father2中取编码
k2=1;
for j=1:job_length
if ismember(father_pool(i,j),cross_job)
child(i,j)=father_pool(i,j);
else
while ismember(father_pool(i+1,k1),cross_job)
k1=k1+1;
end
child(i,j)=father_pool(i+1,k1);
k1=k1+1;
end
if ismember(father_pool(i+1,j),cross_job)
child(i+1,j)=father_pool(i+1,j);
else
while ismember(father_pool(i,k2),cross_job)
k2=k2+1;
end
child(i+1,j)=father_pool(i,k2);
k2=k2+1;
end
end
%mac段交叉
% mac_cross=rand(1,job_length)>0.5;
% child(i,mac_cross)=father_pool(i,mac_cross);
% child(i+1,mac_cross)=father_pool(i+1,mac_cross);
% child(i,mac_cross)=father_pool(i+1,mac_cross
0);
% child(i+1,mac_cross)=father_pool(i,mac_cross==0);
for j=job_length+1:job_length*2
if rand>0.5
child(i,j)=father_pool(i,j);
child(i+1,j)=father_pool(i+1,j);
else
child(i,j)=father_pool(i+1,j);
child(i+1,j)=father_pool(i,j);
end
end
else
child(i,:)=father_pool(i,:);
child(i+1,:)=father_pool(i+1,:);
end
end

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号