车间调度基于matlab帝国企鹅算法求解柔性车间调度问题含matlab源码1991期

佛怒火莲 佛怒火莲     2022-11-29     456

关键词:


一、车间调度简介

1 车间调度定义
车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加工。问题需要满足的条件包括每个零件的各道工序使用每台机器不多于1次,每个零件都按照一定的顺序进行加工。

2 传统作业车间调度

传统作业车间带调度实例

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


有若干工件,每个工件有若干工序,有多个加工机器,但是每道工序只能在一台机器上加工。对应到上面表格中的实例就是,两个工件,工件J1有三道工序,工序Q11只能在M3上加工,加工时间是5小时。

约束是对于一个工件来说,工序的相对顺序不能变。O11->O12->O13。每时刻,每个工件只能在一台机器上加工;每个机器上只能有一个工件。

调度的任务则是安排出工序的加工顺序,加工顺序确定了,因为每道工序只有一台机器可用,加工的机器也就确定了。

调度的目的是总的完工时间最短(也可以是其他目标)。举个例子,比如确定了O21->O22->O11->O23->O12->O13的加工顺序之后,我们就可以根据加工机器的约束,计算出总的加工时间。

M2加工O21消耗6小时,工件J2当前加工时间6小时。

M1加工O22消耗9小时,工件J2当前加工时间6+9=15小时。

M3加工O11消耗5小时,工件J1当前加工时间5小时。

M4加工O23消耗7小时,工件J2加工时间15+7=22小时。

M1加工O12消耗11小时,但是要等M1加工完O22之后才开始加工O12,所以工件J1的当前加工时间为max(5,9)+11=20小时。

M5加工O13消耗8小时,工件J2加工时间20+8=28小时。

总的完工时间就是max(22,28)=28小时。2 柔性作业车间调度

柔性作业车间带调度实例(参考自高亮老师论文

《改进遗传算法求解柔性作业车间调度问题》——机械工程学报)

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


相比于传统作业车间调度,柔性作业车间调度放宽了对加工机器的约束,更符合现实生产情况,每个工序可选加工机器变成了多个,可以由多个加工机器中的一个加工。比如上表中的实例,J1的O12工序可以选择M2和M4加工,加工时间分别是8小时和4小时,但是并不一定选择M4加工,最后得出来的总的完工时间就更短,所以,需要调度算法求解优化。

相比于传统作业车间,柔性车间作业调度的调度任务不仅要确定工序的加工顺序,而且需要确定每道工序的机器分配。比如,确定了O21->O22->O11->O23->O12->O13的加工顺序,我们并不能相应工序的加工机器,所以还应该确定对应的[M1、M3、M5]->[M1、M2、M3]->[M1、M2、M3、M4、M5]->[M2、M3、M4、M5]->[M2、M4]->[M1、M3、M4、M5]的机器组合。调度的目的还是总的完工时间最短(也可以是其他目标,比如机器最大负荷最短、总的机器负荷最短)

二、帝企鹅算法简介

目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法、萤火虫算法进行了对比分析. 帝企鹅从事各种活动,如狩猎、群体觅食,是群居性动物.每当恶劣的气候来临,它们会挤在一起防风御寒.帝企鹅在南极极端冬季期间主要以集群的方式互相取暖来度过−40 ℃ 的冬季. 为了保证每只企鹅都能取暖,因此每只企鹅都在平等地做出贡献,同时它们的社交行为极为团结以及分工明确. 集群的行为可归纳如下.
1 确定集群边界范围 
设定在帝企鹅蜷缩取暖的过程中所选择的位置范围在多边形的网格范围内,帝企鹅在聚集的过程中至少与两只以上的帝企鹅相邻,邻居的选择是随机的;而在帝企鹅集群过程中范围的边界是不规则的多边形,因此用围绕住帝企鹅集群的风的梯度来表示整体集群的边界,在此定义风速 和其梯度 、 ,集群边界 ,可表示为
γ = ∆α, (8) µ = α+iβ. (9) W

2 计算集群层次周围的温度 

