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

        最近一段时间看到很多关于生产计划中,作齐套检查与分析讨论,正好我们的易排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,在时间精度上的区别,可以从下图理解

图片

        在图中,分别列出两个阶段生成的MRP在物料的要求到位时间上的差异。MPS阶段中针对工单对应产品的工序,通过这些工序获得该工单下所需的物料清单,即生产BOM。而在APS阶段的MRP,因为已经获得了工序的加工计划,则可以将任务作为关注目标,获得各个任务的物料需求,且因任务已存在计划开始时间,也即每个物料的到位时间也与任务计划开始时间相关。

        上图中,工单001生产的产品包含 “去毛/去刺”,“氧化”与“包装” 3个工序,其中“氧化”工序需要使用5000个单位的氧化剂 - “过氧化氢”;“包装”工序需要使用1200个单位的瓦楞纸箱。MPS与APS两个阶段得到的物料需求列表将会如下:

图片

MPS生成的MRP中,所有物料的到位时间只能精确到订单计划开始时间;基于APS生成的MRP,则可精确到每个任务开始赶时间。若一个产品的生产周期较长,较后任务所需物料将会过早到货,造成等待浪费。

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

易排平台的齐套功能实现

下面结合易排平台功能与数据字段,来分享一下我们在设计开发这套齐套检查与分析功能的实现方法。更详细的说明将会在1.5版本的用户操作说明书上提供。本文以Excel格式数据源为例说明。

在易排平台测试示例文件的【2.4.工序资源需求】页上,存在一个名为“资源作用”的字段,它的取值有REQ(Required的缩写)与MRP两种。两者取值分别实现了齐套检查与齐套分析。

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

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

如下图

图片

        上述是工艺层面关于齐套功能的设定,而在实际工作中,很多时间生产环境经常会对工艺进行一定的修订,因此在很多企业的场景中,会产生标准工艺与实际工艺之分。上面【2.4.工序资源需求】页的资源设备仅代表标准工艺方面的设定。当出现实际生产过程中需要进行工艺修订的情况(也即产生实际工艺)时,则可以使用【3.2.任务资源更新】页来实现“实现工艺”中的资源设定。在该表中也存在一个“资源作用”字段,其效果与【2.4.工序资源需求】页相同。仅平台在作数据展开时,会根据平台的规则获取资源需求数据,简而言之就是任务中的资源需求设定最优先,任务中没有设定的,则取任务对应工序的设定。

        此外【3.2.任务资源更新】页作为资源更新作用,其具体的更新规则见示例数据中的批注说明。表中“变更类型”字段的作用较有意义,它的取值如下:

  • APD - (APPEND的缩写)表示当前任务的最终资源需求,是的其来源工序的资源需求基础上追加新的资源需求。例如氧化工序,在工艺中只会设定所使用的设备(氧化池),但具体使用哪种氧化剂,若工艺中不设定,需要在生产时再确定,则可以使用APD的方法添加进来。

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

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

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

        我们的易排平台就是基于OptaPlanner求解器做的一个一定程序上对Job Shop Scheduling场景的泛化,可以最大程度上适配各种复杂的生产计划和车间调度情况。需进一步了解,可以关注公从号【让APS成为可能】获取更详细资料,或添加本人微信 13631823503详细探讨。

【完】

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

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

相关文章

c#设计模式-结构型模式 之 外观模式

概述 外观模式(Facade Pattern)又名门面模式,隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口。这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性。该模式…

pytorch下的scatter、sparse安装

知道自己下载的torch配置 import torch print(torch.__version__) print(torch.version.cuda)进入网站,选择自己配置 https://pytorch-geometric.com/whl/下载相应的包 安装 pip install ******.whl

Hbase-技术文档-java.net.UnknownHostException: 不知道这样的主机。 (e64682f1b276)

问题描述: 在使用spring-boot操作habse的时候,在对habse进行操作的时候出现这个问题。。 报错信息如下: 第一段报错: 第二段报错: java.net.UnknownHostException: e64682f1b276 问题定位解读: 错误 ja…

【ArcGIS Pro二次开发】(62):复制字段

应网友需求,做了这么一个复制字段的小工具。 假定这样一个场景,手头有一个要素1,要素里有10个字段,另一个要素2,除了shape_area等图形字段外,没有其它字段。 现在的需求是,想把要素1中的8个字…

Java“牵手”天猫图片识别商品信息API接口数据,图片搜索商品接口,天猫拍立淘API接口申请指南

天猫平台按图搜商品接口(拍立淘)是开放平台提供的一种API接口,通过调用API接口,开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、最低价、当前价格、价格信息等详细信息 。 获取拍立淘接口API…

2 hadoop的目录

1. 目录结构: 其中比较的重要的路径有: hdfs,mapred,yarn (1)bin目录:存放对Hadoop相关服务(hdfs,yarn,mapred)进行操作的脚本 (2)etc目录&#x…

