【车间调度】基于模拟退火优化算法的的并行车间机器优化调度(Matlab代码实现)

news2024/11/26 1:33:33

目录

1 概述

2并行机调度问题的的描述

 3 模拟退火法

 4 基于模拟退火优化算法的的并行车间机器优化调度(Matlab代码实现)

4.1 运行结果

5 参考文献

6 Matlab代码


1 概述

并行机调度(也称并行多机调度, Parallel MachinesScheduling Problem,简称PMSP问题)是实际生产过程中的一类典型调度问题,其研究n个工件J,…,J.}在m台机器{M,,…,Mm}]上的加工过程,每个工件只有一道工序"。在并行机调度问题中,当每台机器均能满足各工件的加工时,此时的调度解主要考虑所有工件在各机器上的划分问题,或者说,如何将m台机器分配给n个工件。以最大完工时间最小为优化日标的并行机调度问题已经被证明是NP完全问题。
 

2并行机调度问题的的描述


对于n个工件m台机器的并行机调度问题,如果不考虑同-一台机器上加工各工件之间的准备时间,用t,表示工件i的加工时间,W,表示加工过程中该工件等待加工的时间,C表示该工件的加工完毕时间,用f表示所有工件的最大完工时间,则有:

 3 模拟退火法

智能优化算法——模拟退火法(Python&Matla实现)

 4 基于模拟退火优化算法的的并行车间机器优化调度(Matlab代码实现)

4.1 运行结果

部分代码



function sol=ParseSolution(q,model)

    I=model.I;
    J=model.J;
    p=model.p;
    s=model.s;
    
    % Delimiters Position
    DelPos=find(q>I);
    
    % Determine Start and End of Machines Job Sequence
    From=[0 DelPos]+1;
    To=[DelPos I+J]-1;
    
    % Create Jobs List
    L=cell(J,1);
    for j=1:J
        L{j}=q(From(j):To(j));
    end
    
    % Time-based Simulation
    ST=zeros(I,1);
    PT=zeros(I,1);
    FT=zeros(I,1);
    MCT=zeros(J,1);
    for j=1:J
        for i=L{j}
            k=find(L{j}==i);
            if k==1
                ST(i)=0;
            else
                PreviousJob=L{j}(k-1);
                ST(i)=FT(PreviousJob)+s(PreviousJob,i,j);
            end
            
            PT(i)=p(i,j);
            
            FT(i)=ST(i)+PT(i);
        end
        
        if ~isempty(L{j})
            MCT(j)=FT(L{j}(end));
        end
        
    end
    
    Cmax=max(MCT);
    
    sol.L=L;
    sol.ST=ST;
    sol.PT=PT;
    sol.FT=FT;
    sol.MCT=MCT;
    sol.Cmax=Cmax;

end

针对并行机调度问题的粒子群算法进行了设计,首先提出了基于机器和 PPR的粒子编码方法以及基于工件和PPS 的粒子编码方法。针对在基于机器和 PPR的粒子编码方法中容易产生不可行调度方案的缺点,对其粒子群算法进行了改进,改进后的算法在优化结果上有较好的提高。在此基础上,本文给出了基于两种不同粒子编码方法的粒子群算法步骤。
其次,将基于上述两种不同粒子表示方法的粒子群算法,对7工件3机器并行机调度问题和30工件10机器并行机调度问题两种不同规模的算例进行了测试,实验结果显示,基于两种不同粒子编码方法的粒子群算法均能够得到较好的优化结果,其中基于基于工件和 PPS粒子编码的粒子群算法的优化性能较好,对于30工件I0机器的并行机调度问题,其计算结果好于遗传算法的计算结果。
 

5 参考文献

部分理论引用网络文献,如有侵权请联系删除。

[1]刘民,吴澄.进化规划方法在最小化拖期任务数并行机调度问题中的应用[J].电子学报,1999,27(7):132-134

[2]刘民,吴澄,杨英杰.并行多机调度问题的一种基于组合规则的遗传算法[J].电子学报,2000,28(5):52-54

[3]刘志雄.并行机调度问题粒子群优化研究[J].机械设计与制造,2010(10):68-70

6 Matlab代码

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

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

相关文章

你不知道的npm

npm 前端工程化离不开 npm(node package manager) 或者 Yarn 这些管理工具。npm 或 Yarn 在工程项目中,除了负责依赖的安装和维护以外,还能通过 npm scripts 串联起各个职能部分,让独立的环节自动运转起来。 npm诞生…

跨平台.NET应用UI组件DevExpress XAF v22.1 - 增强Web API Service

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。&#xff…

Web进阶

目录 DOM节点操作(上) 一、任务目标 二、任务背景 三、任务内容 1、DOM结构及节点 DOM节点操作(下) 一、任务目标 二、任务背景 三、任务内容 1、DOM修改 DOM控制CSS样式 一、任务目标 二、任务背景 三、任务内容 …

达摩院快速动作识别TPS ECCV论文深入解读

一、论文&代码 论文:https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136630615.pdf 模型&代码:ModelScope 魔搭社区 二、背景 高效的时空建模(Spatiotemporal modeling)是视频理解和动作识别的核心问题。相较于图像的Transforme…

ArrayList源码分析

ArrayList源码分析 注意:本笔记分析对象为 Java8 版本,随版本不同,源码会发生变化。 1 ArrayList类图与简介 ArrayList是一个 非线程安全,基于数组实现的一个动态数组。可以看到,它的顶层接口是 Collection<E> 集合类。 Note: ArrayList 可以存放所有元素,包括 n…

C语言详细知识点(下)

