基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录

1.程序功能描述

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

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

        基于PPNSA+扰动算子的车间调度最优化matlab仿真,可以任意调整工件数和机器数,输出甘特图和优化收敛曲线。

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

MATLAB2022a版本运行

3.核心程序

..................................................................
[Xs,ff] = func_initial(T,Npop);
fout    = zeros(Iters,1);       for i = 1:Itersi[ff,I] = sort(ff,'descend');Xs     = Xs(I,:);Pmax   = Xs(1,:);Fmax   = ff(1);%子种群for j = 1:Pop_nPops              = 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);
endfigure
[Fouts,Etime] = func_fitness(T,Xsolve);
Stime         = Etime-T(:,Xsolve); % 开始时间
fval          = -Fouts;
M1            = size(T,1);    % 行数M1为机器数
NX            = length(Xsolve);    % 列数NX为工件数
for i = 1:M1for j = 1:NXx1 = 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;endtext(-0.8,(y1+y2)/2,['机器 ',num2str(i)],'Fontsize',8,'Color','k');
endhold 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('适应度');
28

4.本算法原理

         车间调度问题(Job Shop Scheduling Problem, JSSP)是制造业中非常关键的一类优化问题。它涉及到多个工件在多个机器上的加工顺序安排,目标通常是最小化完成所有工件的总时间,即最小化最大完工时间(Makespan)。由于JSSP具有NP难的特性,传统的优化方法往往难以在合理时间内找到最优解。因此,启发式算法和元启发式算法成为了解决这类问题的主流方法。

5.完整程序

VVV

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

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

相关文章

【JavaScript】面试手写题精讲之数组(上)

专题缘由 该专题主要是讲解我们在面试的时候碰到一些JS的手写题, 确实这种手写题还是比较恶心的。有些时候好不容易把题目写出来了,突然面试官冷不丁来一句有没有更优的解法,直接让我们僵在原地。为了解决兄弟们的这些困扰,这个专题于是就诞…

python入门:常用模块—jsonpickle模块

什么叫序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes 为什么要序列化? 你打游戏过程中,打累了,停下来,关掉…

随想录刷题笔记 —二叉树篇6 513找树左下角的值 112路径总和 106中序后序构造二叉树

513找树左下角的值 找出该二叉树的 最底层 最左边 节点的值 解法一&#xff1a;队列——层次遍历 class Solution {public int findBottomLeftValue(TreeNode root) {Queue<TreeNode> treeNodes new LinkedList<>();treeNodes.offer(root);int count 1;int re…

贪心算法之合并区间

“任世界多宽广&#xff0c;停泊在这港口~” 区间问题&#xff0c;涉及到最多的就是 取交集 和 并集的概念。我们使用C排序算法后&#xff0c;其默认规则就是按照 “左排序”进行的。因而&#xff0c;我们实质上注意的是每一个区间的 右端点&#xff0c;根据题目要求&#xff…

蓝桥杯:C++模运算、快速幂

模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 模是英文mod的音译&#xff0c;取模实际上是求余。 取…

表达式 副作用 序列点