MySQL表的增删改查

文章目录 MySQL表的增删改查1. Create1.1 单行数据插入1.2 多行数据插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式2.1.4 为查询结果指定别名2.1.5 结果去重 2.2 WHERE 条件2.2.1 英语不及格的同学及英语成绩(&l…

cs231n assignment3 q3 Image Captioning with Transformers

文章目录 先啰嗦直接看代码Q3 Image Captioning with TransformersMultiHeadAttention.forward题面解析代码输出 Positional Encoding题面解析代码输出 transformer.forward题面解析代码输出 先啰嗦直接看代码 Q3 Image Captioning with Transformers MultiHeadAttention.for…

在vue项目中用vue-watermark快捷开发屏幕水印效果

我们先引入一个第三方依赖 npm install vue-watermark然后 因为这只是个测试工具 我就直接代码写 App.vue里啦 参考代码如下 <template><div><vue-watermark :text"watermarkText"></vue-watermark><!-- 正常的页面内容 --></div…

OpenCV基础知识(8)— 图形检测

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。图形检测是计算机视觉的一项重要功能。通过图形检测可以分析图像中可能存在的形状&#xff0c;然后对这些形状进行描绘&#xff0c;例如搜索并绘制图像的边缘&#xff0c;定位图像的位置&#xff0c;判断图像中有没有直线、…

QtCreator指定Windows Kits版本

先说下事件起因&#xff1a;之前一直在用Qt5.12.6&#xff0b;vs2017在写程序&#xff0c;后面调研了一个开源库Qaterial&#xff0c;但是翻来覆去的编译都有问题&#xff0c;后面升级到了Qt5.15.2&#xff0b;vs2019来进行cmake的编译&#xff0c;搞定了Qaterial&#xff0c;但…

Uniapp笔记(八)初识微信小程序

一、微信小程序基本介绍 1、什么是微信小程序 微信小程序简称小程序&#xff0c;英文名Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用 小程序是一种新的开放能力&#…

键入网址到网页显示,期间发生了什么?

目录 1.DNS2.可靠传输 —— TCP3.远程定位 —— IP4.两点传输 —— MAC5.出口 —— 网卡6.送别者 —— 交换机&#xff08;可省略&#xff09;7.出境大门 —— 路由器8.数据包抵达服务器后9.响应过程&#xff1a;带有MAC、IP、TCP头部的完整HTTP报文&#xff1a; 1.DNS 客户端…

C++--两个数组的dp问题(2)

1.交错字符串 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给定三个字符串 s1、s2、s3&#xff0c;请判断 s3 能不能由 s1 和 s2 交织&#xff08;交错&#xff09; 组成。 两个字符串 s 和 t 交织 的定义与过程如下&#xff0c;其中每个字符串都…

Redis—Redis介绍(是什么/为什么快/为什么做MySQL缓存等)

一、Redis是什么 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符串)、…

Vue中ElementUI结合transform使用时,发现弹框定位不准确问题

在近期开发中&#xff0c;需要将1920*1080放到更大像素大屏上演示&#xff0c;所以需要使用到transform来对页面进行缩放&#xff0c;但是此时发现弹框定位出错问题&#xff0c;无法准备定位到实际位置。 查看element-ui官方文档无果后&#xff0c;打算更换新的框架进行开发&am…

FFmpeg支持多线程编码并保存mp4文件示例

之前介绍的示例&#xff1a; (1).https://blog.csdn.net/fengbingchun/article/details/132129988 中对编码后数据保存成mp4 (2).https://blog.csdn.net/fengbingchun/article/details/132128885 中通过AVIOContext实现从内存读取数据 (3).https://blog.csdn.net/fengbingchun/…

自动设置服务器全教程

亲爱的爬虫探险家&#xff01;在网络爬虫的世界里&#xff0c;自动设置代理服务器是一个非常有用的技巧。今天&#xff0c;作为一家代理服务器供应商&#xff0c;我将为你呈上一份轻松实用的教程&#xff0c;帮助你轻松搞定爬虫自动设置代理服务器。 一、为什么需要自动设置代…

C语言实现状态机

关于状态机&#xff0c;基础的知识点可以自行理解&#xff0c;讲解的很多&#xff0c;这里主要是想写一个有限状态机FSM通用的写法&#xff0c;目的在于更好理解&#xff0c;移植&#xff0c;节省代码阅读与调试时间&#xff0c;体现出编程之美。 传统的实现方案 if...else : …

Unittest 笔记:unittest拓展生成HTM报告发送邮件

HTMLTestRunner 是一个unitest拓展可以生成HTML 报告 下载地址&#xff1a;GitHub: https://github.com/defnnig/HTMLTestRunner HTMLTestRunner是一个独立的py文件&#xff0c;可以放在Lib 作为第三方模块使用或者作为项目的一部分。 方式1&#xff1a; 验证是否安装成功&…