⛄️上一篇⛄️C语言详细知识点&#xff08;上&#xff09; 文章目录五、数组1、一维数组的定义及使用2、二维数组的定义及使用3、字符数组的定义及使用六、函数1、函数的定义2、函数的调用3、函数的声明4、函数的嵌套调用5、函数的递归调用七、指针1、什么是指针2、指针变量3、…

如何用蓝牙实现无线定位(二)--信号塔设置

1. 配置BLE4.0模块 根据三点定位原理&#xff0c;本项目需要使用3个信号塔。3个信号塔的主体均为BLE4.0模块&#xff0c;需要把BLE4.0模块的AT指令设置为“从设备”。 方法为&#xff1a; &#xff08;1&#xff09;给控制板刷一套空的程序。初始打开arduino IDE或新建&#x…

RabbitMQ事务消息

通过对信道的设置实现 channel.txSelect()&#xff1b;通知服务器开启事务模式&#xff1b;服务端会返回Tx.Select-Ok channel.basicPublish&#xff1b;发送消息&#xff0c;可以是多条&#xff0c;可以是消费消息提交ackchannel.txCommit() &#xff1b;提交事务&#xff1b;…

Devkit开发框架插件工具——Gzip工程创建

Devkit开发框架插件工具——Gzip工程创建 基于鲲鹏亲和开发框架进行原生开发&#xff0c;创建通用计算功能。 二、 操作前提。 1、 在鲲鹏社区申请远程实验室&#xff0c;操作系统选择OpenEuler。 点击链接&#xff1a;鲲鹏社区-官网丨凝心聚力 共创行业新价值&#xff0c;打…

[附源码]Python计算机毕业设计Django的网上点餐系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

蓝牙耳机什么牌子音质最好?高音质蓝牙耳机盘点

如今蓝牙耳机是越来越获得大众的喜爱了&#xff0c;越来越多的年轻人都离不开它了&#xff0c;很多人在买耳机的时候会在意蓝牙耳机的音质&#xff0c;毕竟在自己的耳朵里面听到完美的音乐还是很重要的。下面为大家介绍几款音质超赞的无线蓝牙耳机。 1、南卡小音舱 蓝牙版本&…

关于使用图表控件LightningChart的十大常见问题及解答

LightningChart是芬兰的一款高性能图表开发控件&#xff0c;其中的LightningChart .NET支持实时可视化1万亿个数据点&#xff0c;且可以直接用于.NET WinForms、WPD、传统的Win32 C的应用程序中&#xff1b;而LightningChart JS是一款性能极高的JavaScript图表库&#xff0c;专…

如何设计高可用架构

高可用复杂度模型 计算高可用 任务分配 将任务分配给多个服务器执行 复杂度分析 增加“任务分配器”节点&#xff0c;可以是独立的服务器&#xff0c;也可以是SDK任务分配器需要管理所有的服务器&#xff0c;可以通过配置文件&#xff0c;也可以通过配置服务器&#xff08;例…

2023 年 10 大 Web 开发趋势

公司的在线形象是最重要的。您使用的平台越多&#xff0c;您就会变得越成功&#xff01;拥有在线形象的困难部分是脱颖而出。如果你没有有趣的东西可以提供&#xff0c;你会迷失在人群中。 除了网站具有的基本功能外&#xff0c;您还需要拥有更多功能才能使您的网站具有可持续…

基于BDD的接口自动化框架开箱即用

1、背景说明 项目思想&#xff1a;BDD 行为驱动开发的思想褒贬不一&#xff0c;这里不多说。遵循的宗旨能解决业务痛点的思想就是好思想。 接口测试工具在实际的业务测试场景中往往会遇到一些使用上的局限性&#xff0c;自定义扩展要求技术较高&#xff0c;如果二次开发工具…

平安康养的生意经:养老的壳,金融的核

图片来源Unsplash 文丨螳螂观察 作者丨陈淼 根据第七次人口普查数据&#xff0c;我国60岁及以上老年人口占总人口的比重为18.7%&#xff0c;人口结构即将进入中度老龄化。而伴随着社会老龄化趋势的加剧&#xff0c;背后的养老市场也在迎来巨大的商业化增长。 现阶段&#x…

下班路上捡了一部手机,我用8年开发知识主动找到了失主

☆ 我们学习开发知识&#xff0c;其实并不是只解决当前用户的需求&#xff0c;实现UI原型的还原&#xff0c;不应该只把自己嵌套在当前的浏览器或者某个docker的环境下。 因为不管你在tomcat或者数据库里折腾得再欢&#xff0c;可能到了生活中发现自己失去了超能力。 ☆ 记得有…

校园论坛(Java)——环境配置篇

校园论坛&#xff08;Java&#xff09;——环境配置篇 文章目录校园论坛&#xff08;Java&#xff09;——环境配置篇1、写在前面2、新建Maven项目2.1 引入相关依赖2.2 配置Tomcat环境3、项目发布测试4、项目代码5、参考资料1、写在前面 Windows版本&#xff1a;Windows10JDK版…

Vue中数据代理与事件处理

目录 数据代理 Object.defineProperty 常见属性值 get和set函数 理解数据代理 Vue中的数据代理 Vue中的数据代理小结 事件处理 v-bind 事件处理小结 数据代理 Object.defineProperty 常见属性值 <body> <script type"text/javascript"> let per…

你的数据库到底应该如何存储密码?

最近接手公司一个之前的服务&#xff0c;竟然发现用户密码是明文存储在数据库中&#xff01; 说实话还是有点吃惊的&#xff0c;这可不兴学 CSDN 呀&#xff08;手动狗头&#xff09;&#xff0c;至少也得搞个 MD5 存一存吧。 不过 MD5 其实也没啥用&#xff0c;今天我们就来…