排程系统中关于任务优先级的需求延伸与设计构思

无论是面向销售订单的MPS,还是基于多工序制约关系的APS,还是具体车间生产中针对单一工序的任务作业调度优化,都存在基于被排程对象(例如销售订单、生产工单、工序任务)的优先级进行优化的需求场景。当我们仅在宏观、较高层次的角度考虑,任务优先级是相当简单的。无非是实现“确保高优先级的任务(以下将所有排程对象统称为任务),更优先于低优先级的任务执行,即优先级越高越早执行”这一简单的要求。

尽管上述的需求描述容易理解,且可以大概设想实现起来并不复杂。但当我们在具体的项目中遇到该需求时,则有可能需要针对该需求的不同分支情况作深入展开,并需要针对不同分支作情况作不同层次、权重分析后,才能在OptaPlanner/Timefold中更好实现。本文将归纳我们在具体项目过程中,面对任务优先级这一需求时,考虑到的情况分支与设计思想。在系统中具体实现,特别该需求OptaPlanner/TimeFold中对应的具体模型与约束实现逻辑及相应代码,则属于我们产品与项目的内容,无法在此完全公开。而在我们的《OptaPlanner/Timefold实践课程》中会提供相应的设计资料与示例代码。

优先级的简单理解 = 误解

所谓的“任务优先级”需求,我们在进行系统设计初期,对其并不太重视,因为这基本上算是一种任务排序要求,例如我们需要对一些任务进行排序,优先级越高的越靠前,反映在时间上就越早执行。在SQL或Java中仅需一个Order By子句或一个JavaStream的Collections.sort方法即可实现。但当我们细心分配用户的需求时才发现,情况远没有我们设想的那么简单。因为“通过排序来实现任务优先级”,仅局限于所有任务均处于同一任务序列内的情况,例如,对于同一个设备的待执行任务序列,通过对序列按优先级排序,即可轻松实现优先级越高,越早执行。

实际需求需要视情况按不同的分支处理

但事实是,我们真正需要面对的场景,并非如此简单,可以归纳如下:

1.多个任务序列并行,且争抢资源,甚至资源冲突

我们的排程系统面对的往往是多个序列,还是以生产设备与待加工任务序列的场景为例,有可能我们的系统面对的是多个设备,也就是存在多个并行的序列,优先级需求指的是在多个设备上实现,而非单一设备上。即需要考虑将大批量的任务分配到多个设备上时,在分配方案上如何实现跨设备的任务优先级需求。

图片

2. 资源不足场景下的资源优先级

此外,有可能因为产能问题,并无法保证所有任务均可以分配到合理设备;即资源不足时,任务优先级的高低问题。这种情况就不再是根据优先级安排任务的执行选择次序问题,而是需要在有限制的资源条件下,尽可能保证高优先级的任务获得资源;即若资源确实不足的情况下,需要放弃部分任务的资源分配时,尽可能先放弃低优先级的任务。因此,这是一个根据任务优先级进行任务取舍问题,而不是任务的执行时间问题,与我们初始考虑的情况有本质区别。但从业务上,它仍然是任务优先级问题。

图片

3. 若因为产能问题,有部分无法保证交付时间时,优先级的作用

当可用资源量不足,但可以通过往后延迟任务的执行时间,来将所有任务都分配到合适的资源。可以理解为,资源的空间维度(数量)不足,通过时间维度来实现分配到位。若任务均存在要求交付时间时,那么面对任务优先级需求时,则反映为,尽可能保证高优先级的任务不被延误(即保证高优先级任务在交付时间前完成)。从另一个角度看,就是若必须有部分任务无法保证交期,则优先级越低的任务越优先放弃交期保证。

图片

4. 任务优先级与其它需求的冲突

在实际的排产项目需求中,不可能只基于优先级进行资源分配与任务时间安排,还需要考虑众多其它因素,例如:成本 - 某些生产资源尽可能满足了任务优先级要求,但该加工次序将会引起具体的换摸成本。又如:基于任务优先级排好的资源,有可能无法实现最优的“任务-资源”匹配原则。诸如此类问题,会使得整个优化模型形成一个多目标优化模型。因此,第4点不仅在任务优先级的需求中遇到。不在本文讨论重点。后续我们会针对排产及相关问题中,多目标优化的场景独立一篇出来讨论。

