
欢迎来到海神之光博客之家✅博主简介热爱科研的Matlab仿真开发者修心和技术同步精进个人主页海神之光代码获取方式海神之光Matlab王者学习之路—代码获取方式⛳️座右铭行百里者半于九十。更多Matlab车间调度仿真内容点击①付费专栏Matlab车间调度初级版②Matlab车间调度 进阶版⛳️关注CSDN海神之光更多资源等你来⛄一、车间调度简介1 车间调度定义车间调度是指根据产品制造的合理需求分配加工车间顺序从而达到合理利用产品制造资源、提高企业经济效益的目的。车间调度问题从数学上可以描述为有n个待加工的零件要在m台机器上加工。问题需要满足的条件包括每个零件的各道工序使用每台机器不多于1次每个零件都按照一定的顺序进行加工。2 传统作业车间调度传统作业车间带调度实例有若干工件每个工件有若干工序有多个加工机器但是每道工序只能在一台机器上加工。对应到上面表格中的实例就是两个工件工件J1有三道工序工序Q11只能在M3上加工加工时间是5小时。约束是对于一个工件来说工序的相对顺序不能变。O11-O12-O13。每时刻每个工件只能在一台机器上加工每个机器上只能有一个工件。调度的任务则是安排出工序的加工顺序加工顺序确定了因为每道工序只有一台机器可用加工的机器也就确定了。调度的目的是总的完工时间最短也可以是其他目标。举个例子比如确定了O21-O22-O11-O23-O12-O13的加工顺序之后我们就可以根据加工机器的约束计算出总的加工时间。M2加工O21消耗6小时工件J2当前加工时间6小时。M1加工O22消耗9小时工件J2当前加工时间6915小时。M3加工O11消耗5小时工件J1当前加工时间5小时。M4加工O23消耗7小时工件J2加工时间15722小时。M1加工O12消耗11小时但是要等M1加工完O22之后才开始加工O12所以工件J1的当前加工时间为max(5,9)1120小时。M5加工O13消耗8小时工件J2加工时间20828小时。总的完工时间就是max(22,28)28小时。2 柔性作业车间调度柔性作业车间带调度实例参考自高亮老师论文《改进遗传算法求解柔性作业车间调度问题》——机械工程学报相比于传统作业车间调度柔性作业车间调度放宽了对加工机器的约束更符合现实生产情况每个工序可选加工机器变成了多个可以由多个加工机器中的一个加工。比如上表中的实例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]的机器组合。调度的目的还是总的完工时间最短也可以是其他目标比如机器最大负荷最短、总的机器负荷最短⛄二、蛙跳算法简介1 蛙跳算法定义蛙跳算法SFLA是一种全新的后启发式群体进化算法具有高效的计算性能和优良的全局搜索能力。对混合蛙跳算法的基本原理进行了阐述针对算法局部更新策略引起的更新操作前后个体空间位置变化较大降低收敛速度这一问题提出了一种基于阈值选择策略的改进蛙跳算法。通过不满足阈值条件的个体分量不予更新的策略减小了个体空间差异从而改善了算法的性能。数值实验证明了该改进算法的有效性并对改进算法的阈值参数进行了率定。2 蛙跳算法特点SFLA由Eusuff和Lansey为解决组合优化问题于2003年最先提出。作为一种新型的仿生物学智能优化算法SFLA 结合了基于模因meme进化的模因演算法MAmemeticalgorithm和基于群体行为的粒子群算法PSO,particle swarm optimization2 种群智能优化算法的优点。该算法具有概念简单调整的参数少计算速度快全局搜索寻优能力强易于实现的特点。混合蛙跳算法主要应用于解决多目标优化问题例如水资源分配、桥墩维修、车间作业流程安排等工程实际应用问题。3 蛙跳算法原理蛙跳算法的思想是在一片湿地中生活着一群青蛙。湿地内离散的分布着许多石头青蛙通过寻找不同的石头进行跳跃去找到食物较多的地方。每只青蛙个体之间通过文化的交流实现信息的交换。每只青蛙都具有自己的文化。每只青蛙的文化被定义为问题的一个解。湿地的整个青蛙群体被分为不同的子群体每个子群体有着自己的文化执行局部搜索策略。在子群体中的每个个体有着自己的文化并且影响着其他个体也受其他个体的影响并随着子群体的进化而进化。当子群体进化到一定阶段以后各个子群体之间再进行思想的交流全局信息交换实现子群体间的混合运算一直到所设置的条件满足为止。4 蛙跳算法数学模型算法参数与其他优化算法一样SFLA亦具有一些必要的计算参数包括F蛙群的数量m族群的数量n族群中青蛙的数量Smax最大允许跳动步长Px全局最好解Pb局部最好解Pw局部最差解q子族群中蛙的数量LS局部元进化次数以及SF全局思想交流次数等。更新策略对于青蛙群体具有全局最好适应度的解表示为 U g对于每一个子族群具有最好适应度的解表示为 UB最差适应度的解表示为 UW。首先对每个子族群进行局部搜索即对子族群中最差适应度的青蛙个体进行更新操作更新策略为青蛙更新距离 Dsrand()*(Pb-Pw) 1更新后的青蛙 newDwoldPwDs-Dmax≦Ds≦Dmax 2其中 Ds 表示青蛙个体的调整矢量 Dmax表示青蛙个体允许改变的最大步长。如设 Uw[1 3 5 4 2], UB[2 1 5 3 4],允许改变的最大步长 Dmax 3若rand0.5 则 U q(1) 1min{int[0.5 × (2−1)],3}1; U q(2) 3max{int[0.5×(1−3)], −3}2;依此相同的操作完成更新策略后可得到一个新解 U q[1 2 5 4 3].5 蛙跳算法本段过程全局搜索过程步骤l 初始化。确定蛙群的数量、种群以及每个种群的青蛙数。步骤2 随机产生初始蛙群计算各个蛙的适应值。步骤3 按适应值大小进行降序排序并记录最好解Px并且将蛙群分成族群。把F个蛙分配到m个族群YYY…,Y中去每个族群包含n个蛙从而使得Yk[X(j),f(j)|X(j)X(km*(j-1), f(j)f(km*(j-1),j1,…,n,k1,…,m].这里Xj表示蛙群中的第j蛙f(j)表示第j个蛙的目标函数值。步骤4根据SFLA算法公式在每个族群中进行元进化。步骤5将各个族群进行混合。在每个族群都进行过一轮元进化之后将各个族群中的蛙重新进行排序和族群划分并记录全局最好解Px。步骤6检验计算停止条件。如果满足了算法收敛条件则停止算法执行过程否则转到步骤3。通常而言如果算法在连续几个全局思想交流以后最好解没有得到明显改进则停止算法。某些情况下最大函数评价次数也可以作为算法的停止准则。局部搜索过程局部搜索过程是对上述步骤4的进一步展开具体过程如下步骤4—1设imO这里im是族群的计数器。用来与族群总数m进行比较。设iN0这里iN是局部进化的计数器用来与Ls进行比较。步骤4-2根据式(1)在第l1个族群中选择q个蛙进入子族群确定Pb和Pw并设imim1。步骤4-3设iNiN1。步骤4—4根据式(2)和式(3)改进子族群中的最差蛙的位置。步骤4—5如果步骤4—4改进了最差蛙的位置(解)就用新产生的位置取代最差蛙的位置。否则就采用Px代替式(2)中的PB重新更新最差蛙的位置。步骤4—6如果步骤4-5没有改进最差蛙的位置则随机产生一个处于湿地中任何位置的蛙来替代最差的蛙。步骤4—7如果iNLS则转到步骤4-3。步骤4—8如果imm则转到步骤4-2否则转到全局搜索过程的步骤5。算法停止条件SFLA通常采用两种策略来控制算法的执行时间1)在最近的K次全局思想交流过程之后全局最好解没有得到明显的改进2)算法预先定义的函数评价次数已经达到。3)已有标准测试结果。无论哪个停止条件得到满足算法都要被强制退出整个循环搜索过程。⛄三、部分源代码clcclear allclose all%--------------------------------------------------------------------------% 问题: N个工件,M台机器的确定型流水车间调度问题% 工件数N20,机器数M10时,有限次数的最优解 fval14.9263,% x [16 4 18 15 12 11 2 1 6 7 3 5 20 …% 10 8 14 13 19 17 9]N 20 % 工件数(解矢量长度)M 10 % 机器数rand(‘state’,NM); % 固定时间矩阵T rand(M,N); % 产生时间矩阵,行数M1为机器数,列数N为工件数rand(‘state’,sum(100*clock)); % 种子恢复随机%--------------------------------------------------------------------------% 必需参数popsize 50; % 种群规模maxgen 50; % 最大进化代数method 4 % 方法选择,1 - 伪并行小生境自适应遗传算法(PPNSA)% 2 - 混合蛙跳算法变异算子(SFLAMO)% 3 - 批处理蛙跳算法(BFLA),为SFLA的改进算法% 4 - PPNSA扰动算子(末选算法,收敛速度中,较易跳出局部极小)% 5 - SFLAMO扰动算子(次选算法,收敛速度快,最易陷入局部极小)% 6 - BFLA扰动算子(首选算法,收敛速度中,可能陷入局部极小)type 1; % 初始化方式,1 - 随机初始化(缺省设置)% 2 - 启发式初始化%--------------------------------------------------------------------------% 函数调用[X,fval,F] SFLA(T,popsize,maxgen,method,type);% 混合蛙跳算法Shuffled Frog-Leaping Alogrihtm,SFLA% 输入参数:% T - 时间矩阵% popsize - 种群规模% maxgen - 最大进化代数% method - 方法选择,1 - 伪并行小生境自适应遗传算法(PPNSA)% 2 - 混合蛙跳算法变异算子(SFLAMO)% 3 - 批处理蛙跳算法(BFLA),为SFLA的改进算法% 4 - PPNSA扰动算子(末选算法,收敛速度中,较易跳出局部极小)% 5 - SFLAMO扰动算子(次选算法,收敛速度快,最易陷入局部极小)% 6 - BFLA扰动算子(首选算法,收敛速度中,可能陷入局部极小)% type - 初始化方式,1 - 随机初始化(缺省设置)% 2 - 启发式初始化% 输出参数:% X - 最优适应度对应的解% fval - 最优适应度值% F - 最优,平均,最差适应度%--------------------------------------------------------------------------% 结果作图figure(1)FigSche(X,T);figure(2);plot(1:maxgen,F,‘.-’); grid on;legend(‘最优’,‘平均’,‘最差’,3);xlabel(‘进化代数’); ylabel(‘适应度’);set(gcf,‘position’,[700 200 500 400])set(gca,‘XLim’,[1 maxgen]);title([‘工件数:’,num2str(N),’ 机器数:‘,num2str(M),’, 最优值:,num2str(fval)]);⛄四、运行结果⛄五、matlab版本及参考文献1 matlab版本2014a2 参考文献[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例第2版[M].电子工业出版社2016.[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社2017.3 备注简介此部分摘自互联网仅供参考若侵权联系删除 仿真咨询1 各类智能优化算法改进及应用生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化2 机器学习和深度学习方面卷积神经网络CNN、LSTM、支持向量机SVM、最小二乘支持向量机LSSVM、极限学习机ELM、核极限学习机KELM、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断3 图像处理方面图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知4 路径规划方面旅行商问题TSP、车辆路径问题VRP、MVRP、CVRP、VRPTW等、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化5 无人机应用方面无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配6 无线传感器定位及布局方面传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化7 信号处理方面信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化8 电力系统方面微电网优化、无功优化、配电网重构、储能配置9 元胞自动机方面交通流 人群疏散 病毒扩散 晶体生长10 雷达方面卡尔曼滤波跟踪、航迹关联、航迹融合