Java教程

【优化调度】基于改进蛙跳算法求解流水车间调度问题matlab代码

本文主要是介绍【优化调度】基于改进蛙跳算法求解流水车间调度问题matlab代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1 简介

针对作业车间调度问题,提出改进的混合蛙跳算法.采用基于工件操作的蛙体结构,定义青蛙的相似性和距离,构造相应的青蛙移位策略,有效克服工件机器顺序的约束限制,保证青蛙新位置的可行性.通过经典算例仿真计算结果表明,该算法能有效求解较大规模的作业车间调度问题.

2 部分代码

clc
clear all
close all

%--------------------------------------------------------------------------
% 问题:自定义时间矩阵的JSSP问题

% 在下面手动输入时间矩阵T(行数M=4为机器数,列数N=5为工件数)
% 仿真实例出处如下:
% [日]玄光男,遗传算法与工程设计,北京:科学出版社,2000,P127. 第5.4.4节 例5.2
% 最优解 fval=213, X = [4 2 5 1 3]

T = [31 19 23 13 33                 % 手动输入时间矩阵T
    41 55 42 22  5
    25  3 27 14 57
    30 34  6 13 19];
[M,N] = size(T)                     % 行数M为机器数,列数N为工件数

%--------------------------------------------------------------------------
% 必需参数

popsize = 50;                       % 种群规模
maxgen = 50;                        % 最大进化代数
method = 6                          % 方法选择,1 - 伪并行小生境自适应遗传算法(PPNSA)
                                   %         2 - 混合蛙跳算法+变异算子(SFLA+MO)
                                   %         3 - 批处理蛙跳算法(BFLA),为SFLA的改进算法
                                   %         4 - PPNSA+扰动算子(末选算法,收敛速度中,较易跳出局部极小)
                                   %         5 - SFLA+MO+扰动算子(次选算法,收敛速度快,最易陷入局部极小)
                                   %         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 - 混合蛙跳算法+变异算子(SFLA+MO)
%                 3 - 批处理蛙跳算法(BFLA),为SFLA的改进算法
%                 4 - PPNSA+扰动算子(末选算法,收敛速度中,较易跳出局部极小)
%                 5 - SFLA+MO+扰动算子(次选算法,收敛速度快,最易陷入局部极小)
%                 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)]);

3 仿真结果

4 参考文献

[1]蔡良伟,李霞. 基于混合蛙跳算法的作业车间调度优化[J]. 深圳大学学报(理工版)(4):391-395.

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

图片

这篇关于【优化调度】基于改进蛙跳算法求解流水车间调度问题matlab代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!