南极严酷的外界环境使得帝企鹅在迁徙过程中面对寒冷天气会采取集群取暖来保持温度. 若当前聚集半径 d>0.5 时,其温度 W=0;当 d<0.5 时,其温度 W=1. 温度梯度曲线可以描述为

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


其中, 为最大迭代次数,x 为当前迭代次数,温度的表达式

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


3 计算帝企鹅间的距离 

在集群范围内帝企鹅间的距离表示为该个体与集群中心帝企鹅的距离,集群距离公式如下:

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


其中, 代表帝企鹅距中心距离; x 表示当前迭代数; 和 用于帝企鹅体积设置的影响向量因子,

避免个体间的冲突; 为 x 轮最优解;表示当前帝企鹅的位置向量; 定义帝企鹅的主体社会地位,负责区别最优个体与普通个体. 向量和 计算如下:

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


其中 , 是移动步长参数,这里 的值设置为 2.5, 通过比较与最优的差异来定义多边形网格精度,而 是一个随机函数. 函数计算如下:

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


其中,ξ 和 φ是控制参数,其值分别在(2,3)(1.5,2)的范围内能得出更好的结果.

4 帝企鹅位置更新 帝企鹅集群中的个体通过向集群中心帝企鹅 Q 的方向移动更新位置信息,其位置更新如下:
Oep(x+1) = Obest(x)−ΓLep, (17)
其中,Oep(x+1)代表皇帝企鹅的下一个更新位置.在迭代过程中,一旦移动者重新定位,帝企鹅的上述参数将被重新计算.

三、部分源代码

clc;
clear;
close all;
warning off
%% 固定随机数种子
noRNG=1;
rng(default)
rng(noRNG)
%% 载入数据
data.Process=xlsread(data.xlsx,1);
data.lambda_gama=xlsread(data.xlsx,2);
data.numP=length(data.Process(:,1));
data.numJ=max(data.Process(:,1));
data.numM=4; %机器数量
data.Z=10;
dim=data.numP*data.numM;
%%
option.dim=dim; %八个决策变量
lb=0;
ub=1;
option.lb=lb;
option.ub=ub;
if length(option.lb)==1
option.lb=ones(1,option.dim)*option.lb;
option.ub=ones(1,option.dim)*option.ub;
end
option.fobj=@aimFcn_1;
%option.fobj0=option.fobj;
option.showIter=0;
%% 算法参数设置 Parameters
% 基本参数
option.numAgent=20; %种群个体数 size of population
option.maxIteration=20; %最大迭代次数 maximum number of interation
% 帝企鹅算法
option.v_lb=-(option.ub-option.lb)/4;
option.v_ub=(option.ub-option.lb)/4;
option.w2=0.5; %weight of Moving strategy III
option.w4=1;%weight of Moving strategy III
option.w5=1;%weight of Moving strategy III
option.pe=0.01; % rate to judge Premature convergence
option.gap0=ceil(sqrt(option.maxIteration*2))+1;
option.gapMin=5; % min gap
option.dec=2; % dec of gap
option.L=10; % Catastrophe
str_legend=[AFO1,AFO2];
%% Initialize population individuals (common to control experiment algorithm)
x=ones(option.numAgent,option.dim);
y=ones(option.numAgent,1);
for i=1:option.numAgent
x(i,:)=rand(size(option.lb)).*(option.ub-option.lb)+option.lb;
y(i)=option.fobj(x(i,:),option,data);
end
%% 使用算法求解
% Based on the same population, solve the selected functions by using different algorithms
bestX=x;
rng(noRNG)
tic
[bestY(1,:),bestX(1,:),recording(1)]=AFO1(x,y,option,data);
tt(1,1)=toc;
rng(noRNG)
tic
[bestY(2,:),bestX(2,:),recording(2)]=AFO2(x,y,option,data);
tt(1,2)=toc;
%%
figure
hold on
for i=1:length(recording)
plot(-(recording(i).bestFit),LineWidth,2)
end
legend(str_legend)
title(fitness curve)

