首页 > 其他分享 >排程系统中关于任务优先级的需求延伸与设计构思

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

时间:2024-06-08 15:22:19浏览次数:17  
标签:需求 优先级 实现 任务 构思 资源 排程

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

<完>

标签:需求,优先级,实现,任务,构思,资源,排程
From: https://www.cnblogs.com/kentzhang/p/18238646

相关文章

  • conda的配置文件.condarc频道优先级和定义频道
    先观察清华源的conda配置文件:channels:-defaultsshow_channel_urls:truedefault_channels:-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main-https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r-https://mirrors.tuna.tsinghua.edu.cn/anaconda......
  • GD32如何配置中断优先级分组以及中断优先级
    使用GD32MCU的过程中,大家可能会有以下疑问:中断优先级如何配置和使用?本文将会为大家解析中断优先级分组以及中断优先级的配置使用:中断优先级分组配置一个GD32MCU系统需要大家明确系统中使用的中断优先级分组,避免中断优先级配置越界导致一些不符合预期的中断现象。中断优先......
  • 在Linux中,如何进行网络资源的优先级管理?
    在Linux中进行网络资源的优先级管理主要涉及到流量控制(TrafficControl,简称TC)和服务质量(QualityofService,简称QoS)。以下是一些关键步骤和工具用于实现网络资源的优先级管理:1.使用tc(TrafficControl)工具tc是Linux中用于网络流量控制的主要工具,它可以设置带宽限制、流量整形、......
  • 在Linux中,如何进行系统资源的优先级管理?
    在Linux中进行系统资源的优先级管理主要涉及对进程优先级、CPU调度、内存分配等方面的控制。以下是一些关键步骤和工具用于实现系统资源的优先级管理:1.进程优先级(nice值)Linux允许用户调整进程的nice值,以影响进程的CPU调度优先级。查看进程nice值:nice-n10/path/to/comman......
  • 在Linux中,如何进行系统服务的优先级管理?
    在Linux系统中,系统服务的优先级管理通常涉及调整服务的启动顺序、管理CPU和内存资源分配,以及控制服务的运行优先级。以下是一些关键步骤和方法:1.使用systemd管理服务优先级systemd是大多数现代Linux发行版使用的初始化系统和服务管理器,它提供了一种配置服务依赖和优先级的方法......
  • QNX-19—QNX绑核优先级-1-理论
    一、Threadaffinity翻译翻译:QNXSoftwareDevelopmentPlatform-->Programming-->Programmer'sGuide-->MulticoreProcessing-->Theimpactofmulticorehttps://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.prog/topic/multico......
  • C语言 恼人的结合性和优先级和副作用
    结合性和优先级和副作用1.优先级2.结合性3.副作用4.简单区分i++,++i,i+=1;i=i+1;i=i++1.优先级优先级指的是,如果⼀个表达式包含多个运算符,哪个运算符应该优先执⾏。各种运算符的优先级是不⼀样的。在C语言中,优先性和结合性规则是非常重要的。然而C语言有几乎50中运算符......
  • Stack----带优先级的四则运算
    Infixtopostfixconversion1.operand--->output; 2.operator--->1)popandoutputalloperators>=precedence; (弹出优先级大的所有操作符)         --->2)pushtheoperator;3."(" --->push;4.")"---> 1)popallo......
  • 文件上传时各配置目录优先级详解
    Tomcat配置目录有以下两个1.spring.servlet.multipart.location:文件上传路径2.server.tomcat.basedir:配置Tomcat运行日志和临时文件的目录。如果生产中配置了这两个目录,当上传文件时,他们的优先级是?    当上传文件时,代码执行到Request类,在发现使用时spring.servlet.mult......
  • AI助力科研:自动化科学构思生成系统初探
    科学研究作为推动创新和知识进步的关键活动,在解决复杂问题和提升人类生活水平方面发挥着至关重要的作用。然而,科学研究的固有复杂性、缓慢的进展速度以及对专业专家的需求,限制了其生产力的提升。为了增强科研效率,本文提出了一个名为ResearchAgent的系统,这是一个由大型语言模型(L......