【车间调度】基于遗传算法实现柔性车间调度问题附Matlab代码
【车间调度】基于遗传算法实现柔性车间调度问题附Matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
针对传统作业车间调度存在加工设备功能单一,加工工序对应设备固定的问题,采用遗传算法进行求解优化.通过一个8个工件,每工件8道工序的应用实例进行测试,验证了该方法切实可行有效.
2 部分代码
%-------------------------计算各染色体的适应度-----------------------
function
[fit,Y1,Y2,Y3] = object(p,TN,N,P,m,n) %计算各染色体的适应度
fit
=
zeros(N,1);
Y1
=
cell(N,1);
Y2
=
cell(N,1);
Y3
=
cell(N,1);
for
j = 1:N
Y1{j}
=
zeros(m,n);
Y2{j}
=
zeros(m,n);
Y3{j}
=
zeros(m,n);
end
for
w = 1:N
X
=
p{w}; %变量初始化
T
=
TN{w};
[m,n]
=
size(X);
Y1p
=
zeros(m,n);
Y2p
=
zeros(m,n);
Y3p
=
zeros(m,n);
Q1
=
zeros(m,1); %计算第一道工序的安排
Q2
=
zeros(m,1);
R
=
X(:,1); %取出第一道工序的机器号
Q3
=
floor(R); %向下取整得到各工件在第一道工序使用的机器号
for
k =1:P(1) %第一道工序的时间安排,k为机器号
pos
=
find(Q3 == k); %在Q3中取出用机器k加工的工件编号
lenpos
=
length(pos); %使用机器k的工件数量
if
lenpos == 0
end
if
lenpos >= 1
Q1(pos(1))
=
0;
Q2(pos(1))
=
Q1(pos(1)) + T(pos(1),1);
if
lenpos >= 2
for
j = 2:lenpos
Q1(pos(j))
=
Q2(pos(j-1));
Q2(pos(j))
=
Q1(pos(j)) + T(pos(j),1);
end
end
end
end
Y1p(
:
,1) = Q1;
Y2p(
:
,1) = Q2;
Y3p(
:
,1) = Q3;
for
k = 2:n %计算第2到n道工序的安排
Q1
=
zeros(m,1);
Q2
=
zeros(m,1);
R
=
X(:,k); %取出第k道工序的机器号
Q3
=
floor(R); %向下取整得到各工件在第k道工序使用的机器号
R1
=
X(:,k-1); %取出前一道工序的机器号
Q31
=
floor(R1); %向下取整得到各工件在前一道工序使用的机器号
for
i = 1:P(k) %第i道工序的时间安排,k为机器号
pos
=
find(Q3 == i);
lenpos
=
length(pos);
pos1
=
find(Q31 == i);
lenpos1
=
length(pos1);
if
lenpos == 0
end
if
lenpos >= 1
EndTime
=
Y2p(pos(1),k-1);
POS
=
zeros(1,lenpos1);
for
j = 1:lenpos1
POS(j)
=
Y2p(pos1(j),k-1);
end
EndTime1
=
max(POS);
if
EndTime1 > EndTime
EndTime
=
EndTime1;
else
EndTime
=
EndTime;
end
Q1(pos(1))
=
EndTime;
Q2(pos(1))
=
Q1(pos(1)) + T(pos(1),k-1);
if
lenpos >= 2
for
j = 2:lenpos
Q1(pos(j))
=
Y2p(pos(j),k-1); %前一道工序的结束时间
if
Q1(pos(j)) < Q2(pos(j-1))
Q1(pos(j))
=
Q2(pos(j-1));
else
Q1(pos(j))
=
Q1(pos(j));
end
Q2(pos(j))
=
Q1(pos(j)) + T(pos(j),k);
end
end
end
end
Y1p(
:
,k) = Q1;
Y2p(
:
,k) = Q2;
Y3p(
:
,k) = Q3;
end
Y2m
=
Y2p(:,n);
Y2m1
=
Y2p(:,n-1);
Zx
=
max(Y2m1);
Zp
=
max(Y2m);
if
Zx >Zp
Zp
=
Zx;
end
fit(w)
=
Zp;
Y1{w}
=
Y1p;
Y2{w}
=
Y2p;
Y3{w}
=
Y3p;
end
3 仿真结果
4 参考文献
[1]郭庆、张明路、孙立新、刘轩. 基于遗传算法的柔性车间调度优化[J]. 科学技术与工程, 2020, 20(29):6.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