%% 输出结果
str=AFO1
[~,result1]=option.fobj(bestX(1,:),option,data);
color=colormap(jet);
drawPC(result1,color,str)
str=AFO2
[~,result2]=option.fobj(bestX(2,:),option,data);
color=colormap(jet);
drawPC(result2,color,str)

四、运行结果

【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码


【车间调度】基于matlab帝国企鹅算法求解柔性车间调度问题【含Matlab源码

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周萧,王万良,徐新黎.解决作业车间调度问题的混合差分进化算法[J].轻工机械. 2010,28(05)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除


车间调度基于matlab遗传算法求解车间调度问题含matlab源码1396期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab蝴蝶算法求解车间调度问题含matlab源码1395期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

用python实现基于遗传算法(ga)求解混合流水车间调度问题(hfsp)(代码片段)

之前一直研究的是柔性作业车间调度问题,研究汇总如下:用python实现基于遗传算法求解柔性作业车间调度问题代码实现(包括标准算例准换、编码、解码、交叉、变异的详细讲述) 用python实现基于蚁群算法求... 查看详情

车间调度基于matlab候鸟算法mbo求解柔性作业车间调度问题含matlab源码2354期

⛄一、车间调度简介1柔性作业车间调度问题FJSP问题可描述为:车间内n个工件在m台机器上加工.各工件均包含一道或多道工序,同工件各工序间存在固定的加工顺序.工序可在多于一台的机器上加工,其加工时间与所在机器有关.FJSP问... 查看详情

车间调度基于matlab模拟退火算法求解车间调度问题含matlab源码894期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab粒子群算法求解车间生产调度问题含matlab源码245期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab遗传算法求解车间调度问题(含甘特图)含matlab源码2216期(代码片段)

⛄一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上... 查看详情

车间调度基于matlab模拟退火算法求解车间调度(jobshop-3)问题含matlab源码1082期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab改进的遗传算法求解车间调度问题含matlab源码h002期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlabnsga2算法求解车间调度问题含matlab源码893期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

车间调度基于matlab模拟退火算法求解单约束车间流水线调度问题含matlab源码1457期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

作业调度基于matlabgui遗传算法求解车间作业调度问题(获益最大)含matlab源码2025期

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加工。... 查看详情

车间调度基于matlab差分进化算法求解作业车间调度问题含matlab源码1743期(代码片段)

一、车间调度简介1车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序,从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加... 查看详情

模糊时间的柔性车间调度问题-python实现遗传算法求解(代码片段)

目录1问题描述1.1模糊加工时间的运算 2编码解码 3算例4算法4.1 文献【2】中算例验证4部分代码展示完整代码:https://github.com/Aihong-Sun/FJSP_FP_GA1问题描述        模糊性和灵活性的概念普遍存在于实际制造系统中,因... 查看详情

车间调度基于matlab混合蛙跳算法(sfla)求解简单调度问题含matlab源码2247期

⛄一、车间调度简介在传统的SFLA中,每一个青蛙的位置代表一个解,若干个青蛙组成的种群代表一个解的集合,种群被划分为不同的组,即模因组,对每个模因组执行搜索过程,当达到终止条件后,重... 查看详情

优化调度基于matlab帝国企鹅算法求解航空调度优化问题含matlab源码yxs001期

一、帝企鹅算法简介目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法、萤火虫算法进行了对比分析.帝企鹅从事各种活动,如狩猎、群体觅食,是群居性动物.每当... 查看详情

优化调度基于matlab帝国企鹅算法求解航空调度优化问题含matlab源码yxs001期

一、帝企鹅算法简介目前,关于帝企鹅算法在国内外研究较少,在中对该算法进行了分析,并且与常见的粒子群算法、萤火虫算法进行了对比分析.帝企鹅从事各种活动,如狩猎、群体觅食,是群居性动物.每当... 查看详情

matlab基于多层编码遗传算法的车间调度算法matlab优化算法十九(代码片段)

基于多层编码遗传算法的车间调度算法理论基础遗传算法具有较强的问题求解能力,能够解决非线性优化问题。遗传算法中的每个染色体表示问题中的一个潜在最优解,对于简单的问题来说,染色体可以方便地表达问... 查看详情