【车间调度】基于改进鲸鱼算法解决柔性车间调度多目标问题附matlab代码

1 内容介绍

针对传统柔性作业车间调度问题只考虑完工时间,设备利用率,完工成本等因素的局限,构建了以碳排放成本和完工时间成本加权和最小为目标的低碳柔性作业车间调度问题模型,并设计了一种改进的鲸鱼优化算法对其进行求解.首先,采用等长的两段式编码方式来表示柔性作业车间调度问题,引入基于ROV规则的转换机制,实现鲸鱼个体位置向量与调度解之间的相互转换.其次,采用基于一定比例的全局搜索,局部搜索和随机搜索的混合式种群初始化方法,生成一定质量的初始种群,同时设计了非线性收敛因子和自适应惯性权重系数来加强算法协调全局搜索和局部寻优的能力.再次,引入自适应调整搜索策略以提高算法跳出局部最优的能力.最后,通过实验数据验证了改进鲸鱼算法在求解低碳柔性作业车间调度问题方面的有效性.

随着经济的不断发展,制造企业所面临的压力 也越来越大,尤其是在降低成本和减少污染两个方 面因此,作为生产系统的重要环节调度,也不再局 限于只考虑成本时间和效率这些传统目标,需要进 一步统筹考虑能源消耗等问题而低碳调度作为一 种新的可持续制造模式,可以很好地解决包括能耗在内的多目标复杂优化问题,逐步受到学者们的广 泛关注尽管如此,目前有关低碳调度的研究还是 相对较少。 文献[1]针对柔性作业车间调度问题( Flexible job-shop scheduling problemFJSP) ,以总碳排放量 和平均延迟时间为目标,提出了一种新型教学优化 算法文献[2]以完工时间和碳排放量最小化为目 标,设计了一种节能流水车间调度问题模型文献 [3]针对两台设备的流水车间调度问题,以总的完 工时间和能耗总量为目标,设计了一种多目标遗传 算法( Multi-objective genetic algorithmMOGA文 献[4]以生产成本和耗电成本最小化为目标,设计 了一种蚁群算法对混合流车间调度问题进行研究。 文献[5]考虑总的碳排放量和总的加权延迟时间, 提出一种具有双邻域搜索模式的 MOGA 求解作业 车间调度问题( Job-shop scheduling problemJSP。 文献[6]以生产率,能源消耗,噪音值为优化目标, 采用基于单形网格技术的 MOGA 研究了多目标低 碳 JSP文献[7]以完工时间和总能耗为目标,构建 了混合流水车间调度问题模型,并提出一种基于能 量感知技术的多目标优化算法进行求解上述文献 大多都采用遗传算法( Genetic algorithmGA) 等传 统算法针对简单车间系统的低碳调度问题展开研 究,其中运用新型智能算法对复杂车间系统低碳调 度问题的研究还较少文献[8]以总能耗成本和拖 期成本为目标,采用双种群离散猫群优化算法对 FJSP 进行研究文献[9]针对以能耗成本和完工时 间成本为目标的 FJSP,提出了一种改进灰狼算法。 文献[10]以完工时间,设备负载,碳排放量为目标, 构建了低碳 FJSP 模型,并采用混合非支配排序遗传 算法对其进行求解文献[11]以设备负载平衡率 和能耗为目标,采用模糊蛙跳算法对 FJSP 进行了 研究FJSP 是经典作业车间调度问题的扩展,该问题 充分考虑了设备柔性和工艺线路柔性,更加符合实 际生产情况,但也增加了求解的难度,因此本文将低 碳调度问题扩展到柔性作业车间中此外,为了丰 富该类问题的求解方法,将采用新型智能算法来对 其 进 行 求 解。 鲸 鱼 算 法 ( Whale optimization algorithmWOA) 是模仿驼背鲸捕食行为而提出的 一种新型群智能优化算法12该算法以其原理简 单,参数设置少,寻优性能强的特点,在各个领域得 到了 广 泛 应 用13-16,但 目 前 还 尚 未 应 用 于 求 解 FJSP因此,本文通过对 WOA 进行一系列改进,提 出一种改进鲸鱼算法( Improved whale optimization algorithmIWOA) ,并将其应用于求解低碳 FJSP,具 体内容包括: 采用两段式的个体位置编码/解码机 制,混合式种群初始化方法,设计了非线性收敛因子 和自适应惯性权重对算法的迭代方式加以改进,引 入了自适应调整搜索策略加强算法的全局搜索能 力,最后通过对具体实例的仿真,验证了所提算法在 求解低碳柔性作业车间调度问题方面的有效性

柔性作业车间低碳调度问题描述和 模型建立

FJSP 指的是 个工件在 台加工设备上的安 排加工的问题其中每一个工件具有一道以上的加 工工序,同一个工件的工序之间具有固定的加工顺 序,且一个工序可以在一台以上的设备上完成加工。 FJSP 在解决工序加工顺序的同时,还需要为工序选 择合适的加工设备,其已经被证明是 NP-hard 问题, 求解该问题的目的常见的有最大完工时间最小化, 完工时间成本最小,设备平均负荷最小等而低碳 柔性作业车间调度问题是在 FJSP 的基础之上增加 了碳排放量最小的目标,求解的目的是在满足其他 目标的同时,使得碳排放量最小本文选取完工时 间成本和碳排放成本的加权之和最小为目标。 该问题有如下假设条件: 

1) 工件和设备在初始 时刻都可用; 

2) 每台设备同时只能加工一个工件; 

