排程过程中任务锁定的外延与内涵

        在生产排程过程中,除了可以借助强大的算法,与优质的规划模型对待排任务进行排产优化外,还会遇到一些需要人为锁定部分任务的情况。无论是APS系统开发人员,还是排产作业人员,在常见的认识中,对于“锁定”概念的理解,第一反应就是把任务固定到某个资源(例如机台)上生产,也就是锁定任务的分配空间;更进一步就是固定任务的时间,也就是固定任务什么时候开始,什么时候结束。

        但在经历了易排平台作业调度模块的锁定功能设计开发后,发现就“锁定任务”此一概念,蕴含了远比我们象想中多得多的因素需要考虑。今天我将这其中的内容拿出来跟大家讨论一下。所谓魔鬼往往藏在细节中,经历过对系统功能的各种细节琢磨、反复推敲后,才生成,同一个锁定任务概念或功能,表示看是一个世界,深入分析又是另外一个世界。

        本文针对"锁定任务"两个不同方向分享一下我在设计这个功能时,处理细节问题时总结出来的一些看法。我把它划分为两个方向:

  • 对任务锁定的不同情况与程度,我们把它称为“任务锁定”概念的外延

  • 对任务锁定过程中涉及到的一些我们当初设想中往往没有意料到的、但必须面对并解决的问题,我们把它称为“任务锁定”概念的内涵(或称任务锁定的本质)。

任务锁定的外延

        对生产排程、或生产计划部门的小伙伴,不管是PMC的重要角色、经验丰富的排产师,还是负责生产企业ERP生产计划模块的IT大牛,对于锁定任务第一反应就是:这不简单嘛,就是编制计划过程中,部分任务因为情况特殊,把它的生产机台、开始时间固定好;即固定一些任务的时空(时间 - 何时开始、何时结束;空间 - 在哪个设备、安排哪人员、使用哪些物料执行生产操作)。

        但实际上,我们把这种需求延展开来,就会发现有很多种衍生情况,上述固定时空(时:起止时间,空:用哪台设备)只是一个比较虚泛的说明。根据实际情况下,锁定可以衍变出很多种情况:

  1. 只限定时间,不限定空间;

  2. 只限定空间,不限定时间;

  3. 固定精确的开始时间,限定时间区间内开始(或结束);

  4. 固定精确的资源,和限定指定的资源范围。

        下面对上述4种情况作深入分析,看看在我们在设计系统过程中,有哪些值得注意的。

锁定时间

锁定任务的开始(或完成)时间为某一时间点

        要求一个任务必须在某个时间点开始(或结束),但资源不固定,可以根据该任务对应的工序设置在指定的资源可选范围内,由引擎通过规划运算确定最终的加工资源(包含加工机台、辅助设备、操作人员及消耗物料等)。因此,

        该需求的实现方式较为简单,可以将任务的开始(或结束)时间作为一个硬约束,让引擎固定任务在该时间点开始。事实上基于这种时间上的锁定,还需要考虑空间(即资源)锁定的需求,若同时具备时间与空间锁定的需求,则有更好的处理方式,易排平台通过实践,使用的就是这种方式,可以尽可能减少规划运算,并确保锁定要求得到满足。

限制时间的开始(或完成)时间为某一时间段

        相对于固定任务开始(或完成)时间为一个时间点,要求一个任务必须在某个时间范围内开始(或完成),但不资源不固定到一个时间点,通俗一点理解就是时间固定得不太死,需要在某个时间区间内开始(或完成)。

        关于锁定任务的时长,我们在设计系统时,需要考虑到实际情况,同一个任务在不同的环境下(例如使用不同的生产设备与材料)其加工时长有可能不相同。因此,在提供锁定任务的信息过程中,应该遵循开区间原则,即只确定开始时间,结束时间应该由系统计算任务的实际加工时长后,自动推算得出。否则很可能人为计算时长过程中,可能考虑不周而提供了错误信息,从而导致锁定操作产生冲突。

        对于锁定时间段的要求,其实现同样也是通过约束实现,这种锁定时间段需求的实现,有可能会与其它约束产生冲突,需要细心处理。例如需要考虑任务分配资源的资源日历,从而确保任务不会被分布到日历的非工作时间。

