当前位置: 首页 > news >正文

基于NSGAII的的柔性作业调度优化算法MATLAB仿真,仿真输出甘特图

目录

1.程序功能描述

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

3.核心程序

4.本算法原理

5.完整程序


1.程序功能描述

        基于NSGAII的的柔性作业调度优化算法MATLAB仿真,仿真输出甘特图,完工时间:,延期,机器负载,机器能耗。

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

MATLAB2022A版本运行

(完整程序运行后无水印)

3.核心程序

.....................................................................................
for i=1:JQ(1).num_macm_index=find(Mmc==i);if size(m_index,1)>=1 && size(m_index,2)>=1for j=1:size(m_index,2)m_var=m_index(j);m_info(m_var)=j;endend
end
% 绘制Gantt图
figure;
Njq         = JQ(1).num_mac;%total bays  //机器数目
Ntask       = length(P);
Work_Time_  = Pgood(size(P,2)+1);%所需的消耗时间
Delay_Time_ = Pgood(size(P,2)+2);%延期时间
All_Load_   = Pgood(size(P,2)+3);%设备负荷
All_power_  = Pgood(size(P,2)+4);%能量消耗
axis([0,Pgood(size(P,2)+1)+2,0,Njq+0.5]);%x轴 y轴的范围xlabel('加工时间')
ylabel('机器号');
WW=sprintf('完工时间:%d  延期:%d 机器负载:%d 机器能耗:%.2fKw/h',Work_Time_,Delay_Time_,All_Load_,All_power_)
title(WW);%图形的标题
rec=[0,0,0,0];
for i =1:Ntask  rec(1) = Tmach{Mmc(i)}(m_info(i),1);%矩形的横坐标rec(2) = Mmc(i)-0.3;%矩形的纵坐标rec(3) = Tmach{Mmc(i)}(m_info(i),2)-Tmach{Mmc(i)}(m_info(i),1);%矩形的x轴方向的长度rec(4) = 0.6; txt=sprintf('p(%d,%d)=%d',P(i),p_text(i),Tmach{Mmc(i)}(m_info(i),2)-Tmach{Mmc(i)}(m_info(i),1));%将机器号,工序号,加工时间连城字符串rectangle('Position',rec,'LineWidth',0.5,'LineStyle','-','FaceColor',color(p_color(i)));%draw every rectangle  text(Tmach{Mmc(i)}(m_info(i),1)+0.2,Mmc(i),txt,'FontSize',12);
end
74

4.本算法原理

       基于NSGA-II(Non-dominated Sorting Genetic Algorithm II)的柔性作业调度优化算法通常用于解决多目标优化问题,特别是在制造业中,为了优化生产计划和调度。在这样的场景下,你可能需要考虑多个目标,比如最小化完工时间(makespan)、减少任务延期、均衡机器负载以及降低机器能耗等。

       在制造系统中,柔性作业调度是指在一个可以由多种机器加工同一工件的环境中,决定每个工件应该在哪些机器上加工,以及每个工件何时开始加工的过程。这种类型的调度问题通常涉及多个目标函数,如最小化总完工时间、最小化总延期时间、最大化机器利用率等。以下是实现基于NSGA-II的柔性作业调度优化算法的大致步骤:

  1. 定义问题:明确决策变量(如每个任务的开始时间和分配的机器),并定义目标函数(如上述提到的完工时间、延期、机器负载和能耗)。

  2. 编码:为每个个体选择合适的编码方式,比如使用列表来表示每个任务的开始时间和机器编号。

  3. 初始化种群:随机生成一个种群,每个个体代表一个潜在的调度方案。

  4. 评估函数:编写评估函数来计算每个个体的目标函数值。

  5. 遗传操作:实现交叉和变异操作,以便在种群中引入新的个体。

  6. 选择操作:利用NSGA-II的选择策略来选择下一代种群。

  7. 终止条件:设置终止条件,比如达到一定的迭代次数或种群收敛。

  8. 仿真输出:通过仿真工具来生成甘特图和其他输出结果。

5.完整程序

VVV

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • shell常用命令
  • 超越标注:合成数据引领下的文本嵌入技术革新
  • 科普文:JUC系列之多线程门闩同步器Semaphore的使用和源码解读
  • FreeRTOS实现低功耗管理
  • 如何将PostgreSQL的数据实时迁移到SelectDB?
  • 10. Docker 使用案例
  • Casper 安全事件已解决;区块链网络恢复运行
  • 【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)
  • Java单元覆盖率工具JaCoCo使用指南
  • Java-文件操作和IO
  • OpenCV||超详细的图像分割
  • Mybatis-plus乐观锁
  • 二维数据平滑,滤波方法比较:移动平均平滑、中值滤波、指数加权移动平均、Savitzky-Golay、高斯滤波、卡尔曼滤波
  • Apple Vision Pro 游戏开发:挑战与反思
  • js中的全局函数有这些
  • Angular4 模板式表单用法以及验证
  • Java反射-动态类加载和重新加载
  • Mocha测试初探
  • React-redux的原理以及使用
  • Redis学习笔记 - pipline(流水线、管道)
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • tensorflow学习笔记3——MNIST应用篇
  • 从tcpdump抓包看TCP/IP协议
  • 动态魔术使用DBMS_SQL
  • 回顾 Swift 多平台移植进度 #2
  • 京东美团研发面经
  • 聊聊hikari连接池的leakDetectionThreshold
  • 数据可视化之 Sankey 桑基图的实现
  • 温故知新之javascript面向对象
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #数学建模# 线性规划问题的Matlab求解
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (06)金属布线——为半导体注入生命的连接
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (175)FPGA门控时钟技术
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (阿里云万网)-域名注册购买实名流程
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (一)基于IDEA的JAVA基础10
  • (转)VC++中ondraw在什么时候调用的
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .java 9 找不到符号_java找不到符号
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net core 6.0 升8.0
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET/C# 使窗口永不获得焦点
  • .NET6实现破解Modbus poll点表配置文件
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [5] CUDA线程调用与存储器架构