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

news2025/1/21 18:53:48

目录

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 遗传优化算法 

智能优化算法——遗传算法(Python&Matlab实现)

智能优化算法——遗传算法

3 车间调度 

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

function [Z,machine_weight,pvals] = fitness(chroms,num_machine,e,num_job,num_op)
sizepop=size(chroms,1);
pvals=cell(1,sizepop);
Z1=zeros(1,sizepop);
Z2=Z1;
total_op_num=sum(num_op);  % 总工序数
for k=1:sizepop
    chrom=chroms(k,:);
    machine=zeros(1,num_machine);  % 记录各机器变化时间
    job=zeros(1,num_job);  % 记录各工件变化时间
    machine_time=zeros(1,num_machine);  % 计算各机器的实际加工时间
    pval=zeros(2,total_op_num);  % 记录各工序开始和结束时间
    for i=1:total_op_num
        % 机器时间大于工件时间
        if machine(chrom(total_op_num+i))>=job(chrom(i))
            pval(1,i)=machine(chrom(total_op_num+i));  % 记录工件开始时间
            machine(chrom(total_op_num+i))=machine(chrom(total_op_num+i))+chrom(total_op_num*2+i);
            job(chrom(i))=machine(chrom(total_op_num+i));
            pval(2,i)=machine(chrom(total_op_num+i));  % 记录工件结束时间
            % 机器时间小于工件时间
        else
            pval(1,i)=job(chrom(i));
            job(chrom(i))=job(chrom(i))+chrom(total_op_num*2+i);
            machine(chrom(total_op_num+i))=job(chrom(i));
            pval(2,i)=job(chrom(i));
        end
        machine_time(chrom(total_op_num+i))=machine_time(chrom(total_op_num+i))+chrom(total_op_num*2+i);
    end
    Z1(k)=max(machine);  % 最大机器时间值,对应makespan
    % machine_weight=machine_time/sum(machine_time);  % 计算各机器的负荷
    machine_weight=machine_time;
    Z2(k)=max(machine_weight)-min(machine_weight);
    pvals{k}=pval;
end
% min_makespan=min(Z1);%所有染色体的makespan最优值
% max_makespan=max(Z1);
% min_weight=min(Z2);%负载最优值
% max_weight=max(Z2);
% Z=e*((Z1-min_makespan)./(max_makespan-min_makespan))+(1-e)*((Z2-min_weight)./(max_weight-min_weight));%计算适应度
Z=e*Z1+(1-e)*Z2;

 4 运行结果

5 参考文献 

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

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

6 Matlab代码实现

回复:基于遗传算法的柔性车间调度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1996-2020年全国31省农村电力和农田水利建设相关数据

1996-2020年全国31省农村电力和农田水利建设相关数据 1、1996-2020年 2、范围:31省 3、指标包括: 乡村办水电站、装机容量、发电量、农村用电量、有效灌溉面积、旱涝保收面积、机电排灌面积、实际耕地灌溉面积、新增耕地灌溉面积、节水灌溉面积、新增…

2023年第六届先进控制,自动化与机器人国际会议(ICACAR 2023)

2023年第五届先进控制,自动化与机器人国际会议(ICACAR 2023) 重要信息 会议网址:www.icacar.org 会议时间:2023年4月14-16日 召开地点:中国北京 截稿时间:2023年2月28日 录用通知&#xf…

排序子序列

1 题目来源: 牛客网:排序子序列 2 题目描述  牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分…

Ashampoo Burning Studio创建可启动磁盘

Ashampoo Burning Studio创建可启动磁盘 Ashampoo的产品通常适合质量,但在其中,它是世界上最好的软件之一,名为Ashampoo Burning Studio。与著名的Nero程序相比,该软件几乎一无是处,所有用于制作、写入和复制光盘的软件…

Python Tutorial——模块

如果你从Python解释器中退出,并且再次进入,你会发现你以前定义的函数和变量都已经丢失了。所以,如果你想写一个在某种程度上更长的程序,使用一个文本编辑器来准备解释器的输入会使情况有所好转,并且使用文件代替输入来…

最简单的方式实现Zotero文件同步+坚果云在多台电脑设备之间

应用场景: 放假回家,只带了笔记本搞科研的好童靴,发现实验室台式机的zotero中的PDF没办法在笔记本上读取。于是探索了一下午如何不重新在网页上保存下载台式机中的PDF,轻松获取异地的文献。 方式一: 氪金付费zotero…

参数估计与假设检验