仅锁定空间

锁定任务在一个资源生产

        指定使用某个资源,是指任务任务必须固定在某一个资源加工,例如:某些任务存在特别的工艺需求,仅有一个资源才能加工处理。该功能实同与下文的“限定在几个资源”的约束重叠,具体实现由介绍见下文。

限制任务在几个资源生产(即限制选择范围)

        限制任务在某几个资源(或一定范围)生产,事实上就是最常见的情况,与任务与资源的匹配关系。某一个任务源自某个工序,该工序具体有哪些资源作为可选项,通常由工艺系统维护。易排平台上所有模块中的工单、工序、任务等排程对象的“资源需求”列表,其本质就是限制某一任务在指定范围的资源生产。

        对于资源范围限制(无论是锁定单一资源还是限制资源可选范围),都可能通过任务与资源的匹配来实现。只是锁定单一资源,是一种特殊情况 - 某个任务可选资源只有一个。

时空均锁定(或限制某个范围)

        时空均锁定(或限定)就很好理解了,从业务上看,就是上述“仅锁定时间”与“仅锁定空间”两个需求的组合。原则上我们也应该按该需求的思路设计。

        但是,大多数情况,可以由上述两个维度锁定的功能结合来达到要求。但实际设计过程中,还会有非常多的细节需要处理。在易排平台中,经过项目实践,发现前两个需求并不能简单合并即可实现第三个需求。有一些特殊的情况,还需要设计出特殊分支处理,才能得到更好的效果。这种情况

以上是对“锁定任务”的外延的一些见解,下面我们再看看其内涵(或本质)是什么。

任务锁定的内涵

        我们在对任务进行锁定操作,其真实的本质,以及基于这个本质,会涉及到哪些细节需要考虑呢?上面已经提出,所谓的锁定,就是固定任务的时空,那么在实现锁定时空的过程,对其它任务、对资源、对计划周期中的时间区间都会产生什么影响呢?

锁定任务对计划的空间维度影响

        锁定资源 - 锁定一个资源,那么该资源在排产过程中,其它任务就不能使用,这仅是对于主资源而言,一个任务占用的资源可能不止一个,或不止一种。例如一个金属加工任务,可能需要1台CNC,1个夹具,1块胚料以及1位操作人员共4个资源。其中对于这4个资源,我们作深入分析:

  • CNC通常是固定在车间或某产线上,且在加工任务时会被独占,我们把它定义为主资源。

  • 夹具通常在加工任务时会被独占,但它可以根据任务所处的机台进行位置变更,我们把它定义为辅助资源;

  • 操作人员与夹具类似,我们把它定义为辅助资源,但他对任务而言不一定是独占的,例如:一个操作人员可能同时跟进邻近的两台数控机床上的任务。

  • 胚料是消耗性物料,即一些APS产品上所讲的非可再生资源,这种物料资源既然是非可再生的,其意思是一个资源在一个计划周期内,前一天消耗掉了一些资源量,到了第二天需要扣减掉这些消耗量。

        那么,当我们需要锁定一个任务时,上述4个资源,就要作出相当的扣减(从业务上就是预先扣减或占用了这些资源,至于系统具体如何实现,就是系统设计的问题,在此不表)。完成锁定后,对4个资源造成的影响是:

        CNC会被完全占用,在该任务加工期间,其它任务不能再排进这台CNC,需要寻找其它时间。夹具也会被完全占用,此期间的若需要使用该夹具的任务即使分配到其它CNC,但仍无法进行,需要寻找其它时间。操作人员(假定他可以同时操作两台相邻的CNC)在其负责的区域(这里是空间地理上的区域)内,可以再分配的任务量减1。胚料作为物料资源,分配了指定数据给该锁定任务后,在时间轴上该锁定任务以后的其它任务,对该物料资源的可用量将会减掉相应的数量。