语句分类 标号语句(标签&#xff0c;常与goto配合使用)复合语句(块)表达式语句(赋值表达式语句、函数表达式语句等)选择语句迭代语句(循环)跳转语句(return,break,continue) 其中复合语句(块)可视为单个语句。因此while和for循环之后加的是单个语句(简单语句、复合语句、空语…

树莓派:使用mdadm为重要数据做RAID 1保护

树莓派作为个人服务器可玩性还是有点的。说到服务器&#xff0c;在企业的生成环境中为了保护数据&#xff0c;基本上都会用到RAID技术。比如&#xff0c;服务器两块小容量但高性能的盘做个RAID-1按装操作系统&#xff0c;余下的大容量中性能磁盘做个RAID-5或者RAID-6存放数据。…

网络原理(HTTP篇)

网络原理HTTP 前言HTTPHTTP的工作流程抓包工具抓取HTTP报文HTTP报文格式 请求报文具体细节首行URLURL的基本格式URL encode 方法 报头(header)HostContent-Length 和 Content-TypeUser-Agent&#xff08;UA&#xff09;RefererCookie&#xff08;重要&#xff09; 前言 如图&a…

HAL/LL/STD STM32 U8g2库 +I2C SSD1306/sh1106 WouoUI磁贴案例

HAL/LL/STD STM32 U8g2库 I2C SSD1306/sh1106 WouoUI磁贴案例 &#x1f4cd;基于STM32F103C8T6 LL库驱动版本&#xff1a;https://gitee.com/chcsx/platform-test/tree/master/MDK-ARM&#x1f3ac;视频演示&#xff1a; WouoUI移植磁贴案例&#xff0c;新增确认弹窗 &#x1f…

Unity中关于ScrollRect组件完整解决方案(ScrollRect中元素自动排版+ScrollRect中元素自动定位到Viewport可见范围内)

一、元素自动排版功能 1、首先要往我们的unity项目中导入两个脚本文件&#xff0c;脚本文件名称分别是UIScrollEventListener和CZScrollRect&#xff0c;这两个脚本文件代码如下所示。 1-1、介绍UIScrollEventListener脚本写法。 using System.Collections; using System.Co…

Ubuntu 20.04 安装RVM

RVM是管理Ruby版本的工具,使用RVM可以在单机上方便地管理多个Ruby版本。 下载安装脚本 首先使下载安装脚本 wget https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 如果出现了 Connection refused 的情况, 可以考虑执行以下命令修改dns,再执…

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢…

算法学习(七)枚举

枚举 1. 概念 枚举算法是我们在日常中使用到的最多的一个算法&#xff0c;它的核心思想就是:枚举所有的可能。 枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件&#xff1a; (1)可预先确定候选答案的数量&#xff1b; (2)候选答案的范围在求解之…

Linux网络编程——守护进程

文章目录 1. 前台 & 后台进程2. Linux进程之间的关系3. 守护进程 本章Gitee仓库&#xff1a;守护进程 1. 前台 & 后台进程 在Linux系统登陆的时候&#xff0c;它会给我们形成一次会话&#xff0c;会话在系统里面会创建一个bash进程&#xff0c;这个bash就会给用户提供…

Java 抽象容器类源码剖析

总体介绍 抽象容器类接口和具体容器类的关系如图所示&#xff0c;顶层包括Collection、List、Set、Queue、Deque和Map6个抽象容器类。 AbstractCollection&#xff1a;实现了Collection接口&#xff0c;被抽象类AbstractList、AbstractSet、AbstractQueue继承&#xff0c;Arra…

Vue-Router 官网速通

前言&#xff1a;参考Vue Router&#xff0c;本文档例子使用 vue3 语法。 一&#xff1a;介绍 1. 什么是 Vue Router 是 Vue.js 的官方路由。功能包括&#xff1a;1. 路由映射。2. 动态路由。3. 路由配置。4. 路由参数。5. 过渡效果。6. 导航控制。7. CSS 类链接。8. HTML5 模…

7.1 Qt 中输入行与按钮

目录 前言&#xff1a; 技能&#xff1a; 内容&#xff1a; 参考&#xff1a; 前言&#xff1a; line edit 与pushbotton的一点联动 当输入行有内容时&#xff0c;按钮才能使用&#xff0c;并能读出输入行的内容 技能&#xff1a; pushButton->setEnabled(false) 按钮不…

166基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪

基于matlab的通过峭度指标与互相关系数筛选IMF进行SVD分解去噪&#xff0c;分辨虚假imf&#xff0c;提取最大峭度imf图。输出去噪前后时域及其包络谱结果。程序已调通&#xff0c;可直接运行。 166 matlab SVD去噪 IMF筛选 包络谱 (xiaohongshu.com)

Android安卓架构MVC、MVP、MVVM模式的概念与区别

目录 MVC框架 MVP框架 MVVM框架 MVVM与MVP区别 MVVM与MVC区别 MVC、MVP、MVVM模式哪个要好一些 MVC&#xff08;Model-View-Controller&#xff09;、MVP&#xff08;Model-View-Presenter&#xff09;、MVVM&#xff08;Model-View-ViewModel&#xff09;是三种常见的软…

Json格式文件

1.把Java对象转换成Json格式 1.1.导入依赖 这里推荐一个插件Jackson&#xff0c;其提供的类可以让Java的类转换成Jason格式文件 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><vers…