齐套检查与分配在生产计划中的实现

简介: 最近一段时间看到很多关于生产计划中,作齐套检查与分析讨论,正好我们的易排1.5版添加了类似功能。本文结合易排平台上相应的功能与特征,介绍一下我们在这方面的些许研究结论与看法。

最近一段时间看到很多关于生产计划中,作齐套检查与分析讨论,正好我们的易排1.5版添加了类似功能。本文结合易排平台上相应的功能与特征,介绍一下我们在这方面的些许研究结论与看法。
本文中用到些引用自易排平台的概念,先行给出定义,以便大家后续畅顺阅读。

概念定义

工序 - 易排平台中,工序是一个工艺相关的概念,多个前后关联工序构成一个产品的工序路线,平台的引擎中对工序展开后,结合工单信息会生成任务,即工序是任务的模板,例如一个多个工单中的多个任务均可以来源于同一个工序

任务 - 易排平台中,任务是一个生产相关的概念,任务由工序衍生而来。即任务是工序的实例

齐套检查 - 在定制生产计划过程中,对于有物料需求的订单或工序, 判断其计划开始时间是否存在足够物料,否则开始时间不合理方案不可行,引擎会继续寻找其它可行方案。

齐套分析 - 通过生产计划中各个有物料需求的工单或工序的开始时间,统计出各种物料在各个时刻的最小需求量,即齐套分析结果可作为MRP的原始数据

可再生资源 - 在引擎进行规划运算过程中用于满足任务执行,且不存在时序相关性的资源,例如:设备器材、人员等,一台设备一天的产能是300,第1天无论是否被分配到任务,第2天的产能仍为300。即每一天的产能与其前1天的分配不相关。

非可再生资源 - 在引擎进行规划过程用于满足任务执行,但资源可用量在时间轴的不同时刻上存在相关性的资源。例如:例如一个生产计划中存在一种物料共有两个任务将会使用到,分别需要该物料量为300,而该物料的库存量为500,当第一个任务分配的时间早于第二个任务时,因为第二个任务加工时,第一个任务已使用了300个单位的资源量,则第二个任务会因为该种物料可用量不足,而无法执行,除非在此期存在入库交易,令库存量增加到300或以上。即在时间轴上不同时刻非可再生资源的使用存在相关性。

齐套检查分析功能的来源与实现原理

在之前的版本中,我们的项目较少遇到需要进对物料进行规划,因此,1.4及以前的版本中,易排平台只针对设备、人员等可再生资源进行规划,实现多工序时序制约、多资源匹配等约束排程。对于原料、耗材等物料相关资源,只能过可用性约束来实现的齐套检查,确保在任务拟定的计划开始时刻有足够的物料可用。但对于齐套分析是无法实现的。
在1.5版本中我们增加一个“非可再生资源”的概念将齐套检查与分析关联在一起实现了,在易排平台中,同一个规划数据集中可同时实现齐套检查齐套分析。即对于一些库存常备的通用耗材,可以将其定义为齐套检查对象,引擎会根据该类物料的库存量、入库计划来制约任务的执行时间。对于按单采购的生产加工物料(例如非标部件、半成品),将其定义为齐套分析对象,引擎不会将该类物料的可用量作为制约条件来限制任务的计划开始时间,而是在输出计划时,会统计各个任务所需的物料及计划开始时间,从而得到一个物料需求清单,并以天为单位列出各种物料在每天的需求量。该清单可以作为MRP报表的基础数据。

MPS与APS两个层次均可产生MRP