锁定任务对资源的影响形成后,有以下两种情况需要考虑:

需要考虑其它锁定任务的资源可用情况

        因为我们一个波次的计划,有可能存在多个需要锁定的任务,在锁定这些任务时,就需要考虑它们的资源可用情况。例如待排任务中,同时存在两个锁定任务,指向相同的资源,且时间重叠;这种情况是不允许的。我们的引擎就需要找出这种情况,并反馈给用户,由用户作出调整。

规划运算中需要考虑锁定任务后对于非锁定任务

        当一个待排数据集中,存在锁定任务,并占用了一定的资源量后。将那些非锁定资源进行规划运算过程中,需要考虑那些已锁定任务的资源占用。我们需要让引擎知道,有哪些任务锁定了,这个锁定行为会造成哪些资源被占用或被消耗,从而让引擎在规划运算过程中动态地觉察这种情况,以防出现锁定任务与非锁定任务的资源冲突情况。

锁定任务对整体计划的时间维度影响

        上述问题计划的还只是锁定任务对资源的影响,实际上通过对资源的空间占用或消耗,会传导到时间的变更。平时我们常说的产能、资源可用量往往会默认一个固定周期,例如:一个车间的产能是多少,指的是在某一周期中,车间的产量。所以,当资源不足时,任务的开始时间就会延后,也就是以时间换空间。

对寻优过程的影响

        当因为锁定任务占用了一部分资源,那些非锁定任务的时间就有可能被改变,最终导致的结果就有可能计划整体效率低于全部为非锁定任务的情况。因为不可能正因锁定任务的存在,令到引擎在寻找优化方案时,因为某些锁定任务无法变更,而无法达到整体更优。例如:某个任务被锁定到周二的下午加工,但事实上若不存在这个锁定任务,引擎会把另外的任务排在这个时间加工,通过调配不同资源的组合,以及减少任务之间的换摸换型引起的时间或成本损耗,从而提到一个更优的方案。但因为锁定任务必须在周二下午加工这个硬性规定,令引擎无论如何都无法找到更好的方案。从而让整体计划的资源利用率无法达到相对最佳状态,从而引起整体任务的准时完成率下降,订单延误 - 即时间维度的影响。当然这只是一个消极方向的例子,也有可能因为锁定任务,会产生积极的影响,从而得到一个相比没有锁定任务情况下更佳的方案。无法对锁定任务作任何正面或负面的定义,锁定任务只是一种业务需求,实际效果需要视具体情况而定,再说,你总不能为了高效而放弃正确嘛。

对资源可用性(或可用量)的考虑

        非锁定任务被提交到引擎进行排产运算过程中,关于时间上的优化,引擎会基于Project Job Scheduling问题模型中关于资源冲突的原则,当某个时间点资源不足时,会自动提前或延后开始时间;任务加工期间遇到资源非工作时段(即加工周期横跨资源的休息时段)时,会自动延长加工周期,来推算实际完成时间。但锁定任务在规划运算过程中无法被动态地推算起止时间,因此,在进行任务锁定数据展开时,就需要考虑当这些锁定任务遇到所用资源的非工作时段,应该如何处理?易排平台会把这个选项交给用户决定。用户可以根据实际情况来决定按照资源实际工作时间来安排加工,或忽略资源的时间设定,强生使用资源的非工作时间,例如:加急订单需要取消中途休息,来达成交付任务。