进行了上述分类后,因应任务优先级需求实现,即可根本不同的场景类别分别设计对应的约束来实现。例如:

  1. 针对多个任务序列进行排程时,通过推导出来的任务完成时间与就绪时间之差作为惩罚评分基础。

  2. 对于资源(设备)不足情况,当对于未被分配到设备的任务进行惩罚时,可考虑将为每个任务设定一个因素的惩罚评分值为基础。

  3. 对于已产生延误的任务,可以考虑将其延误程度(例如完成时间与交付时间之差)作为惩罚评分的基础。

  4. 对于优先级需求与其它需求的竞争冲突的情况,并非仅属于优先级方面的问题,而是优先级需求与其它需求的权重问题。可以根本实际情况综合考虑不同约束的重要程度,设定不同的额外权重来定义不同约束的重要程度,或评分层次来实现不同需求的层次隔离。

上述第1,2,3三种情况其评分逻辑各不相同,但均需要注意:必须将满足惩罚条件任务的优先级纳入评分逻辑中,作为影响评分结果的一个重要因子之一,从而实现不同场景下的任务优先级约束

关于优先级的定义

无论是MPS还是APS中,任务的优先级需要根据实际情况来实同,排程系统只能基于这些已定义好的优先级字段值,在排程过程中进行针对性的优化。而在具体项目实践中,定义任务的优先级,也有非常多的情况。例如:根本任务的紧急程度定义优先级,如: 可见以下式子定义:p = d / (t1 - max(t2, t3))其中p为任务优先级的字段值,d为该任务的生产时长, t1为任务的交付时间,t2为任务的就绪时间,t3为当前时间. 

当然也有可能根据人工对客户、质量、时间、资源等因素的综合考虑,“人工”定义的情况。对于规划系统而言,任务的优先级是一种输入,这种存在多因素扰动、且容易变更的逻辑,应该放在规划系统外实现,至少需要在规划系统的前置处理程序(例如待排数据的展开阶段)中实现。

<完>

我们提供基于OptaPlanner/Timefold的规划服务平台,可提供APS,VRP(辆车路径规划与调度),实时作业调度等供应链及生产相关的优化运算模块。与平台相关疑问,可以添加本人微信(13631823503)探讨,或关注我们的微信公众号【让APS成为可能】及时接收相关消息。

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

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

相关文章

漏洞复现--速达进存销管理系统任意文件上传

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

【深度学习】Stable Diffusion中的Hires. fix是什么?Hires. fix原理

文章目录 **Hires. fix****Extra noise**UpscalersHires. fix原理 Hires. fix https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features#hires-fix 提供了一个方便的选项&#xff0c;可以部分地以较低分辨率呈现图像&#xff0c;然后将其放大&#xff0c;最后…

Django系列之Celery异步框架+RabbitMQ使用

在Django项目中&#xff0c;如何集成使用Celery框架来完成一些异步任务以及定时任务呢&#xff1f; 1. 安装 pip install celery # celery框架 pip install django-celery-beat # celery定时任务使用 pip install django-celery-results # celery存储结果使用2. Django集成…

关于对向量检索研究的一些学习资料整理

官方学习资料 主要是的学习资料是&#xff0c; 官方文档 和官方博客。相关文章还是挺多 挺不错的 他们更新也比较及时。有最新的东西 都会更新出来。es scdn官方博客 这里简单列一些&#xff0c;还有一些其他的&#xff0c;大家自己感兴趣去看。 什么是向量数据库 Elasticse…

Windows下通过注册表实现开机自启动(测试)

注册表路径&#xff1a; 计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 测试结果&#xff1a; QQ&#xff0c;录屏工具&#xff0c;网易有道词典等都可开机自启动。 而如果应用程序必须要管理员权限才能启动&#xff0c;那么&#xff0c;即使添入…

基于Solr的全文检索系统的实现与应用

文章目录 一、概念1、什么是Solr2、与Lucene的比较区别1&#xff09;Lucene2&#xff09;Solr 二、Solr的安装与配置1、Solr的下载2、Solr的文件夹结构3、运行环境4、Solr整合tomcat1&#xff09;Solr Home与SolrCore2&#xff09;整合步骤 5、Solr管理后台1&#xff09;Dashbo…

PairLIE论文阅读笔记

