混合遗传算法求解FJSP柔性作业车间调度最优化问题

0、柔性作业调用问题介绍

调度问题是制造流程规划和管理中最关键的问题之一。

这个领域最困难的问题之一是作业车间调度问题(Job-shop Scheduling Problem, JSP),该问题中,一组机器需处理一组工件,每个工件由一系列具有先后顺序约束的工序形成,每个工序只需要一台机器,机器一直可用,可以一次处理一个操作而不会中断。决策内容包括如何对机器上的工序进行排序,已优化给定的性能指标。JSP的典型性能指标是完工时间 (makespan),即完成所有工作所需的时间。JSP是一个众所周知的NP难题。柔性作业车间调度问题(Flexible Job-shop Scheduling Problem, FJSP)是经典JSP的拓展,该问题中每个工序允许在一组可用机器中的任何一个上进行处理。FJSP比传统的JSP更难,因为它引入了除了排序之外的另一个决策内容,即作业路径。确定作业路径意味着为每个工序决定使用哪台机器处理它。

1、柔性作业问题标准算例

柔性作业问题国内外学者研究非常多,也形成了大量标准测试数据,华中科技大学研究团队中在国际100多个FJSP的基准算例中取得突破,其中80%以上的问题都突破取得了最优解,以下是Brandimarte系列标准算例中的MK01示例,15个订单,6个设备,平均每个工序有2个设备可以加工。

//Brandimarte MK01 表示算例,10个订单,6个设备,求最短完工时间:

10 6 2
6 2 1 5 3 4 3 5 3 3 5 2 1 2 3 4 6 2 3 6 5 2 6 1 1 1 3 1 3 6 6 3 6 4 3 
5 1 2 6 1 3 1 1 1 2 2 2 6 4 6 3 6 5 2 6 1 1 
5 1 2 6 2 3 4 6 2 3 6 5 2 6 1 1 3 3 4 2 6 6 6 2 1 1 5 5 
5 3 6 5 2 6 1 1 1 2 6 1 3 1 3 5 3 3 5 2 1 2 3 4 6 2
6 3 5 3 3 5 2 1 3 6 5 2 6 1 1 1 2 6 2 1 5 3 4 2 2 6 4 6 3 3 4 2 6 6 6
6 2 3 4 6 2 1 1 2 3 3 4 2 6 6 6 1 2 6 3 6 5 2 6 1 1 2 1 3 4 2
5 1 6 1 2 1 3 4 2 3 3 4 2 6 6 6 3 2 6 5 1 1 6 1 3 1
5 2 3 4 6 2 3 3 4 2 6 6 6 3 6 5 2 6 1 1 1 2 6 2 2 6 4 6
6 1 6 1 2 1 1 5 5 3 6 6 3 6 4 3 1 1 2 3 3 4 2 6 6 6 2 2 6 4 6
6 2 3 4 6 2 3 3 4 2 6 6 6 3 5 3 3 5 2 1 1 6 1 2 2 6 4 6 2 1 3 4 2

2、柔性作业问题标准算例解析方法

 

3、通过APS导入JSSP柔性作业车间模型

APS高级计划排程支持直接导入JSSP柔性作业车间模型也支持JSP柔性作业车间模型,FSP流水车间作业模型,以下是MK01示例在APS系统中建模效果如下:

APS可视化制造BOM展示,MK01中的第三行数据:5 1 2 6 1 3 1 1 1 2 2 2 6 4 6 3 6 5 2 6 1 1,代表第二个B产品,工艺路线包含5到工序,第1,2,3道工序有1个设备,第4,5分别有2,3个可用设备,每个设备的加工工时不相同,具体如下图所示。

 

 在制造BOM视图中,可选择右侧的菜单,分别查看不同产品的工艺路线与标准工时

 同时APS系统横向制造BOM展示可以直观的在一个界面查看所有产品的工艺路线与标准工时,具体如下图所示

 

3、易普优APS采用混合遗传算法进行最优化求解