关于锁定任务更多的情况

        锁定任务在展开到待排数据阶段已经存在大量细节问题需要处理,但事实上这还只是大量细节魔鬼的其中一个。用户设定锁定锁定的时空,是否与其它锁定任务存在冲突?同一资源时空上的锁定任务是否存在资源竞争?一个任务锁定后,下一个计划周期是否会要取消?或是否会通过实时规划的方式将期取消锁定?是否会通过实时规划的方式变更原来的锁定时空?例如要主更一下加工资源,修改一下开始时间.....诸如此类的情况,仍隐藏着巨量繁复烧脑的细节逻辑需要啃下来,才能实现一个本对可用的任务锁定功能。欢迎提出更多关于锁定任务的场景来探讨。

<完>

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

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

相关文章

windows C++:进程间通信高实时性、安全、数据量大的通信方式(一)文件映射 (File Mapping)

windows进程间通信是写多进程程序的必修课&#xff0c;高实时性、安全、数据量大的通信方式是很必要的&#xff0c;今天我们来看看文件映射 一、文件映射 (File Mapping) 1. 简单的介绍 文件映射通过将文件的部分或全部内容映射到一个或多个进程的虚拟地址空间&#xff0c;使…

Linux-基础IO

&#x1f30e;Linux基础IO 文章目录&#xff1a; Linux基础IO C语言中IO交互       常用C接口         fopen         fputs         fwrite         fgets 当前路径       三个文件流 系统文件IO       open函数     …

什么是Wi-Fi保护设置(WPS),以及如何使用它?这里有详细解释

生活在现代世界的双刃剑是,一切都可以无线连接,但这往往会让我们更容易受到攻击。WPS可以帮助你减轻这种风险,而不需要你精通技术,只需简单地按下路由器上的按钮。 什么是Wi-Fi保护设置(WPS) 当你不想手动连接时,路由器上的WPS按钮是一种连接无线设备的简单方法。它使…

特征模态分解(FMD):一种小众而又新颖的分解方法

​ 声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 今天为大家介绍一个小众而又新颖的信号分…

行业大模型:推动数字化转型的新引擎

引言 随着人工智能技术的飞速发展,大模型技术正成为推动社会进步和产业革新的关键力量。腾讯研究院的《行业大模型调研报告》为我们揭示了这一技术如何催生新一轮的技术创新与产业变革,特别是在工业、金融、广电等领域的数字化转型和高质量发展中发挥着重要作用。 大模型技…

tensorflow实现二分类

# 导入所需库和模块 from tensorflow.keras.layers import Dense, Input, Activation # 导入神经网络层和激活函数模块 from tensorflow.keras.models import Sequential # 导入Keras的Sequential模型 import pandas as pd # 导入Pandas库用于数据处理 import numpy as np …

SQL小练

创建事件 #创建事件&#xff0c;x秒后&#xff0c;用库存更新昨日库存 DELIMITER $$ CREATE EVENT xxx.xxx ON SCHEDULEAT CURRENT_TIMESTAMP INTERVAL 10 SECOND DOBEGINUPDATE stock SET yesterday_quantityquantity;END $$ DELIMITER ;DELIMITER $$ CREATE DE…

接口文档不显示新写的接口

新写的接口&#xff0c;但是不显示&#xff1a; 仔细对比源码才发现没有写tag&#xff1a; 然后就有了&#xff1a;

ES6之正则扩展

正则表达式扩展 u修饰符&#xff08;Unicode模式&#xff09;y修饰符&#xff08;Sticky或粘连模式&#xff09;s修饰符&#xff08;dotAll模式&#xff09;Unicode属性转义正则实例的flags属性字符串方法与正则表达式的整合 javascript的常用的正则表达式 验证数字邮箱验证手机…

C语言中的循环队列与栈、队列之间的转换实现

引言 在数据结构的学习中&#xff0c;栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两个非常重要的概念。它们分别遵循着后进先出&#xff08;LIFO&#xff09;和先进先出&#xff08;FIFO&#xff09;的原则。在某些情况下&#xff0c;我们可能需要…

C++——超简单登录项目

程序入口文件 #include <QtWidgets/QApplication> // 包含登录页面头文件 #include "DlgLogin.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);// 程序入口// 调页面起来//DlgMain w;//w.show();// 换成登录页面DlgLogin w;w.show();return…

