基于变异混合蛙跳算法的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图

news2024/12/23 19:10:24

目录

1.程序功能描述

2.测试软件版本以及运行结果展示

3.核心程序

4.本算法原理

4.1 车间调度问题(JSSP)描述

4.2 蛙跳算法(SFLA)基本原理

4.2.1 初始化

4.2.2 局部搜索

4.2.3 全局信息交换

4.2.4 变异策略

4.2.5 终止条件

5.完整程序


1.程序功能描述

变异混合蛙跳算法的车间调度最优化,可以任意调整工件数和机器数,输出甘特图。

2.测试软件版本以及运行结果展示

MATLAB2022a版本运行

3.核心程序

.........................................................

%初始种群
Pop_n = round(sqrt(Npop));                  
Pop_s = ceil(Npop/Pop_n);               
Npop  = Pop_s*Pop_n;                      

[Xs,ff] = func_initial(T,Npop);

fout = zeros(Iters,1);                                      
for i = 1:Iters
    i
    [ff,I] = sort(ff,'descend');
    Xs     = Xs(I,:);
    Pmax   = Xs(1,:);
    Fmax   = ff(1);

    for j = 1:Pop_n
        Pops       = Xs(j:Pop_n:end,:);            % 子种群
        ff_        = ff(j:Pop_n:end,:);
        [Popss,F3] = func_FLA(T,Pops,ff_,Pmax,Fmax);

        Xs(j:Pop_n:end,:) = Popss;
        ff(j:Pop_n:end,:) = F3;
    end

    [Xsolve,ybest]  = func_Eval(Xs,ff);                      % 进化结果评估
        

    fout(i) = -mean(ybest);
end


 

figure
[Fouts,Etime] = func_fitness(T,Xsolve);
Stime         = Etime-T(:,Xsolve); % 开始时间
fval          = -Fouts;
M1            = size(T,1);    % 行数M1为机器数
NX            = length(Xsolve);    % 列数NX为工件数
for i = 1:M1
    for j = 1:NX
        x1 = Stime(i,j);
        x2 = Etime(i,j);
        y1 = i-1;
        y2 = i-0.05;
        fill([x1 x2 x2 x1],[y1 y1 y2 y2],[0,1,0]);
        text(x1*0.55+x2*0.45,(y1+y2)/2,[num2str(Xsolve(j))],'Fontsize',8,'Color','k');
        hold on;
    end
    text(-0.8,(y1+y2)/2,['机器 ',num2str(i)],'Fontsize',8,'Color','k');
end

hold off; 
xlabel('时间'); 
set(gca,'ytick',[],'YDir','reverse','Color',[1 1 1]);
axis([0 fval 0 M1-0.05]);
title(['工件数:',num2str(NX),', 机器数:',num2str(M1),', 最优值:',num2str(fval)]);


figure;
plot(1:Iters,fout(1:end),'b-o'); 
grid on;
xlabel('进化代数'); 
ylabel('适应度');
21

4.本算法原理

          基于变异混合蛙跳算法的车间调度最优化是一种结合了蛙跳算法(Shuffled Frog Leaping Algorithm, SFLA)和变异策略的优化方法,用于解决车间调度问题(Job-Shop Scheduling Problem, JSSP)。

4.1 车间调度问题(JSSP)描述

       给定一个车间,其中有 (n) 个作业(Jobs)和 (m) 台机器(Machines)。每个作业由一系列工序(Operations)组成,每个工序必须在特定的机器上完成,且每个作业的工序顺序是预先确定的。JSSP的目标是为每个机器找到一个作业工序的序列,使得所有作业的总完成时间最小化。

4.2 蛙跳算法(SFLA)基本原理

        蛙跳算法是一种群体智能优化算法,模拟了蛙群在寻找食物时的跳跃行为。在SFLA中,蛙群被分为多个子群,每个子群内的蛙通过局部搜索和信息交换寻找最优解。VHSFLA在基本SFLA的基础上引入了变异策略,以增强算法的全局搜索能力和避免陷入局部最优解。

4.2.1 初始化

  • 初始化蛙群:随机生成一定数量的蛙(解),每个蛙代表一个可能的作业调度方案。
  • 分组:将蛙群分为多个子群。