易排平台目前主要提供的是针对工单层面的最细层次的排程,即APS,而后续我们还会添加MPS(主生产计划),这一更高层次的规划模块。这两个层次的计划其实是针对供应链的不同阶段而备的,MPS用于在销售订单确认后,生产细节未落实阶段(例如订单已确定但产品工艺设计未确定时)进行的企业级排程,以企业的整体产能为制约基础,着重于订单的交期回复与产能的预估。APS则需要在工单生成后,基于产品的工艺信息,形成具体的生产加工任务,获得各个任务的具体开始时间,计划占用资源等详细信息。
从上述MPS与APS的区别可以看出,在时间上MPS可以较早获得,但其粒度较粗,只能针对订单级别,无法细化到具体的工序。APS阶段则已形成了具体的生产任务,并对任务作出了时、空两个维度的安排。即一个任务计划在什么时间开始、什么时间完成、使用哪些资源。因此,若基于MPS(主生产计划)生成MRP,则需要通过产品的生产BOM获得该产品的物料需求清单,以订单在MPS上的计划开始时间作为所有物料的到位时间。此外,在大多数情况下生产BOM所列的物料需求,与实际生产工艺中定义的物料,在种类与数量上往往存在差异,从而导致物料需求与实现生产过程存在一定程度的失真。
因此,从上述两种MRP的来源数据可以得知,在MPS阶段生成的MRP无论从物料需求准确度还是时间精确度上,均与APS阶段存在一定的差异。但事实上这两个阶段生成的MRP并非此消彼长关系,而是从粗到细的关系。因为,对于一个长期计划来说,MPS阶段的MRP作为未来较长时间(例如未来三个月、半年)的需求计划,其精度已经足够,因为未来的环境因素存在太多的不确定性,过分精准的需求计划价值并不太大,且会因为过分“紧凑精确”失去松驰空间,从而难以作出合理的调整。两个阶段的MRP,前者应该作为高层次的“方向性指导”作用,后者用于精细的作业过程起到“作业指示”作用。

两种MRP的差异示例

关于两个阶段的MRP,在时间精度上的区别,可以从下图理解
640.png
图片在图中,分别列出两个阶段生成的MRP在物料的要求到位时间上的差异。MPS阶段中针对工单对应产品的工序,通过这些工序获得该工单下所需的物料清单,即生产BOM。而在APS阶段的MRP,因为已经获得了工序的加工计划,则可以将任务作为关注目标,获得各个任务的物料需求,且因任务已存在计划开始时间,也即每个物料的到位时间也与任务计划开始时间相关。
上图中,工单001生产的产品包含 “去毛/去刺”,“氧化”与“包装” 3个工序,其中“氧化”工序需要使用5000个单位的氧化剂 - “过氧化氢”;“包装”工序需要使用1200个单位的瓦楞纸箱。MPS与APS两个阶段得到的物料需求列表将会如下:
640 (1).png
MPS生成的MRP中,所有物料的到位时间只能精确到订单计划开始时间;基于APS生成的MRP,则可精确到每个任务开始赶时间。若一个产品的生产周期较长,较后任务所需物料将会过早到货,造成等待浪费。

那么,在易排平台上如何实现齐套检查与分析呢?以下内容与易排平台具体功能相关,只想了解MRP相关内容的可略过。

易排平台的齐套功能实现

下面结合易排平台功能与数据字段,来分享一下我们在设计开发这套齐套检查与分析功能的实现方法。更详细的说明将会在1.5版本的用户操作说明书上提供。本文以Excel格式数据源为例说明。
在易排平台测试示例文件的【2.4.工序资源需求】页上,存在一个名为“资源作用”的字段,它的取值有REQ(Required的缩写)与MRP两种。两者取值分别实现了齐套检查与齐套分析。

取值REQ时 - 在规划运算过程中,该资源将会与可再生资源一样,需要进行资源可用量约束判断,确保在一个计划周期内不会出现资源使用量超过可用量(物料的资源可用量用库存量表示)的情况。

取值MRP时 - 在规划运算过程中,该资源并不起起任务可用量制约作用(但任务还会受其它约束制约),在输出的生产计划中,每个任务所使用的设定为MRP的物料,将会被按天统计需求量,作为MRP的原始数据。

如下图

640 (2).png

