• 车间调度|基于遗传算法的柔性车间调度(Matlab代码实现)


    目录

    1 概述

    2 遗传优化算法 

    3 车间调度 

     4 运行结果

    5 参考文献 

    6 Matlab代码实现


    1 概述

    调度通过合理安排生产资源,以缩短生产时间和提高资源利用率为目的,在生产系统中扮演着重要的角色。作业车间调度问题(Job-shop Schedu-ling Problem,JSP)是一类经典的调度问题,其通过安排n个工件在m台机器上的加.工顺序来优化一个或多个调度指标。在JSP中,每个工件由一道或多道具有固定加工顺序的工序构成,且每道工序的加工机器唯一。柔性作业车间调度问题(FlexibleJob-shop Scheduling Problem,FJSP)是JSP的扩展,它允许一道工序有多台可供选择的加工机器,且
    在不同机器上的加工时间可能存在差异,即相对于JSP,FJSP具有一般性,更符合柔性制造系统的实际情况。在FJSP中,机器柔性虽然能够提高制造系统的执行效率,但是扩大了可行解的范围,增加了求解问题的难度和复杂性。

    柔性作业车间调度(FJSP)是一类具有广泛应用背景的调度问题,作为求解FISP最受欢迎的算法
    之一,遗传算法引起了广泛关注。针对求解FJSP的遗传算法,特别是5类主要染色体编码方法以及相关的交叉和变异算子进行全面综述,并从编码可行性、编码空间与解空间的映射关系、染色体存储空间、解码复杂性、编码完备性、遗传操作复杂性和遗传操作多样性7个维度综合评价了5类编码方法。结果表明,MSOS-I编码是遗传算法求解FJSP较好的染色体编码方法,其染色体结构简单,并可选用较多类型的交叉和变异算子。
     

    2 遗传优化算法 

    3 车间调度 

    定每道工.序的加工机器(路径子问题),开确定所有工序在机器上的加工顺序(调度子问题),以实现对一个或多个调度目标的优化,如最大完工时间、总机器负荷、总延迟时间、最大松弛时间等。
    求解FJSP通常需要满足如下假设条件:
    (l)0时刻,所有工件均处于待加工.状态,所有机器均处于空闲状态。
    (2)同一时刻,同一台机器只能加工一个工件的某道工序。
    (3)同一时刻,同一工件只能被一台机器加且不允许中断正在加工的T序。
    (4)同一工件的工序加工顺序固定且不可更改,不同工件的工序间没有顺序约束关系。
    基于上述FJSP的描述,很多学者提出求解FJSP的O-l整数规划模型,另外析取图模型也常用于描述FJSPL,本文不再给出这些模型的数学定义。部分代码:

    1. function [Z,machine_weight,pvals] = fitness(chroms,num_machine,e,num_job,num_op)
    2. sizepop=size(chroms,1);
    3. pvals=cell(1,sizepop);
    4. Z1=zeros(1,sizepop);
    5. Z2=Z1;
    6. total_op_num=sum(num_op); % 总工序数
    7. for k=1:sizepop
    8. chrom=chroms(k,:);
    9. machine=zeros(1,num_machine); % 记录各机器变化时间
    10. job=zeros(1,num_job); % 记录各工件变化时间
    11. machine_time=zeros(1,num_machine); % 计算各机器的实际加工时间
    12. pval=zeros(2,total_op_num); % 记录各工序开始和结束时间
    13. for i=1:total_op_num
    14. % 机器时间大于工件时间
    15. if machine(chrom(total_op_num+i))>=job(chrom(i))
    16. pval(1,i)=machine(chrom(total_op_num+i)); % 记录工件开始时间
    17. machine(chrom(total_op_num+i))=machine(chrom(total_op_num+i))+chrom(total_op_num*2+i);
    18. job(chrom(i))=machine(chrom(total_op_num+i));
    19. pval(2,i)=machine(chrom(total_op_num+i)); % 记录工件结束时间
    20. % 机器时间小于工件时间
    21. else
    22. pval(1,i)=job(chrom(i));
    23. job(chrom(i))=job(chrom(i))+chrom(total_op_num*2+i);
    24. machine(chrom(total_op_num+i))=job(chrom(i));
    25. pval(2,i)=job(chrom(i));
    26. end
    27. machine_time(chrom(total_op_num+i))=machine_time(chrom(total_op_num+i))+chrom(total_op_num*2+i);
    28. end
    29. Z1(k)=max(machine); % 最大机器时间值,对应makespan
    30. % machine_weight=machine_time/sum(machine_time); % 计算各机器的负荷
    31. machine_weight=machine_time;
    32. Z2(k)=max(machine_weight)-min(machine_weight);
    33. pvals{k}=pval;
    34. end
    35. % min_makespan=min(Z1);%所有染色体的makespan最优值
    36. % max_makespan=max(Z1);
    37. % min_weight=min(Z2);%负载最优值
    38. % max_weight=max(Z2);
    39. % Z=e*((Z1-min_makespan)./(max_makespan-min_makespan))+(1-e)*((Z2-min_weight)./(max_weight-min_weight));%计算适应度
    40. Z=e*Z1+(1-e)*Z2;

     4 运行结果

    5 参考文献 

    部分理论引用网络文献,如有侵权请联系删除。

    [1]黄学文,陈绍芬,周阗玉,孙宇婷.求解柔性作业车间调度的遗传算法综述[J].计算机集成制造系统,2022,28(2):536-551

    6 Matlab代码实现

  • 相关阅读:
    ISO7421D代替品 π122M31 双通道数字隔离器 更快更稳更安全
    齐岳|马钱苷酸小麦麦清白蛋白纳米粒|雷公藤红素乳清白蛋白纳米粒Celastrol-whey protein
    使用Ganache、web3.js和remix在私有链上部署并调用合约
    RT-Thread信号量和互斥量
    《微信小程序-进阶篇》Lin-ui组件库源码分析-Button组件(二)
    Minikube采坑记录
    第二十七讲.动态设置相关参数(replication为2和blocksize为10字节)
    计算机组成原理-存储器概念
    华为OD机试真题-勾股数元组-2023年OD统一考试(B卷)
    awk实战演练
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/126841496