基于随机蛙跳算法(SFLA)的简单调度问题(Matlab代码实现)

       目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述


生产调度问题作为企业生产管理和计算机集成制造系统的核心部分,近年来一直受到广大学者的密切关注。其主要任务是分配有限的企业资源,达到经济或性能上的需求目标。显而易见,系统、全面、合理、优化的生产调度方案不仅有助于提高企业的综合管理水平,而且可以为企业带来显著的经济效益。

生产调度问题己被证明属于NP-hard问题,因此传统的优化方法己不能有效地求解大规模复杂的调度问题。基于此,近年来各种不同的人工智能方法逐渐被引入到调度领域中,取得了很大进展。其中随着计算机技术以及人工智能技术的迅猛发展,群智能优化算法应运而生。它可以在较短的时间内得到令人满意的近似最优解,已经成为了一类能够有效解决生产调度问题的新型方法。本文基于随机蛙跳算法(SFLA)解决简单调度问题。​

📚2 运行结果

主函数部分代码:

%% Simple Scheduling Problem by Shuffled Frog Leaping Algorithm (SFLA)% There are 10 jobs or tasks which should be finished in time. % In "CreateModel.m" file:% p is process time for jobs % s is setup time matrix (spaces between boxes in plot)% d is jobs due % You can change them.% q is order of jobs% ST is start time% FT is finish time% z is final cost and Cmax must be equal with it or it is a violation. %%------------------------------------------------------------------clc;clear;close all;%% Problem model=CreateModel();CostFunction=@(s) MyCost(s,model);        % Cost FunctionnVar=model.n;             % Number of Decision VariablesVarSize=[1 nVar];   % Decision Variables Matrix SizeVarMin=0;         % Lower Bound of VariablesVarMax=1;         % Upper Bound of Variables%% SFLA ParametersMaxIt = 100;        % Maximum Number of IterationsnPopMemeplex = 5;                          % Memeplex SizenPopMemeplex = max(nPopMemeplex, nVar+1);   % Nelder-Mead StandardnMemeplex = 5;                  % Number of MemeplexesnPop = nMemeplex*nPopMemeplex;  % Population SizeI = reshape(1:nPop, nMemeplex, []);% FLA Parametersfla_params.q = max(round(0.3*nPopMemeplex), 2);   % Number of Parentsfla_params.alpha = 3;   % Number of Offspringsfla_params.beta = 5;    % Maximum Number of Iterationsfla_params.sigma = 2;   % Step Sizefla_params.CostFunction = CostFunction;fla_params.VarMin = VarMin;fla_params.VarMax = VarMax;%% Initialization% Empty Individual Templateempty_individual.Position = [];empty_individual.Cost = [];empty_individual.Sol = [];% Initialize Population Arraypop = repmat(empty_individual, nPop, 1);% Initialize Population Membersfor i = 1:nPoppop(i).Position = unifrnd(VarMin, VarMax, VarSize);[pop(i).Cost pop(i).Sol] = CostFunction(pop(i).Position);end% Sort Populationpop = SortPopulation(pop);% Update Best Solution Ever FoundBestSol = pop(1);% Initialize Best Costs Record ArrayBestCosts = nan(MaxIt, 1);

🎉3 参考文献

[1]韩炜. 基于改进蛙跳算法的生产调度问题研究[D].华东理工大学,2014.

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值