多目标应用:四种多目标优化算法(NSGA2、NSPSO、NSDBO、NSCOA)求解柔性作业车间调度问题(FJSP),MATLAB代码

news2024/9/19 23:16:18

一、柔性作业车间调度问题

柔性作业车间调度问题(Flexible Job Scheduling Problem, FJSP) 的描述如下:n个工件 { J , J 2 , . . , J n } \{J,J_2,..,J_n\} {J,J2,..,Jn}要在 m m m 台机器 { M 1 , M 2 , . . , M m } \{M_1,M_2,..,M_m\} {M1,M2,..,Mm} 上加工。每个工件包含一道或多道工序,工序顺序是预先确定的,每道工序可以在多台不同加工机器上进行加工,工序的加工时间随加工机器的不同而不同。调度目标是为每道工序选择最合适的机器、确定每台机器上各个工序的最佳加工顺序以及开工时间,使整个系统的某些性能指标达到最优。因此,柔性作业车间调度问题包含两个子问题:确定各工件的加工机器 (机器选择子问题) 和确定各个机器上的加工先后顺序 (工序排序子问题)。

此外,在加工过程中还需要满足下面的约束条件:
(1) 同一台机器同一时刻只能加工一个工件;
(2) 同一工件的同一道工序在同一时刻只能被一台机器加工;
(3) 每个工件的每道工序一旦开始加工不能中断;
(4) 不同工件之间具有相同的优先级;
(5)不同工件的工序之间没有先后约束,同一工件的工序之间有先后约束;
(6)所有工件在零时刻都可以被加工。

1.1符号描述

