多作业多进程给定方案最大工作时间计算(修正版 机器阻塞版)
来源:互联网 发布:怎样彻底清除手机数据 编辑:程序博客网 时间:2024/06/06 17:56
华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/8/22
本文代码对应论文
内蒙古大学学报(自然科学版),2014年1月,第45卷第1期
求解作业车间调度问题的混合粒子群算法
function fitness=fitnessfunc(planList)% 计算一个方案的适应度global workTime; % 机器工作时间global machineList; %机器工作列表global row; % 数据行数 工件个数global col; % 数据列数 机器个数%% 计算每个机器工作量% machineTime=zeros(1,col);% workID=zeros(row,1);% for i=1:length(planList)% k=planList(i); %工件序号% workID(k)=workID(k)+1;% p=machineList(k,workID(k)); %机器序号% machineTime(p)=machineTime(p)+workTime(k,workID(k))+repairTime(k,workID(k));% end% fitness=max(machineTime);%% 计算机器最长需要时间workState=zeros(1,row);workTimes=zeros(1,row);machine(col)=struct('State',[],'workID',[]);machineWorkTimeLeft=zeros(1,col);machineOnTime=0; % 机器距离已经开始时间向量for i=1:row workState(i)=true; % 工件是否可被加工向量 workTimes(i)=0; % 工件已经加工次数向量endfor i=1:col machine(i).State=true; % 机器是否可用向量 machine(i).workID=0; % 机器加工的工件号 machineWorkTimeLeft(i)=inf; % 机器工作剩余时间向量endfor i=1:length(planList) stepvisited(i)=false;end%% 循环分配工件到可用机器while judgeToStopFunc(workTimes)==false for i=1:row % 工件是否可被加工向量 if workTimes(i)~=col workState(i)=true; % 加工次数不够的工件可被加工 else workState(i)=false; % 加工次数够的工件不可被加工 end end for j=1:col if machine(i).workID>0 % 正在机器上加工的工件不可被加工 workState(machine(i).workID)=false; end end for i=1:length(planList) if stepvisited(i)==false k=planList(i); %工件序号 p=machineList(k,workTimes(k)+1); %工件所需机器序号 if (workState(k)==true)&&(machine(p).State==true) stepvisited(i)=true; workTimes(k)=workTimes(k)+1; machineWorkTimeLeft(p)=workTime(k,workTimes(k)); machine(p).workID=k; end machine(p).State=false; workState(k)=false; end end Ptime=min(machineWorkTimeLeft); machineOnTime=machineOnTime+Ptime; machineWorkTimeLeft=machineWorkTimeLeft-Ptime; for i=1:col if machineWorkTimeLeft(i)==0 machineWorkTimeLeft(i)=inf; machine(i).State=true; machine(i).workID=0; end if machine(i).workID==0 machine(i).State=true; end endendfor i=1:col if machineWorkTimeLeft(i)==inf machineWorkTimeLeft(i)=0; endendmachineOnTime=machineOnTime+max(machineWorkTimeLeft);fitness=machineOnTime;
0 0
- 多作业多进程给定方案最大工作时间计算(修正版 机器阻塞版)
- 计算员工有效工作时间(C#版)
- 时间戳 计算 工作时间
- 电池容量工作时间如何计算
- 电池工作时间计算
- 并发 并行 同步 异步 多线程 多进程 阻塞 非阻塞
- Java计算工作小时数的方法(修正版)
- 使用mulitiprocessing 进行多进程非阻塞
- 多进程阻塞I/O服务器设计
- liunx 多进程不阻塞I/O
- 多进程开发IO阻塞问题
- [nginx] 异步非阻塞多进程模型
- 工作时间
- 工作时间
- 计算两个日期之间的工作时间
- 应用moment.js辅助计算工作时间
- 管理多个远程机器的方案
- 作业错误修正
- Javascritp client,offset,scroll的区别,这里只说width和height
- PHP程序员的技术成长规划
- 注册表编程
- yum install出现No more mirrors to try
- Google工程师解析Android系统架构
- 多作业多进程给定方案最大工作时间计算(修正版 机器阻塞版)
- collection view方法杂记
- VPS上配置NGINX+UWSGI+DJANGO+MYSQL
- open/read/write和fopen/fread/fwrite的区别
- g++编译选项
- 【iOS开发】根据图片透明度自定义UIButton实现
- WebService CXF学习(入门篇4):整合Spring框架
- DNS负载均衡技术
- Volley加载图片