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

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、生产调度简介

1 车间调度定义
车间调度是指给定一个加工任务,根据已有的生产条件,对有限的系统资源进行分配,对产品的加工步骤进行安排,使得某项性能指标最优。在实际生产过程中,所涉及的约束条件主要有:机器的加工能力,机器的数量,加工的产品数量,产品的加工顺序,产品的交货时间,生产原料的数量,成本限制,机器故障,产品投产期等。考虑的性能指标主要有:产品交货时间最短,加工时间最短,生产周期最短,成本最少,设备利用率最高等,实际的生产过程一般要平衡多个性能指标[1]。
2 传统作业车间调度
传统作业车间带调度实例
在这里插入图片描述
有若干工件,每个工件有若干工序,有多个加工机器,但是每道工序只能在一台机器上加工。对应到上面表格中的实例就是,两个工件,工件J1有三道工序,工序Q11只能在M3上加工,加工时间是5小时。
约束是对于一个工件来说,工序的相对顺序不能变。O11->O12->O13。每时刻,每个工件只能在一台机器上加工;每个机器上只能有一个工件。
调度的任务则是安排出工序的加工顺序,加工顺序确定了,因为每道工序只有一台机器可用,加工的机器也就确定了。
调度的目的是总的完工时间最短(也可以是其他目标)。举个例子,比如确定了O21->O22->O11->O23->O12->O13的加工顺序之后,我们就可以根据加工机器的约束,计算出总的加工时间。
M2加工O21消耗6小时,工件J2当前加工时间6小时。
M1加工O22消耗9小时,工件J2当前加工时间6+9=15小时。
M3加工O11消耗5小时,工件J1当前加工时间5小时。
M4加工O23消耗7小时,工件J2加工时间15+7=22小时。
M1加工O12消耗11小时,但是要等M1加工完O22之后才开始加工O12,所以工件J1的当前加工时间为max(5,9)+11=20小时。
M5加工O13消耗8小时,工件J2加工时间20+8=28小时。
总的完工时间就是max(22,28)=28小时。

2 柔性作业车间调度
柔性作业车间带调度实例(参考自高亮老师论文
《改进遗传算法求解柔性作业车间调度问题》——机械工程学报)
在这里插入图片描述
相比于传统作业车间调度,柔性作业车间调度放宽了对加工机器的约束,更符合现实生产情况,每个工序可选加工机器变成了多个,可以由多个加工机器中的一个加工。比如上表中的实例,J1的O12工序可以选择M2和M4加工,加工时间分别是8小时和4小时,但是并不一定选择M4加工,最后得出来的总的完工时间就更短,所以,需要调度算法求解优化。

相比于传统作业车间,柔性车间作业调度的调度任务不仅要确定工序的加工顺序,而且需要确定每道工序的机器分配。比如,确定了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\n’,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

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

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 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海神之光

有机会获得赠送范围1份代码

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

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

打赏作者

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

抵扣说明:

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

余额充值