随着APS概念的深入,企业对APS高级计划排程系统的要求越来越高,很多时候不仅仅是简单设置订单排序、工作排序、资源排序规则就可以满足业务需求,而是需要根据目标进行优化,求解符合目标的最优解或者较优解,易普优APS基于深厚的理论研究基础与实际项目经验,支持通过遗传算法、模拟退火、禁忌搜索等混合智能优化算法,快速求最优解,如下图所示MK01标准算例的一个较优解,是目前市面上唯一可以进行最优化求解的企业级APS计划排程软件,国外一些知名的APS软件没有优化功能,相关数据导入系统测试排不出优化结果。

 

4、APS排程结果直接指导生产

APS高级计划排程系统的排程结果,可以导出成excel,或者发布到MES系统,或者直接生成看板,指导车间作业。

 

5、APS高级计划排程系统多版本计划结果对比

APS高级计划排程系统是基于算法,可以保存多个版本的计划结果,每一个版本的方案结果可以通过编码规则保存,同时通过反序列化可以还原每一个版本的计划结果,从而做到多个版本的计划结果对比功能,计划结果评估与方案保存如下图所示。

 

6、柔性作业车间的智能优化算法介绍

APS高级计划排程系统是基于全局搜索(遗传算法),以及邻域搜索(爬山算法,模拟退火,禁忌搜索)的混合优化算法,其中遗传算法是一种解决大规模计算问题的全局搜索方法,它是受自然界中生物进化的启发而提出的。

爬山算法是一种贪心算法,该算法每次从当前解的临近的解集中寻找一个最优解作为当前解,直到达到一个局部最优解。爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。

模拟退火算法也是一种贪心算法,通过模拟物理降温过程,它的搜索过程引入了随机因素,以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。

禁忌搜索算法的采用一个禁忌表记录下已经到达过的局部最优点,在下一次搜索中,利用禁忌表中的信息不再或有选择地搜索这些点。

算法最核心的地方在于编码方式,易普优APS采取基于工件,机器双重编码方式进行快速求解,原理如下图所示,具体细节可以参考书籍:《柔性作业车间调度智能算法及其应用》

在传统的遗传算法中,交叉产生的子代总是被接受,即使它们的适应度远低于父代的适应度,这可能造成优良解被丢失或破坏,本系统采用改进的遗传算法,改进遗传算法框架图如下:

Step1:初始化随机产生P个染色体个体,P为种群规模;
Step2:计算个体适应度,评价个体适应度;
Step3:判断是否达到终止条件,若满足则输出最好解,结束算法;否则转Step4;
Step4:按照选择策略选取下一代种群;
Step5a:按交叉概率Pc,对两父代个体交叉n次,从最优父代何所有后代中选择最优两染色体作为下一代;
Step5b:按变异概率Pm选择个体,变异操作生成新个体;
Step6:通过邻域算法,对最优个体进行邻域搜索;
Step7:生成新一代种群,返回Step3;

 

7、APS高级计划排程系统应用场景

APS高级计划排程系统是不仅仅用于企业应用,解决PMC计划难题,并且在十几个行业,如离散机加、工程机械,电子电器、汽车零部件、包装印刷,军工等取得很好的应用效果;

同时可以用于科研教育,基于全局搜索(遗传算法),以及邻域搜索(爬山算法,模拟退火,禁忌搜索)的混合优化算法,对国际柔性作业车间调度问题的基准数据集,LA01-LA40;ABZ5-ABZ9;SWV01-SWV20;YN1-YN4,DM01-DMU80等问题,可以快速求得最优解或者近优解,可以为相应的研究提供辅助工具。

 

其他APS高级计划排程系统相关扩展阅读