PairLIE论文阅读笔记 论文为2023CVPR的Learning a Simple Low-light Image Enhancer from Paired Low-light Instances.论文链接如下&#xff1a; openaccess.thecvf.com/content/CVPR2023/papers/Fu_Learning_a_Simple_Low-Light_Image_Enhancer_From_Paired_Low-Light_Instan…

Linux升级nginx版本

处于漏洞修复目的服务器所用nginx是1.16.0版本扫出来存在安全隐患&#xff0c;需要我们升级到1.17.7以上。 一般nginx默认在 /usr/local/ 目录&#xff0c;这里我的nginx是自定义的路径安装在 /app/weblogic/nginx 。 1.查看生产环境nginx版本 cd /app/weblogic/nginx/sbin/…

css的复合选择器(有案例)

目录 复合选择器的描述 后代选择器&#xff08;常用重点&#xff09; 子选择器 并集选择器&#xff08;重点常用&#xff09; 伪类选择器 链接伪类选择器 focus 伪类选择器 知识总结&#xff1a; 案例实现&#xff1a; 复合选择器的描述 在 CSS 中&#xff0c;可以根…

AI跨界学习,不再是梦!

大家好&#xff01;今天给大家推荐的 GPTs 是【行业知识脉络】&#xff0c;帮助大家快速了解某个领域的脉络&#xff0c;并提供足够的学习资料和建议。 在AI时代&#xff0c;从小白到专家的1万小时定律即将失效&#xff0c;用少于1千小时掌握行业知识树和其核心概念是如何学习的…

Rocket MQ 架构介绍

文章目录 为什么选择Rocket MQ基本概念优点缺点架构图编程模型发送者发送消息固定步骤消费者消费消息固定步骤 为什么选择Rocket MQ Rocket MQ是阿帕奇顶级的开源项目&#xff0c;由阿里开发并开源。它的研发背景是Active MQ与Kafka不能很好的解决当时的业务场景。官网上是这么…

基于JavaWeb+SpringBoot+Vue在线拍卖系统的设计和实现

基于JavaWebSpringBootVue在线拍卖系统系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 …

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(一)——创建Glue

1 通过Athena查询s3中的数据 此实验使用s3作为数据源 ETL: E extract 输入 T transform 转换 L load 输出 大纲 1 通过Athena查询s3中的数据1.1 架构图1.2 创建Glue数据库1.3 创建爬网程序1.4 创建表1.4.1 爬网程序创建表1.4.2 手动创建表 1…

机器学习基础介绍

百度百科&#xff1a; 机器学习是一门多领域交叉学科&#xff0c;涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为&#xff0c;以获取新的知识或技能&#xff0c;重新组织已有的知识结构使之不断改善自身的性能。 …

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析

3 serverless数据分析 大纲 3 serverless数据分析3.1 创建Lambda3.2 创建API Gateway3.3 结果3.4 总结 3.1 创建Lambda 在Lambda中&#xff0c;我们将使用python3作为代码语言。 步骤图例1、入口2、创建&#xff08;我们选择使用python3.7&#xff09;3、IAM权限&#xff08;…

控制台打印如来佛图像

代码 System.out.println(" _ooOoo_ \n"" o8888888o \n"" 88 \".\" 88 …

银河麒麟v10系统SSH远程管理及切换root用户的操作方法

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一…

手把手教你玩转ESP8266(原理+驱动)

在嵌入式开发中&#xff0c;无线通信的方式有很多&#xff0c;其中 WIFI 是绕不开的话题。说到 WIFI 通信&#xff0c;就不得不提 ESP8266了。 ESP8266 是一款高性能的 WIFI 串口模块&#xff0c;实现透明传输。只要有一定的串口知识&#xff0c;不需要知道 WIFI 原理就可以上…

bugsplat64.dll文件丢失的多种详细有效解决方法

一、bugsplat64.dll是什么&#xff1f; bugsplat64.dll是Windows操作系统中的一个动态链接库文件&#xff0c;它包含了一些用于错误报告和调试的功能。当程序运行时遇到错误时&#xff0c;系统会调用bugsplat64.dll来收集错误信息并将其发送给开发人员进行修复。因此&#xff…

vm虚拟机固定IP

最近使用vm虚拟机 &#xff0c;可用了一段时间ip就自动变化&#xff0c;于是去网上看了不少教程&#xff0c;但很多都没用。 1.编辑配置 vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改BOOTPROTO为static加入属性IPADDR,设置你想要设置的ip配置GATEWAY与DNS1 不配置GA…