​3) 工件加工过程不能中断; 

4) 工件运输时间和安装 时间均忽略不计; 

5) 不同工件之间相互独立。 基于此,选取完工时间成本和碳排放成本加权 之和最小为目标,可描述为

2 仿真代码

<span style="color:#333333"><span style="background-color:rgba(0, 0, 0, 0.03)"><code>clear;</code><code>clc;</code><code>close all</code><code>dbstop <span style="color:#ca7d37">if</span> error;</code><code>M=<span style="color:#0e9ce5">7</span>;</code><code>RouN=[<span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">4</span>];</code><code>Jm={[<span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">6</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">7</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">6</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">7</span>],<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">2 4 6</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">5</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">6</span> <span style="color:#0e9ce5">7</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">1 4</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">6</span>],[<span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">7</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">5 7</span>],[<span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">6</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">1 3 5</span>],[<span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">6</span>],[<span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">7</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">5</span> <span style="color:#0e9ce5">7</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">6</span>];</code><code>    [<span style="color:#afafaf">1 2 3 4 6 7</span>],[<span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">5</span>],[<span style="color:#0e9ce5">1</span> <span style="color:#0e9ce5">4</span> <span style="color:#0e9ce5">6</span>],[<span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">7</span>],<span style="color:#0e9ce5">0</span>};</code><code>​</code><code>T ={[<span style="color:#0e9ce5">16</span> <span style="color:#0e9ce5">16</span> <span style="color:#0e9ce5">15</span>],[<span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">18</span> <span style="color:#0e9ce5">14</span> <span style="color:#0e9ce5">16</span>],[<span style="color:#0e9ce5">20</span> <span style="color:#0e9ce5">20</span> <span style="color:#0e9ce5">18</span> <span style="color:#0e9ce5">13</span>],[<span style="color:#0e9ce5">20</span> <span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">13</span> <span style="color:#0e9ce5">19</span>],<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">17 18 14</span>],[<span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">18</span> <span style="color:#0e9ce5">22</span>],[<span style="color:#0e9ce5">19</span> <span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">21</span> <span style="color:#0e9ce5">19</span> <span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">19</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">18 20</span>],[<span style="color:#0e9ce5">18</span> <span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">23</span> <span style="color:#0e9ce5">19</span>],[<span style="color:#0e9ce5">22</span> <span style="color:#0e9ce5">20</span> <span style="color:#0e9ce5">17</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">16 18</span>],[<span style="color:#0e9ce5">25</span> <span style="color:#0e9ce5">20</span> <span style="color:#0e9ce5">21</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">19 18 16</span>],[<span style="color:#0e9ce5">12</span> <span style="color:#0e9ce5">9</span> <span style="color:#0e9ce5">10</span>],[<span style="color:#0e9ce5">10</span> <span style="color:#0e9ce5">13</span> <span style="color:#0e9ce5">8</span>],[<span style="color:#0e9ce5">13</span> <span style="color:#0e9ce5">16</span> <span style="color:#0e9ce5">14</span> <span style="color:#0e9ce5">12</span>],[<span style="color:#0e9ce5">20</span> <span style="color:#0e9ce5">19</span> <span style="color:#0e9ce5">22</span>];</code><code>    [<span style="color:#afafaf">10 9 11 9 9 10</span>],[<span style="color:#0e9ce5">17</span> <span style="color:#0e9ce5">11</span>],[<span style="color:#0e9ce5">14</span> <span style="color:#0e9ce5">10</span> <span style="color:#0e9ce5">9</span>],[<span style="color:#0e9ce5">13</span> <span style="color:#0e9ce5">11</span> <span style="color:#0e9ce5">10</span>],<span style="color:#0e9ce5">0</span>};</code><code>​</code><code>CO={[<span style="color:#0e9ce5">1.7</span> <span style="color:#0e9ce5">1.3</span> <span style="color:#0e9ce5">1.1</span>],[<span style="color:#0e9ce5">1.2</span> <span style="color:#0e9ce5">2.9</span> <span style="color:#0e9ce5">2.1</span> <span style="color:#0e9ce5">1.6</span>],[<span style="color:#0e9ce5">1.9</span> <span style="color:#0e9ce5">1.8</span> <span style="color:#0e9ce5">1.4</span> <span style="color:#0e9ce5">2</span>],[<span style="color:#0e9ce5">3</span> <span style="color:#0e9ce5">1.9</span> <span style="color:#0e9ce5">2.5</span> <span style="color:#0e9ce5">2</span>],<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">2.6 2.1 1.8</span>],[<span style="color:#0e9ce5">2.6</span> <span style="color:#0e9ce5">2.2</span> <span style="color:#0e9ce5">1.4</span>],[<span style="color:#0e9ce5">2.5</span> <span style="color:#0e9ce5">1.8</span> <span style="color:#0e9ce5">2.1</span> <span style="color:#0e9ce5">2.4</span> <span style="color:#0e9ce5">2.1</span> <span style="color:#0e9ce5">2.5</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">2.2 1.6</span>],[<span style="color:#0e9ce5">1.7</span> <span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">2.2</span> <span style="color:#0e9ce5">1.9</span>],[<span style="color:#0e9ce5">2.1</span> <span style="color:#0e9ce5">2</span> <span style="color:#0e9ce5">1.4</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">1.7 1.6</span>],[<span style="color:#0e9ce5">1.3</span> <span style="color:#0e9ce5">1.5</span> <span style="color:#0e9ce5">1.4</span>],<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>,<span style="color:#0e9ce5">0</span>;</code><code>    [<span style="color:#afafaf">2.1 2.2 2.5</span>],[<span style="color:#0e9ce5">2.6</span> <span style="color:#0e9ce5">2.2</span> <span style="color:#0e9ce5">2.1</span>],[<span style="color:#0e9ce5">1.9</span> <span style="color:#0e9ce5">1.7</span> <span style="color:#0e9ce5">2.2</span>],[<span style="color:#0e9ce5">2.7</span> <span style="color:#0e9ce5">2.2</span> <span style="color:#0e9ce5">1.5</span> <span style="color:#0e9ce5">1.9</span>],[<span style="color:#0e9ce5">1.6</span> <span style="color:#0e9ce5">2.3</span> <span style="color:#0e9ce5">2.4</span>];</code><code>    [<span style="color:#afafaf">1.8 2.1 1.6 1.5 2.2 1.5</span>],[<span style="color:#0e9ce5">1.8</span> <span style="color:#0e9ce5">2.1</span>],[<span style="color:#0e9ce5">2.3</span> <span style="color:#0e9ce5">2.4</span> <span style="color:#0e9ce5">2.5</span>],[<span style="color:#0e9ce5">2.1</span> <span style="color:#0e9ce5">1.9</span> <span style="color:#0e9ce5">1.1</span>],<span style="color:#0e9ce5">0</span>};</code><code>​</code><code>[<span style="color:#afafaf">MinVal,P,PVal,MVal</span>]=IWOA(M,Jm,T,CO,RouN);</code></span></span>

3 运行结果

4 参考文献

[1]王思涵, 黎阳, 李新宇. 基于鲸鱼群算法的柔性作业车间调度方法[J]. 重庆大学学报:自然科学版, 2020(1):11.

[2]栾飞, 李富康, 蔡宗琰,等. 一种基于改进鲸鱼算法求解柔性作业车间调度的方法:, CN109886588A[P]. 2019.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值