1、APS高级计划排程系统应该支持的企业应用场景

  • 11
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
本文介绍了使用Matlab实现多目标灰狼优化算法(Multi-Objective Grey Wolf Optimizer,MOGWO)来求解柔性作业车间调度问题(Flexible Job-Shop Scheduling Problem,FJSP)的方法。 1. 柔性作业车间调度问题 柔性作业车间调度问题是指在一台机器上,需要安排多个作业在多个工序上进行加工,每个作业需要在不同的工序上进行加工,每个工序需要一定的时间和资源,同时需要考虑不同的约束条件(如最早开始时间、最迟完成时间、作业间的优先关系等),目标是最小化完成所有作业的总时间或最小化机器的空闲时间。 2. 多目标灰狼优化算法 多目标灰狼优化算法是基于灰狼优化算法(Grey Wolf Optimizer,GWO)的多目标优化版本。该算法模拟了灰狼社会的行为,通过抓住“alpha”、“beta”和“delta”三个主导灰狼的行为来优化目标函数。多目标灰狼优化算法可以同时优化多个目标函数。 3. 求解柔性作业车间调度问题 求解柔性作业车间调度问题的过程可以分为以下几个步骤: (1)编写目标函数:将FJSP问题转化为目标函数,将多个目标函数合并成一个多目标函数。 (2)确定参数:确定算法的参数,如灰狼个数、最大迭代次数、交叉率等。 (3)初始化灰狼群体:根据问题的特性,初始化灰狼群体。 (4)灰狼优化过程:根据多目标灰狼优化算法,进行灰狼优化过程。 (5)结果分析:分析灰狼优化的结果,得到最优解。 4. Matlab实现 在Matlab中,可以使用以下代码实现MOGWO算法求解FJSP问题: % FJSP问题的目标函数 function f = FJSP(x) % x为决策变量,即作业的加工顺序 % 定义多个目标函数 f(1) = 计算完成所有作业的总时间 f(2) = 计算机器的空闲时间 % 将多个目标函数合并成一个多目标函数 f = [f(1) f(2)] end % MOGWO算法 function [bestx, bestf] = MOGWO(f, lb, ub, MaxIt, nPop, nObj, pCrossover, pMutation) % f为目标函数,lb和ub为决策变量的上下界,MaxIt为最大迭代次数,nPop为灰狼个数,nObj为目标函数个数,pCrossover和pMutation分别为交叉率和变异率 % 初始化灰狼群体 X = repmat(lb, nPop, 1) + rand(nPop, nObj).*(repmat(ub-lb, nPop, 1)); % 迭代优化过程 for it = 1:MaxIt % 计算适应度 F = zeros(nPop, nObj); for i = 1:nPop F(i,:) = f(X(i,:)); end % 更新最优解 [bestf, idx] = min(F); bestx = X(idx,:); % 更新灰狼位置 for i = 1:nPop % 计算灰狼位置 A = 2*rand(nObj,1)-1; C = 2*rand(nObj,1); D = abs(C.*bestx - X(i,:)); X1 = bestx - A.*D; % 交叉和变异 mask = rand(nObj,1) < pCrossover; X2 = X1; X2(~mask) = X(i,~mask); mask = rand(nObj,1) < pMutation; X3 = X2; X3(mask) = lb(mask) + rand(sum(mask),1).*(ub(mask)-lb(mask)); % 更新灰狼位置 X(i,:) = X3; end end end % 测试 % 假设有10个作业,每个作业需要在3个机器上进行加工 nJob = 10; nMachine = 3; % 初始化上下界 lb = zeros(1, nJob*nMachine); ub = ones(1, nJob*nMachine); % 假设最大迭代次数为100,灰狼个数为50,目标函数个数为2 MaxIt = 100; nPop = 50; nObj = 2; % 假设交叉率为0.8,变异率为0.3 pCrossover = 0.8; pMutation = 0.3; % 调用MOGWO算法求解FJSP问题 [bestx, bestf] = MOGWO(@FJSP, lb, ub, MaxIt, nPop, nObj, pCrossover, pMutation); % 输出结果 disp('Best Solution:'); disp(bestx); disp('Best Objective:'); disp(bestf);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值