4.2.2 局部搜索

在每个子群内,蛙按照一定的规则进行跳跃(即解的更新)。跳跃的步长和方向通常由当前蛙的位置、子群内最优蛙的位置以及全局最优蛙的位置决定。

4.2.3 全局信息交换

经过一定次数的局部搜索后,子群内的蛙会与其他子群的蛙进行信息交换,以促进全局搜索。

4.2.4 变异策略

为了增强算法的全局搜索能力,VHSFLA引入了变异策略。变异操作可以随机地改变蛙的某些基因(即作业工序的顺序),从而产生新的解。

4.2.5 终止条件

算法会在满足一定条件时终止,如达到最大迭代次数或解的质量满足要求。

5.完整程序

VVV

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1408289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音乐证书通过率发布,市场对持有者需求旺盛

音乐证书的考试难度备受关注,通过率终于揭晓。据官方公布的数据,该证书的通过率相对较低,需要考生在音乐技能和表现方面有出色的表现。然而,持有音乐证书的人才在市场上需求旺盛,各种音乐机构和企业对其表现出强烈兴趣…

【AI视野·今日CV 计算机视觉论文速览 第288期】Thu, 11 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Thu, 11 Jan 2024 Totally 50 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Towards Online Sign Language Recognition and Translation Authors Ronglai Zuo, Fangyun Wei, Brian Mak手语识别的目标…

MyBatis详解(2)-- mybatis配置文件

MyBatis详解&#xff08;2&#xff09; mybatis配置文件 mybatis配置文件 1.构建SqlSessionFactory的依据。 2.MyBatis最为核心的内容&#xff0c;对MyBatis的使用影响很大。 3.配置文件的层次顺序不能颠倒&#xff0c;一旦颠倒会出现异常。 < c o n f i g u r a t i o n…

【原创】linux为什么不是实时操作系统

文章目录 一、什么是实时操作系统&#xff08;RTOS&#xff09;&#xff1f;二、linux为什么不是实时操作系统&#xff1f;中断响应时间中断处理时间任务调度时间1、No Forced Preemption(Server)2、Voluntary Kernel Preemption(Desktop)3、Preemptible Kernel(Low-Latency De…

windows 下docker-compose 试玩 paperlsess

第一步安装&#xff1a;&#xff08;假设docker-compose已安装好&#xff09; 下载 docker-compose.yml &#xff0c;docker-compose.env: github下载地址 在docker-paperless.env增加环境变量,设置管理员账户信息&#xff1a; PAPERLESS_ADMIN_USER: admin PAPERLESS_ADMIN_P…

什么品牌洗地机最好?专业旗舰级洗地机推荐

作为一个打工族&#xff0c;很能理解大家对日常清洁繁琐的烦恼&#xff0c;尤其是在忙碌工作后难以有力气打扫卫生。这时候&#xff0c;洗地机就是解决问题的利器了。它不仅方便轻松&#xff0c;还能有效消菌杀毒&#xff0c;助力深度清洁。若你正在为选择哪款洗地机而烦恼&…

当软件开发具备了低代码的开发能力,难以想象会有多“香”

一、前言 低代码开发平台&#xff0c;一个号称能在几分钟的时间里开发出一套公司内部都可使用的应用系统开发工具。 很多人或许都隐隐听说过低代码&#xff0c;因为低代码不仅远名国外&#xff0c;国内的腾讯、阿里、华为、网易、百度等科技巨头也纷纷入局。 那么市面上都有哪些…

【复现】万户ezoffice协同管理平台 SQL注入漏洞_26

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 万户ezOFFICE协同管理平台分为企业版和政务版。 解决方案由五大应用、两个支撑平台组成&#xff0c;分别为知识管理、工作流程、沟…

1.8 万 Star!这款 Nginx 可视化配置工具太强了

NginxConfig简介 Nginx Config 是一个强大的 Nginx 配置文件生成器&#xff0c;号称配置 Nginx 服务器所需的唯一工具。 正因为 Nginx 功能强大&#xff0c;所以针对其各个功能的配置项会显得特别多&#xff0c;对于我们来说要记住那么多配置是一件十分头疼的事&#xff0c;甚…