QT状态机6-无目标切换

一个切换也可以没有目标状态,一个没有目标状态的切换也可以像其他切换那样被触发。 其不同之处在于,当一个没有目标的切换被触发时,它不会引起任何的状态变化, 这样便可以让状态机在一个特定的状态时响应信号或者事件而不用离开这个状态。 回顾之前的学习,如下所示:当我…

开源禅道zentao的使用

很不幸禅道因为漏洞被人进攻了&#xff0c;被迫研究。 1.安装 直接使用docker进行部署&#xff0c;这里有非常多门道。官网的镜像easysoft-zentao是属于docker安装&#xff0c;而idoop的镜像虽然也是docker安装&#xff0c;但是实际是使用官网linux一键安装的版本&#xff0c…

一周学习总结:数组与链表

学习内容&#xff1a;数组与链表、计算机网络知识 数组&#xff1a; 从数组的基础知识到相关应用 数组的基础知识&#xff1a;数组在内存中的存储、数组的相关操作&#xff08;获取与更新&#xff09;、数组的相关应用&#xff1a; 二分查找法⭐⭐⭐⭐⭐ ● 掌握左闭右闭的…

2024第16届四川教育后勤装备展6月1日举办 欢迎参观

2024第16届四川教育后勤装备展6月1日举办 欢迎参观 邀请函 主办单位&#xff1a; 中国西部教体融合博览会组委会 承办单位&#xff1a;重庆港华展览有限公司 博览会主题&#xff1a;责任教育 科教兴邦 组委会&#xff1a;交易会159交易会2351交易会9466 展会背景 成都…

[报告购买] 2021新版知识付费行业报告-艾媒咨询,教育产品运营体系下,如何利用平台寻找私域流量的出路?

对教育机构来说&#xff0c;现在既是一个流量充沛的时代&#xff0c;又是一个流量稀缺的时代。互联网环境下&#xff0c;各平台流量数以亿计&#xff0c;为了获客&#xff0c;各教育品牌机构投放、冠名、代言、竞价已成常态化&#xff0c;公域平台的流量争夺如火如荼。 一轮一轮…

Spring之bean的细节(创建方式、作用范围、生命周期)

在Spring框架中&#xff0c;Bean是一个非常重要的概念&#xff0c;它代表了应用程序中需要被管理的对象。关于Bean的细节&#xff0c;我们可以从创建方式、作用范围以及生命周期三个方面进行阐述。 创建方式 Spring支持以下三种方式创建Bean&#xff1a; 调用构造器创建Bean…

Chatgpt教你使用Python开发iPhone风格计算器

上次使用Chatgpt写爬虫&#xff0c;虽然写出来的代码很多需要修改后才能运行&#xff0c;但Chatgpt提供的思路和框架都是没问题。 这次让Chatgpt写一写GUI程序&#xff0c;也就是你常看到的桌面图形程序。 由于第一次测试&#xff0c;就来个简单点的&#xff0c;用Python写用…

GPU Burn测试指导

工具下载链接&#xff1a; https://codeload.github.com/wilicc/gpu-burn/zip/master测试方法&#xff1a; 上传工具到操作系统下&#xff0c;解压缩工具&#xff0c;使用make命令完成编译&#xff08;确保cuda环境变量已经配置成功、 nvcc -v能显示结果&#xff09;。 如果安…

文献速递:多模态深度学习在医疗中的应用--多模式婴儿脑分割技术:模糊引导深度学习

Title 题目 Multimodal Infant Brain Segmentation by Fuzzy-informed Deep Learning 多模式婴儿脑分割技术&#xff1a;模糊引导深度学习 01 文献速递介绍 日益普及的非侵入式婴儿脑磁共振图像&#xff08;MRI&#xff09;为准确理解脑主要发展轨迹的动态性提供了机会&…