上述是工艺层面关于齐套功能的设定,而在实际工作中,很多时间生产环境经常会对工艺进行一定的修订,因此在很多企业的场景中,会产生标准工艺与实际工艺之分。上面【2.4.工序资源需求】页的资源设备仅代表标准工艺方面的设定。当出现实际生产过程中需要进行工艺修订的情况(也即产生实际工艺)时,则可以使用【3.2.任务资源更新】页来实现“实现工艺”中的资源设定。在该表中也存在一个“资源作用”字段,其效果与【2.4.工序资源需求】页相同。仅平台在作数据展开时,会根据平台的规则获取资源需求数据,简而言之就是任务中的资源需求设定最优先,任务中没有设定的,则取任务对应工序的设定。
此外【3.2.任务资源更新】页作为资源更新作用,其具体的更新规则见示例数据中的批注说明。表中“变更类型”字段的作用较有意义,它的取值如下:
APD - (APPEND的缩写)表示当前任务的最终资源需求,是的其来源工序的资源需求基础上追加新的资源需求。例如氧化工序,在工艺中只会设定所使用的设备(氧化池),但具体使用哪种氧化剂,若工艺中不设定,需要在生产时再确定,则可以使用APD的方法添加进来。

RPL - (REPLACE的缩写)表示当前任务将不再使用其来源工序的资源需求,而使用当前设定的资源需求替代之。

CLR - (CLEAR的缩写)表示当前任务不使用任务资源,若任务来源工序设置了资源需求,则清空。

1.5版除了实现双链(其实是1链+1图)模型,其中最大的改进就是在资源上,详情请关注后续说明资料与讲解视频。
【完】

目录
相关文章
|
18天前
【Azure 应用服务】Azure Function 部署槽交换时,一不小心把预生产槽上的配置参数交换到生产槽上,引发生产错误
【Azure 应用服务】Azure Function 部署槽交换时,一不小心把预生产槽上的配置参数交换到生产槽上,引发生产错误
|
3月前
|
人工智能 运维 并行计算
函数计算产品使用问题之如何设置来人为限制内存的使用
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
函数计算产品使用问题之如何设置来人为限制内存的使用
|
4月前
|
监控 DataWorks 调度
调度任务的责任人如果已经不在该项目空间了,调度任务可否正常运行?
调度任务的责任人如果已经不在该项目空间了,调度任务可否正常运行?
51 0
|
12月前
|
资源调度 调度
系统会为你分配一个单独的任务托管单元
系统会为你分配一个单独的任务托管单元
44 1
|
存储 弹性计算 Kubernetes
闲置资源优化,轻松检查集群中的空闲成本
闲置资源优化,轻松检查集群中的空闲成本
|
数据库 Windows 容器
如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?
如何设置IIS程序池的回收时间,才能最大程度的减少对用户的影响?
300 0
|
Java 程序员 调度
线程的创建方式,状态周期管理
进程是计算机中的程序,关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
115 0
线程的创建方式,状态周期管理
有一台机器,并且给你这台机器的工作表,工作表上有n个任务,机器在ti时间执行第i个任务,1秒即可完成1个任务。 有m个询问,每个询问有一个数字q,表示如果在q时间有一个工作表之外的任务请求,请计算何时这个任务才能被执行。 机器总是按照工作表执行,当机器空闲时立即执行工作表之外的任务请求。
Input 输入的第一行包含一个整数T, 表示一共有T组测试数据。 对于每组测试数据: 第一行是两个数字n, m,表示工作表里面有n个任务, 有m个询问; 第二行是n个不同的数字t1, t2, t3....tn,表示机器在ti时间执行第i个任务。 接下来m行,每一行有一个数字q,表示在q时间有一个工作表之外的任务请求。 特别提醒:m个询问之间是无关的。 [Technical Specification] 1. T <= 50 2. 1 <= n, m <= 10^5 3. 1 <= ti <= 2*10^5, 1 <= i <= n 4. 1 <= q <= 2*10^5 Ou
139 0
|
负载均衡 Java 微服务
从JVM角度思考--如何预估线上环境机器资源大小
如何给JVM虚拟机巧妙地设计参数对大部分开发来说一直是个随缘的事情,可能是去网上拷贝一套参数,可能是沿用公司其他应用的参数。但是这个随缘的操作可能就会给未来留下隐患。给JVM分配的内存过大倒是没什么问题,无非浪费点资源,但是如果分配的内存过小,就有可能导致频繁的Full GC,给人一种系统一直很卡的感觉。这篇文章就通过一个实例分析一下如何结合场景设置JVM虚拟机参数。 当然,本文更重要的是希望能通过预估参数的这个过程,让你更加了解虚拟机内部的一些东西,要想最准确的参数设置,用一些工具记录下JVM各个区域的变化会更有效。