n : n: n:工件总数;
m : m: m: 机器总数;
i , e : i,e: i,e: 机器序号, i , e = 1 , 2 , 3 , . . . , m i,e=1,2,3,...,m i,e=1,2,3,...,m ;
j , k : j,k: j,k: 工件序号, j , k = 1 , 2 , 3 , . . . , n ; j,k=1,2,3,...,n; j,k=1,2,3,...,n; h j : h_j: hj:工件 j j j 的工序总数;
h , l : h,l: h,l: 工序序号, h = 1 , 2 , 3 , . . . , h j h=1,2,3,...,h_j h=1,2,3,...,hj ;
Ω j h : \Omega_{jh}: Ωjh:工件 j j j 的第 h h h 道工序的可选加工机器集;
m j h : m_{jh}: mjh:工件 j j j 的第 h h h 道工序的可选加工机器数;
O j h : O_{jh}: Ojh:工件 j j j 的第 h h h道工序;
M i j h : M_{ijh}: Mijh:工件 j j j 的第 h h h道工序在机器 i i i 上加工;
p i j h : p_{ijh}: pijh:工件 j j j的第 h h h道工序在机器 i i i上的加工时间;
s j h : s_{jh}: sjh:工件 j j j 的第 h h h 道工序加工开始时间;
c j h : c_{jh}: cjh:工件 j j j的第 h h h道工序加工完成时间;
d j : d_j: dj:工件 j j j 的交货期;
L L L: 一个足够大的正数;
C j C_j Cj: 每个工件的完成时间;
C max ⁡ : C_{\max}: Cmax: 最大完工时间;
T o : T o = ∑ j = 1 n h j T_o:\quad T_o=\sum_{j=1}^nh_j To:To=j=1nhj, 所有工件工序总数;
x i j h = { 1 , 如果工序 O j h 选择机器 i ; 0 , 否则; x_{ijh}=\begin{cases}1,\text{如果工序}O_{jh}\text{选择机器}i;\\0,\text{否则;}\end{cases} xijh={1,如果工序Ojh选择机器i;0,否则;
y i j h k l = { 1 , 如果 O i j h 先于 O i k l 加工 ; 0 , 否则 ; y_{ijhkl}=\begin{cases}1,\text{如果}O_{ijh}\text{先于}O_{ikl}\text{加工};\\0,\text{否则};\end{cases} yijhkl={1,如果Oijh先于Oikl加工;0,否则;

1.2约束条件

C 1 : s j h + x i j h × p i j h ≤ c j h C_{1}:s_{jh}+x_{ijh}\times p_{ijh}\leq c_{jh} C1:sjh+xijh×pijhcjh

其中: i = 1 , … , m ; j = 1 , … , n ; i=1,\ldots,m;j=1,\ldots,n; i=1,,m;j=1,,n; h = 1 , … , h j h=1,\ldots,h_j h=1,,hj
C 2 : c j h ≤ s j ( h + 1 ) C_{2}:c_{jh}\leq s_{j(h+1)} C2:cjhsj(h+1)
其中 : j = 1 , … , n ; h = 1 , . . . , h j − 1 :j=1,\ldots,n;h=1,...,h_j-1 :j=1,,n;h=1,...,hj1
C 3 : c j h j ≤ C max ⁡ C_{3}:c_{jh_j}\leq C_{\max} C3:cjhjCmax
其中: j = 1 , . . . , n j=1,...,n j=1,...,n
C 4 : s j h + p i j h ≤ s k l + L ( 1 − y i j h k l ) C_{4}:s_{jh}+p_{ijh}\leq s_{kl}+L(1-y_{ijhkl}) C4:sjh+pijhskl+L(1yijhkl)

其中 : j = 0 , … , n ; k = 1 , … , n ; h = 1 , … , h j ; l = 1 , … , h k ; i = 1 , … , m :j=0,\ldots,n;k=1,\ldots,n;h=1,\ldots,h_j;l=1,\ldots,h_k;i=1,\ldots,m :j=0,,n;k=1,,n;h=1,,hj;l=1,,hk;i=1,,m
C 5 : c j h ≤ s j ( h + 1 ) + L ( 1 − y i k l j ( h + 1 ) ) C_{5}:c_{jh}\leq s_{j(h+1)}+L(1-y_{iklj(h+1)}) C5:cjhsj(h+1)+L(1yiklj(h+1))

其中 : j = 1 , … , n ; k = 0 , … , n ; h = 1 , … , h j − 1 ; l = 1 , … , h k ; i = 1 , … , m :j=1,\ldots,n;k=0,\ldots,n;h=1,\ldots,h_j-1;\quad l=1,\ldots,h_k;\quad i=1,\ldots,m :j=1,,n;k=0,,n;h=1,,hj1;l=1,,hk;i=1,,m
h 1 : ∑ i = 1 m j h x i j h = 1 h_{1}:\sum_{i=1}^{m_{jh}}x_{ijh}=1 h1:i=1mjhxijh=1
其中: h = 1 , . . . , h j ; j = 1 , . . . , n ; h=1,...,h_j;j=1,...,n; h=1,...,hj;j=1,...,n;

h 2 : ∑ j = 1 n ∑ h = 1 h j y i j h k l = x i k l h_{2}:\sum_{j=1}^n\sum_{h=1}^{h_j}y_{ijhkl}=x_{ikl} h2:j=1nh=1hjyijhkl=xikl

其中: i = 1 , … , m ; k = 1 , … , n ; l = 1 , … , h k i=1,\ldots,m;k=1,\ldots,n;l=1,\ldots,h_k i=1,,m;k=1,,n;l=1,,hk
h 3 : ∑ i = 1 n ∑ i = 1 n k y i j h k l = x i j h h_{3}:\sum_{i=1}^n\sum_{i=1}^{n_k}y_{ijhkl}=x_{ijh} h3:i=1ni=1nkyijhkl=xijh

其中: i = 1 , … , m ; j = 1 , … , n ; h = 1 , … , h k i=1,\ldots,m;j=1,\ldots,n;\quad h=1,\ldots,h_k i=1,,m;j=1,,n;h=1,,hk
C 6 : s j h ≥ 0 , c j h ≥ 0 C_{6}:s_{jh}\geq0,c_{jh}\geq0 C6:sjh0,cjh0

其中 : j = 0 , 1 , . . . , n ; h = 1 , . . . , h j :j=0,1,...,n;h=1,...,h_j :j=0,1,...,n;h=1,...,hj

C 1 C_{1} C1 C 2 C_{2} C2表示每一个工件的工序先后顺序约束 ;
C 3 C_{3} C3表示工件的完工时间的约束,即每一个工件的完工时间不可能超过总的完工时间 ;
C 4 C_{4} C4 C 5 C_{5} C5表示同一时刻同一台机器只能加工一道工序 ;
h 1 h_{1} h1表示机器约束,即同一时刻同一道工序只能且仅能被一台机器加工;
h 2 h_{2} h2 h 3 h_{3} h3表示存在每一台机器上可以存在循环操作 ;
C 6 C_{6} C6表示各个参数变量必须是正数。

1.3目标函数

(1) 最大完工时间最小。

完工时间是每个工件最后一道工序完成的时间,其中最大的那个时间就是最大完工时间(makespan)。它是衡量调度方案的最根本指标, 主要体现车间的生产效率,也是 FJSP 研究中应用最广泛的评价指标之一。如下式所示:

f 1 = min ⁡ ( max ⁡ l ≤ j ≤ n ( C j ) ) f_1=\min(\max_{\mathrm{l\leq}j\leq n}(C_j)) f1=min(maxljn(Cj))

(2)机器最大负荷最小。

在 FJSP 求解中,存在选择机器的过程,各个机器的负荷随着不同的调度方案而不同。负荷最大的机器就是瓶颈设备,为提高每台机器的利用率,必须使得各台机器的负荷尽量小且平衡。如下式所示:

f 2 = min ⁡ ( max ⁡ l ≤ i ≤ m ∑ j = 1 n ∑ h = 1 h j p i j h x i j h ) f_2=\min(\max_{\mathrm{l\leq}i\leq m}\sum_{j=1}^n\sum_{h=1}^{h_j}p_{ijh}x_{ijh}) f2=min(maxlimj=1nh=1hjpijhxijh)

(3)总机器负荷最小。

工序在不同机器上的加工时间是不同的,那么总的机器负荷随着不同的调度方案而不同。尽量使最大完工时间一样的情况下,减少所有机器的总消耗。如下式所示:

f 3 = min ⁡ ( ∑ i = 1 m ∑ j = 1 n ∑ h = 1 h j p i j h x i j h ) f_3=\min(\sum_{i=1}^m\sum_{j=1}^n\sum_{h=1}^{h_j}p_{ijh}x_{ijh}) f3=min(i=1mj=1nh=1hjpijhxijh)
参考文献:
[1]张国辉.柔性作业车间调度方法研究[D].华中科技大学,2009.

二、四种多目标优化算法介绍

  1. NSGA2:
    NSGA-II(Non-dominated Sorting Genetic Algorithm II)是一种流行的多目标遗传算法,由Deb等人在2002年提出,用于解决具有多个冲突目标的优化问题。它在第一代非支配排序遗传算法(NSGA)的基础上进行了改进,主要改进点包括:

快速非支配排序算法:NSGA-II引入了快速非支配排序方法,将算法的计算复杂度从O(MN3)降低到O(MN2),其中M是目标个数,N是种群个数。这种方法首先计算每个个体的支配计数和被支配集合,然后通过迭代过程快速确定各个非支配层级。

拥挤比较算子:为了维持种群的多样性,NSGA-II使用了拥挤比较算子来估计个体间的拥挤程度。在同一非支配层级中,拥挤度较高的个体更可能被选择,以避免算法过早收敛至局部最优解。

精英策略:NSGA-II采用了精英策略,将父代和子代种群合并后进行非支配排序,然后根据排序和拥挤度选择下一代种群,这样可以确保优秀的个体不会被丢失。

NSGA-II算法的主要步骤包括:

  • 初始化种群
  • 计算个体的适应度(目标函数值)
  • 快速非支配排序
  • 拥挤度计算
  • 选择、交叉和变异操作生成新一代种群
  • 合并父代和子代种群
  • 重复上述过程直到满足终止条件
  1. 非支配粒子群优化算法 (NSPSO, Non-dominated Sorting Particle Swarm Optimization):

    • 原理: 粒子群优化算法(Particle Swarm Optimization, PSO)是一种模拟鸟群或鱼群的社会行为的算法。NSPSO结合了非支配排序和粒子群优化算法,通过粒子间的信息共享和个体学习来优化多目标问题。
    • 特点: 算法具有良好的全局搜索能力和快速收敛性,同时能够保持解的多样性。
  2. 非支配蜣螂优化算法 (NSDBO, Non-dominated Sorting Dung Beetle Optimization):

    • 原理: 蜣螂优化算法(Dung Beetle Optimization, DBO)是一种模拟蜣螂滚球行为的算法。它通过模拟蜣螂寻找食物、滚球和避障的行为来搜索最优解。非支配排序用于生成Pareto前沿,以确保解的多样性和优化目标的平衡。
    • 特点: 算法具有较强的局部搜索能力和逃逸局部最优的能力,适合解决复杂的多目标优化问题。
  3. 非支配小龙虾优化算法 (NSCOA, Non-dominated Sorting Crayfish Optimization Algorithm):

    • 原理: 小龙虾优化算法(Crayfish Optimization Algorithm, COA)是一种模拟小龙虾觅食和逃避捕食者行为的算法。它通过模拟小龙虾的觅食路径和逃避策略来搜索最优解。非支配排序用于生成Pareto前沿,以确保解的多样性和优化目标的平衡。
    • 特点: 算法具有良好的探索能力和适应性,能够适应不同的优化问题,并且能够保持解的多样性。

三、四种算法求解FJSP

四种算法求解FJSP,以最大完工时间最小、机器最大负荷最小、总机器负荷最小为目标函数。

3.1部分代码

%% 算法求解
%% 算法求解
R(1).Result = NSGA2(MachineNum,jobNum,jobInfo,operaNumVec,candidateMachine,energy);
R(2).Result = NSPSO(MachineNum,jobNum,jobInfo,operaNumVec,candidateMachine,energy);
R(3).Result = NSDBO(MachineNum,jobNum,jobInfo,operaNumVec,candidateMachine,energy);
R(4).Result = NSCOA(MachineNum,jobNum,jobInfo,operaNumVec,candidateMachine,energy);
%% Pareto解
Strcol={'r*','go','bs','k>'};
NameAlgorith={'NSGA2','NSPSO','NSDBO','NSCOA'};
figure(1)
for i=1:4
    scatter3(R(i).Result.obj_matrix(:,1), R(i).Result.obj_matrix(:,2), R(i).Result.obj_matrix(:,3),50,Strcol{i})
    hold on
end
xlabel('最大完工时间'); ylabel('总能耗'); zlabel('总成本', 'Rotation', 90)
legend(NameAlgorith)

3.2部分结果

以Mk01数据集为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、完整MATLAB代码

见下方名片

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

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

相关文章

linux基础IO——动静态库——实现与应用学习、原理深度解析

前言:本节内容是基础IO部分的动静态库。 本节内容, 我们将站在实现者的角度上自己实现一下动静态库, 并且会站在使用者的角度上使用我们自己实现的库。过程中牵扯到许多新的知识, 最后我们会重谈一下我们的进程。 理解一下有了动静…

【Python基础】想学好Python,就必须要知道的Python知识。一篇文章带你了解Python,学好Python!!!

Python知识涵盖面非常广泛,从基础语法到高级特性,再到丰富的库和框架,都是Python学习的重要组成部分。 一、基础语法 变量与数据类型: Python是动态类型语言,变量无需声明类型,直接赋值即可。常见的数据类…

织梦dedecms后台文章列表显示空白或有页码显示不了文章的解决方案

cms系统在用的过程才会发现更多的问题,dedecms也不例外。 问题描述: 可以正常登录,列表正常显示,文章页码也是正常,就是无法显示文章的标题。 分析原因: 1、是否改动源码 2、数据库是否完整 在数据库是…

非标独立设计选型--二十一--滚子链选型计算

链传动 相比于带传动 1、噪音大、震动大---平稳性不加、精度不够 运行速度不要太快…… 2、负载能力强,抗造---大负载、线性传动---抗冲击 【工况1】负载较大(几百kg---几吨)、运行速度较缓慢的场合 3、预紧力不需要像同步带那样大…

OpenAI 的发展启示录

OpenAI 的发展启示录 前言OpenAI 的发展启示录 前言 在当今科技迅猛发展的时代,人工智能(AI)正以前所未有的速度改变着我们的生活和工作方式。OpenAI 作为人工智能领域的先驱者,其发展路径和成就备受关注。它的每一次突破和创新&…

信也持续构建集群容器化改造之路

1. 前言 随着应用构建需求增加以及新构建场景引入,公司对构建系统的扩展性、稳定性要求日益提高。多语言构建(如Golang、Java、Python、Node.js 等)所依赖的环境,部署在同一台物理机上时,使构建机环境维护困难&#xf…

Elasticsearch Mapping 详解

1 概述 映射的基本概念 Mapping 也称之为映射,定义了 ES 的索引结构、字段类型、分词器等属性,是索引必不可少的组成部分。 ES 中的 mapping 有点类似与DB中“表结构”的概念,在 MySQL 中,表结构里包含了字段名称,字…

【gtokentool】元宇宙nft区块链是什么

元宇宙 元宇宙的定义 元宇宙(Metaverse)这个词起源于Neal Stephenson在1992年出版的小说《雪崩》,Metaverse由Meta(意即“超越”、“元”)和verse(意即“宇宙universe”)两个词构成。元宇宙是整…

安卓13带有系统签名的应用不能正常使用webview 调用webview失败 系统应用app apk

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 android版本高一些的平台,经常会遇到一些权限安全问题,像客户的应用如果带有系统签名,会导致不能正常使用webview问题。 2.问题分析 我们log信息,可以发现下面的提示: Fo…

权威解读|2024固定网国内数据传送业务办理指南

一、固定网国内数据传送业务是什么? 固定网国内数据传送业务,是指互联网数据传送业务以外的,在固定网中以有线方式提供的国内端到端数据传送业务。主要包括基于IP承载网、ATM网、X.25分组交换网、DDN网、帧中继网络的数据传送业务等。 根据…

佰朔资本:股票的买卖点有哪些?如何判断?

1、根据均线找买卖点 当股价跌破5日均线时,投资者可以将其作为卖点;股价向下跌触碰5日均线之后,出现反弹向上运转的痕迹,投资者可以将其作为买点。 2、根据MACD方针和KDJ方针找买卖点 当MACD方针或许KDJ 方针出现高位死叉时&am…

AI绘画神器 Fooocus 2.0 来啦!出图质量升级+新增4大实用功能!低配电脑必用的AI绘画工具教程

大家好,我是灵魂画师向阳 之前为大家推荐过一款融合了 midjourney 和 stable diffusion 优点的 AI 绘画工具 Fooocus,它用的是开源的 SDXL 1.0 模型,可以免费生成高质量的图像,同时操作界面又如 Midjourney 般简单,受…

三菱机器人手柄维修示教器维修手操器面板等

机器人手柄维修(示教器维修)故障现象包括:黑屏、指示灯无任何显示, 上电蓝屏、白屏,通电几分钟后屏幕变为蓝屏,主板故障,通讯时有时无, 触摸失灵,有时白屏,触…

【苍穹外卖】Day 6 HttpClient、wx小程序

1 HttpClient HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议 HttpClient 是一个用于发送 HTTP 请求并接收响应的类或库,在…

昵称重复怎么办?一招教你轻松搞定!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hi,大家好!我是你们的技术分享小助手——小米,29岁,活泼好动,最喜欢分享各种实用的技术知识啦!今天我们要聊的主题是“个人项目篇:如何管理昵称重…

Knife4J + Springdoc + SpringBoot2美化Swagger文档

前言 我们知道利用Swagger-UI结合Swagger提供的注解,在SpringBoot项目上可以将接口以HTML形式(swagger-ui.html)呈现出来,并且可以在线调试。但是老外的审美和使用习惯可能不太符合中国开发者的喜好。于是Knife4J(htt…

搜维尔科技:特斯拉人形机器人采用Manus VR数据手套来捕捉手指动作的特点和优势

1.高保真手指追踪:能够提供精确的手指动作捕捉,包括手指的弯曲、伸展、旋转等动作,并且不受遮挡限制。这种高保真的手指追踪能力对于机器人准确模拟人类手部动作至关重要。 2.触觉反馈系统:部分型号的数据手套可能具备触觉反馈功能…

【Python】超详细基础语法总结

Python大礼包:【2024年最新Python全套学习资料包】免费领取! 1.字面量 字面量:在代码中,被写下来的固定的值 1.1Python常用的6种值(数据)的类型 1.2代码练习(输出字面量) > p…

蓝牙技术|超高精度蓝牙位置服务将成为蓝牙定位产品发展方向

随着市场需求的变化,精确的距离测量成为提升安全性和用户体验的重要因素。预计未来五年蓝牙位置服务设备的年均增长率为22%,到2028年出货量将达到5.63亿台。 为了满足这一需求,SIG即将在2024年下半年推出一项新功能——蓝牙信道探测(Blueto…

C语言6大常用标准库 -- 1.<stdio.h>

目录 引言 1.<stdio.h>&#xff08;标准输入输出库&#xff09; 1.1 简介 1.2 库变量 1.3 库宏 1.4 库函数 &#x1f308;你好呀&#xff01;我是 程序猿 &#x1f30c; 2024感谢你的陪伴与支持 ~ &#x1f680; 欢迎一起踏上探险之旅&#xff0c;挖掘无限可能&am…