一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【车间调度】基于matlab遗传算法求解置换流水车间调度问题【含Matalb源码 176期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、背景



算法设计
(一)
假设工件在机器上的加工顺序是相同的,同时假定各工件准备就绪,机器一开动就投入生产,开工时间为0,则最大完工时间等于最大流程时间。同时3台机器以上的流水车间调度是NP难问题,所以本文只考虑了2台、3台机器的情况,解决3台机器以上的问题方法也可运用人工智能算法,解的质量更高,但因该类算法需良好的软件编程能力,故本文不加探究。n个工件在m台机器上的加工顺序相同。工件在机器上的加工时间是给定的。问题的目标是求n个工件在每合机器上的最大完工时间等于最大流程时间。这种流水线调度问题要在满足以下两个约束条件的前提下,使得加工完所有
的工件所花的时间尽可能地少:
1、工件约束
每个工件在每台机器上恰好加工一次,每个工件在各机器上加工顺序相同。不失一般性,假设各工件按机
器1至m的顺序进行加工。各工件在各机器上的加工时间已知。
2、机器约束
每台机器在任何时刻至多加工一个工件,每台机器加工的各工件的顺序相同。
置换流水线调度问题实质是如何调整加工工件的序列,提高机器的利用率的问题,即在同一时刻正在加工的机攫数越多,机器利用率越大口根据该原则,我们根据下面规则安排
工件的加工顺序:
(l)在前面机器加工时间较短、后面机器加工时间较长的工件,安排在序列前。这样可以使得后面的机器尽快参加工作,并且后面的机器不需要作空等待,
(2)机器加工时间较为平均且加工时间较长的工件,安排在序列的中部。这样可以使得各个机器在中期的时候都能得到运作。
(3〕前面加工时间较长,后面加一〔时间较短的上件女排在序列尾部。这样使得前面的机器能“延迟”完工,后面的机器尽快完工。

三、部分源代码

function [Zp,Y1p,Y2p,Y3p,Xp,LC1,LC2]=JSPGA(M,N,Pm,T,P)
%  输入参数列表
%  M       遗传进化迭代次数
%  N       种群规模(取偶数)
%  Pm      变异概率
%  T       m×n的矩阵,存储m个工件n个工序的加工时间
%  P       1×n的向量,n个工序中,每一个工序所具有的机床数目
%  输出参数列表
%  Zp      最优的Makespan值
%  Y1p     最优方案中,各工件各工序的开始时刻,可根据它绘出甘特图
%  Y2p     最优方案中,各工件各工序的结束时刻,可根据它绘出甘特图
%  Y3p     最优方案中,各工件各工序使用的机器编号
%  Xp      最优决策变量的值,决策变量是一个实数编码的m×n矩阵
%  LC1     收敛曲线1,各代最优个体适应值的记录
%  LC2     收敛曲线2,各代群体平均适应值的记录
%  最后,程序还将绘出三副图片:两条收敛曲线图和甘特图(各工件的调度时序图)
%第一步:变量初始化
[m,n]=size(T);%m是总工件数,n是总工序数
Xp=zeros(m,n);%最优决策变量
LC1=zeros(1,M);%收敛曲线1
LC2=zeros(1,N);%收敛曲线2
%第二步:随机产生初始种群
farm=cell(1,N);%采用细胞结构存储种群
for k=1:NX=zeros(m,n);for j=1:nfor i=1:mX(i,j)=1+(P(j)-eps)*rand;endendfarm{k}=X;
end
counter=0;%设置迭代计数器
while counter<M%停止条件为达到最大迭代次数%第三步:交叉newfarm=cell(1,N);%交叉产生的新种群存在其中Ser=randperm(N);for i=1:2:(N-1)A=farm{Ser(i)};%父代个体Manner=unidrnd(2);%随机选择交叉方式if Manner==1cp=unidrnd(m-1);%随机选择交叉点%双亲双子单点交叉a=[A(1:cp,:);B((cp+1):m,:)];%子代个体b=[B(1:cp,:);A((cp+1):m,:)];elsecp=unidrnd(n-1);%随机选择交叉点b=[B(:,1:cp),A(:,(cp+1):n)];endnewfarm{i}=a;%交叉后的子代存入newfarmnewfarm{i+1}=b;end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

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

【车间调度】基于matlab遗传算法求解置换流水车间调度问题【含Matalb源码 176期】相关推荐

  1. 【生产优化】基于matlab遗传算法求解帐篷工序问题【含Matlab源码 2145期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [生产优化]基于matlab遗传算法求解帐篷工序问题[含Matlab源码 2145期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  2. 【Matlab语音处理】声音信号频谱分析仪【含GUI源码 325期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]声音信号频谱分析仪[含GUI源码 325期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊, ...

  3. 【Matlab图像检索】综合特征图像检索【含GUI源码 395期】

    一.代码运行视频(哔哩哔哩) [Matlab图像检索]综合特征图像检索[含GUI源码 395期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab肌电信号】肌电信号处理【含GUI源码 966期】

    一.代码运行视频(哔哩哔哩) [Matlab肌电信号]肌电信号处理[含GUI源码 966期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继周,杨 ...

  5. 【Matlab条形码识别】二维条形码识别【含GUI源码 607期】

    一.代码运行视频(哔哩哔哩) [Matlab条形码识别]二维条形码识别[含GUI源码 607期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 【车间调度】免疫遗传算法求解多目标生产调度问题【含Matlab源码 710期】

    ⛄一.生产调度简介 1 车间调度定义 车间调度是指给定一个加工任务,根据已有的生产条件,对有限的系统资源进行分配,对产品的加工步骤进行安排,使得某项性能指标最优.在实际生产过程中,所涉及的约束条件主要 ...

  7. 【指派问题】基于matlab遗传算法求解指派优化问题【含Matlab源码 2292期】

    ⛄一.遗传算法求解指派优化问题简介 1 遗传算法 1.1 遗传算法简介 遗传算法是模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法,它是一种多学科融合交叉的产物.遗传算法通过 ...

  8. 灰狼优化算法GWO求解置换流水车间调度问题FSP

    灰狼优化算法GWO求解置换流水车间调度问题 置换流水车间调度问题(PFSP)是一类最基本.最经典的流水车间调度问题,本文主要讨论使用灰狼优化算法(GWO)求解单目标PFSP. 置换流水车间调度问题模型 ...

  9. 【GA MTSP】基于matlab遗传算法求解多旅行商问题(多且同始终点)【含Matlab源码 1339期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[MTSP]基于matlab遗传算法求解多旅行商问题[ ...

  10. 【GA TSP】基于matlab遗传算法求解旅行商问题【含Matlab源码 1337期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[TSP]基于matlab遗传算法求解旅行商问题[含Matlab源码 1337期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

最新文章

  1. 转:[大数据竞赛]协同过滤在这个问题上是否work
  2. java 教室借用管理系统_教师办事指南 | 借用教室
  3. javaweb学习总结(七)——HttpServletResponse对象(一)
  4. DM368开发 -- uboot 使用
  5. 合并bin文件-----带boot发布版本比较好用的bat(便捷版)
  6. 启动azkaban报错_解决启动Azkaban报错问题:java.lang.NoSuchMethodError: com.google.comm
  7. Go-json解码到接口及根据键获取值
  8. python insert_Python列表| 带示例的insert()方法
  9. android 获取文件夹的字节数,android java file 清理垃圾获取文件大小 删除文件等操作...
  10. 两个摄像头合成一路_小米手机成功开发出伸缩式摄像头,秒变单反,这次雷军又火了...
  11. oracle的partition,ORACLE PARTITION简介
  12. selenium 获取不了标签文本的解决方法
  13. 【一天一个C++小知识】012.C++11常用新特性汇总
  14. Android学习笔记(十一)——从意图返回结果
  15. web文件服务器1台,WEB服务器及配件1台 - 千里马招标网
  16. 从海报视觉到网页设计
  17. 富爸爸穷爸爸-读书笔记
  18. UML建模和开发预演
  19. 阿里云服务器价格表(最新海外地域价格表)
  20. SAP商超订单统一管理系统

热门文章

  1. dedecms 栏目重名时,列表页dede:list调用文章数量不对的问题。
  2. 数据库系统异常排查之DMV(转)
  3. Echarts的使用方法
  4. Python HTTP库requests中文页面乱码解决方案!
  5. MySQL 5.5 使用 Event定期自动维护/执行Procedure
  6. OpenCV_轮廓例子
  7. 信息发布系统 Jquery+MVC架构开发(5) DAL层
  8. 缓冲区溢出原理及防护
  9. 20200106每日一句
  10. Experimental Release #2: Multiple Device Support