推断统计:研究如何利用样本数据来推断总体特征 描述统计:描述一组数据的特征 参数估计:利用样本信息估计总体特征 假设检验:利用样本信息判断对总体的假设是否成立 一.参数估计 就是对于总体指标的估计 估计:根据…

免费l2接口有多少种类型?

免费l2接口是一个预先定义的函数,它的目的是让开发人员和开发人员无需访问源代码,也无需访问源代码,也无需理解其内部工作。免费l2接口有多少种类型? 有四种类型的股票l2接口: RPC:通过处理(或任务)共享的数据缓冲区…

SpringBoot整合RabbitMQ实现死信队列

文章目录概念介绍什么是死信死信队列应用工程搭建环境说明搭建步骤实现死信准备Exchange&Queue监听死信队列方式一——消费者拒绝&否认方式二——超过消息TTL方式三——超过队列长度限制代码仓库前面一文通过 Java整合RabbitMQ实现生产消费(7种通讯方式&…

Spark的运行模式介绍

Spark的运行模式 本地模式(Local) 一般用做测试,测试代码的逻辑是否正确 本地模式,只启动一个Driver进程,没有Executor进程的,所有Task都运行在Driver进程中 集群模式 (Cluster) 一…

医疗挂号网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 管理员功能: 1、管理挂号须知、帮助信息 2、增删改查资讯类型、健康资讯信息 3、增删改查医生职称信息、医生…

装载问题 ——回溯法(Java)

装载问题 ——回溯法(Java) 文章目录装载问题 ——回溯法(Java)1、 问题描述1.1 装载问题1.2 转换问题2、算法设计2.1 可行性约束函数2.2 上界函数2.3 解空间树2.4 剪枝函数2.5 算法设计3、程序代码4、参考资料1、 问题描述 有一…

Hadoop安装准备

虚拟机的安装 配置了静态IP地址(192.168.1.100) 关闭与禁用了防火墙 安装了vim编辑器 虚拟机克隆 克隆出master虚拟机 以同样的步骤克隆出slave1和slave2 虚拟机配置 配置master虚拟机 启动虚拟机 设置主机名 命令:hostname…

C#语言和面向对象OOP

1、【重点面试题】面向对象的三大特性 封装 :隐藏对象的属性,并实现细节(方法),对外提供接口, public全局,protected子类,internal同集,隐藏private 同类,pub…

英文文章写作|文献管理|​​​​​​​阅读文献|引用文献|国内文章

目录 英文文章写作 1.阅读10篇文献,总结100个常用句型和常用短语 2.找3-5篇技术路线和统计方法与你的课题接近的文章,精读 3.针对论文的每一部分,尤其是某种具体方法、要讨论的某一具体方面,各找5-8 篇文献阅读,充…

使用HTMLTestRunner.py生成测试报告

1、如何收集测试结果? 使用第三方封装好类HTMLTestRunner.py生成HTML测试报告 # encoding:utf-8 import unittest import time from HTMLTestRunner import HTMLTestRunner class MyTestCase(unittest.TestCase): # 每条用例初始化 def setUp(s…

大数据技术之Spark基础解析

大数据技术之Spark基础解析 第1章 Spark概述 1.1什么是Spark 什么是Spark? 大数据的电花火石。 Spark类似于MapReduce的低延迟的交互式计算框架。 Spark是UC Berkeley AMPLab开发的是一种计算框架,分布式资源工作交由集群管理软件(Mesos、YARN&am…

Unity Addressables资源管理 打包路径设置

1.全局路径设置窗口的菜单位置 或 2.窗口界面 初始: Local:本地路径 Remote:远程路径 build指资源包生成位置 Load指资源包加载路径 BuildTarget:一个路径变量 Built-In 是内置默认的本地路径EditorHosted 则是编辑器和【托管服务】一起使…

零代码是什么?

上有国家层面的数字中国,数字经济的顶层规划,下有信息化飞速发展让组织、个人都深切体会到了信息技术带给生活的便利,如今信息化技术领域热度很高的低代码(LowCode)和零代码(No-Code)又开始进入…

太强了,GitHub白嫖的SpringCloud微服务进阶宝典,啃完吊打面试官

前言 自 2014 年起,微服务技术一直火热至今。随着越来越完善的微服务技术栈的发布,以及越来越多的微服务项目实际的落地和上线,使用 Java 技术栈的企业应该都在尝试或者已经落地了各自的微服务项目。同时,通过招聘网站的信息和每…