function [ makespanval] = calmakespan( pop,T,P )
[pqty,m]=size(T);
pstarttime=zeros(pqty,m);
pendtime=zeros(pqty,m);
mstarttime=zeros(pqty,m);
mendtime=zeros(pqty,m);
for t = 1:size(pop,2)
pseq=pop{t};
mqty=P(1); % mqty某一工序并行机器数量
msgroup = cell(1,mqty);
megroup = cell(1,mqty);
for i = 1:mqty % 安排第一阶段的第 1 轮加工工件
msgroup{i}(1,1)=0;
mstarttime(1,i)=0;
pstarttime(1,i)=0;
megroup{i}(1,1)=T(pseq(i),1);
mendtime(1,i)=T(pseq(i),1);
pendtime(1,i)=T(pseq(i),1);
mseq(1,i)=i;
end
if pqty>mqty % 安排第一阶段的第 2 轮及以后的加工工件(FCFS)
for i = mqty+1:pqty
min=megroup{1}(end);
minm=1;
if mqty>=2
for j =2:mqty
if min>megroup{j}(end)
minm=j;
min=megroup{j}(end);
end
end
end
msgroup{minm}(1,end+1)=min;
megroup{minm}(1,end+1)=msgroup{minm}(1,end)+T(pseq(i),1);
mseq(1,i)=minm;
mstarttime(1,i)=msgroup{minm}(1,end);
pstarttime(1,i)=msgroup{minm}(1,end);
mendtime(1,i)=mstarttime(1,i)+T(pseq(i),1);
pendtime(1,i)=pstarttime(1,i)+T(pseq(i),1);
end
end
for i = 2:m
mqty = P(i);
msgroup =cell(1,mqty);
megroup =cell(1,mqty);
mstarttime(i,:)=mendtime(i-1,:);
pstarttime(i,:)=pendtime(i-1,:);
mstwithpseq(1,:)=mstarttime(i,:);
mstwithpseq(2,:)=pseq;
temp = sortrows(mstwithpseq');
sortmatrix = temp';
for j = 1:mqty % 安排第二及后续阶段的第 1 轮加工工件(FCFS)
msgroup{j}(1,1)=sortmatrix(1,j);
megroup{j}(1,1)=msgroup{j}(1,1)+T(sortmatrix(2,j),i);
pos = find(pseq==sortmatrix(2,j));
mendtime(i,pos)=mstarttime(i,pos)+T(sortmatrix(2,j),i);
pendtime(i,pos)=pstarttime(i,pos)+T(sortmatrix(2,j),i);
mseq(i,j)=j;
end
if pqty > mqty % 安排第二及后续阶段的第 2 轮及以后的加工工件(FCFS)
for j = mqty+1:pqty
min = megroup{1}(end);
minm=1;
if mqty>=2
for k = 2:mqty
if min > megroup{k}(end)
minm=k;
min=megroup{k}(end);
end
end
end
pos = find(pseq==sortmatrix(2,j));
if min < pendtime(i-1,pos)
min = pendtime(i-1,pos);
end
msgroup{minm}(1,end+1)=min;
megroup{minm}(1,end+1)=msgroup{minm}(1,end)+T(sortmatrix(2,j),i);
mseq(i,j)=minm;
mstarttime(i,pos)=msgroup{minm}(1,end);
pstarttime(i,pos)=msgroup{minm}(1,end);
mendtime(i,pos)=mstarttime(i,pos)+T(sortmatrix(2,j),i);
pendtime(i,pos)=pstarttime(i,pos)+T(sortmatrix(2,j),i);
end
end
end
makespanval(t)=max(max(pendtime));
end
end
1_设备集成调度_混合流水车间_码头调度_matlab_车间调度
版权申诉
5星 · 超过95%的资源 138 浏览量
2021-09-11
06:33:59
上传
评论
收藏 5KB ZIP 举报
心梓
- 粉丝: 813
- 资源: 8057
最新资源
- WANGSHANGYINHANG-4.2.9.031406-android
- docker&docker-compose离线安装包(centos)
- 混淆矩阵(Confusion Matrix)是机器学习领域中一种常用的可视化工具4.txt
- 滑动窗口是一种流量控制技术,用于在数据传输过程中进行拥塞控制和流量调节4.txt
- Nacos如何支持服务发现和注册-基于词频统计的分析.txt
- 基于BP神经网络的PID控制算法-MATLAB实现
- :基于java打造的深度学习框架,帮助你快速搭建神经网络,实现模型推理与训练,引擎支持自动求导,多线程与GPU运算
- yolo人脸目标检测数据集
- 第九次作业(XY图,XY图显示,三维曲面,数字波形图)
- Unity3D版本游戏源码解压密码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