Python环境下基于机器学习的NASA涡轮风扇发动机剩余使用寿命RUL预测

本例所用的数据集为C-MAPSS数据集&#xff0c;C-MAPSS数据集是美国NASA发布的涡轮风扇发动机数据集&#xff0c;其中包含不同工作条件和故障模式下涡轮风扇发动机多源性能的退化数据&#xff0c;共有 4 个子数据集&#xff0c;每个子集又可分为训练集、 测试集和RUL标签。其中&…

【Java并发】聊聊Future如何提升商品查询速度

java中可以通过new thread、实现runnable来进行实现线程。但是唯一的缺点是没有返回值、以及抛出异常&#xff0c;而callable就可以解决这个问题。通过配合使用futuretask来进行使用。 并且Future提供了对任务的操作&#xff0c;取消&#xff0c;查询是否完成&#xff0c;获取结…

XPath常用定位方式

1、通常定位元素有比较固定的八种定位方式&#xff0c;如下图&#xff1b; 2、平时可以通过浏览器右键进行获取定位方式&#xff0c;但是通常获取的元素无法准确定位或者太长这时就需要自己通过XPath语法来进行定位&#xff1b;目前我这边记录两种常用的定位方式&#xff0c;第…

【大数据】流处理基础概念(二):时间语义(处理时间、事件时间、水位线)

流处理基础概念&#xff08;一&#xff09;&#xff1a;Dataflow 编程基础、并行流处理流处理基础概念&#xff08;二&#xff09;&#xff1a;时间语义&#xff08;处理时间、事件时间、水位线&#xff09;流处理基础概念&#xff08;三&#xff09;&#xff1a;状态和一致性模…

10. Profile

1. 区分环境的配置 1.1. properties 配置 假设&#xff0c;一个应用的工作环境有&#xff1a;dev、test、prod 那么&#xff0c;我们可以添加 4 个配置文件&#xff1a; applcation.properties - 公共配置application-dev.properties - 开发环境配置application-test.proper…

电脑文件mfc140.dll丢失的解决方法指导,怎么快速修复mfc140.dll

mfc140.dll 文件的缺失是个普遍的问题&#xff0c;在日常使用中可能会时不时遇到。本文主要目的是详细介绍一旦遇到 mfc140.dll 文件缺失&#xff0c;应该如何进行下载和安装的步骤。不再赘言&#xff0c;下面就一起深入了解mfc140.dll丢失的解决方法指导。 一. mfc140.dll的作…

跟着pink老师前端入门教程-day09

二十二、定位 22.1 为什么需要定位 1. 某个元素可以自由的在一个盒子内移动位置&#xff0c;并且压住其他盒子 2. 当我们滚动窗口时&#xff0c;盒子是固定屏幕某个位置的 解决方法&#xff1a; 1. 浮动可以让多个块级盒子一行没有缝隙排列显示&#xff0c;经常用于横向排…

Spring Boot开发Spring Security

这里我对springboot不做过多描述&#xff0c;因为我觉得学这个的肯定掌握了springboot这些基础 导入核心依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐starter‐security</artifactId> </depen…

如何优雅的实现前端国际化?

JavaScript 中每个常见问题都有许多成熟的解决方案。当然&#xff0c;国际化 (i18n) 也不例外&#xff0c;有很多成熟的 JavaScript i18n 库可供选择&#xff0c;下面就来分享一些热门的前端国际化库&#xff01; i18next i18next 是一个用 JavaScript 编写的全面的国际化框架…

Apipost自动化测试+Jenkins实现持续集成

Apipost 自动化测试支持「持续集成」功能&#xff0c;在安装了Apipost的服务器中输入命令&#xff0c;即可运行测试脚本。 创建自动化测试脚本 在创建好的测试用例中选择「持续集成」。 点击新建&#xff0c;配置运行环境、循环次数、间隔停顿后点击保存会生成命令。 安装 Ap…

C++ STL之stack的使用及模拟实现

文章目录 1. 介绍2. stack的使用3. 栈的模拟实现 1. 介绍 英文解释&#xff1a; 也就是说&#xff1a; stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现…