相邻两个生产计划之间的衔接问题

本文主要探讨在生产计划的”编制 -> 执行”过程中,遇到的计划与实际生产活动,相邻两个计划之间的衔接问题,及常见的方案建议。

生产计划是通过对生产环境的整体评估,并基于评估结果对生产活动的推导和仿真,从而获得的工作安排,用于指导生产活动。计划人员对生产条件掌握越准确,编制出来的计划越贴近实际情况、越具有可操作性。但无论对计划的内部因素(例如产能、工艺)还是外部因素(例如交期、插单)的把握,均建立在对未来的预期的基础上,必定具有不确定性和可变性。因此,计划的”编制->执行”过程,排产人员除了需要尽可能掌握订单、工艺、设备和资源的现状、变更外,还需要在对生产活动、计划变更等方面有一定的经验和应变能力。

因为生产活动并不一定能完全按照计划的既定预想的(当然编制计划时也会为此预留一定程度的缓冲),当生产活动与计划的差异少于预留的缓冲区时,不会对计划产生根本性改变;一但差异超过缓冲余量,实际情况与计划不再匹配 – 即计划失控。通过APS生成的计划,往往已对各种情况进行过优化,特别是进度和资源方面的优化,相对人工计划更精益。当余量无法容纳变更时时,计划就会被从根本上推翻。但真实的生产活动,这种变更是时刻发生的。当环境因素发生变化时, 人工对计划进行修改就必不可少。因为不可能任何变更都需要或容许即时重新生成计划;这种修改只能成为下一轮计划的额外输入。

上述计划的不确定性需要尽可以掌控外,从计划到执行,再将执行结果反馈到下一轮计划的整个循环过程,还存在大量时效性问题。尽管理想情况下,不考虑现实情况的变化,计划与实际生产之间仍然存在时间上的间隙。即生成的计划在生产单位开始执行,有可能已经过一定时间,时效性有所缺失。因此,计划与实际生产活动之间的衔接,是每个企业的计划体系必须考虑的因素之一。部署了基于APS的自动计划系统后,编制计划所需的时间和计划的周全程度在一定程度上得到缩减和完善;但这种提效和优化,并无法完全消除计划与实际生产的差异,只能起来缓解作用。对于这种时间差异导致的计划与实际生产活动脱节的问题,我们通常采用锁定一定时间范围内生产任务作为过渡区,或通过实时规划方式提高时效性来应对。

一、 在计划与实际生产活动之间设置缓冲区

进行每轮计划时,将与当前时间相近的未来一定时间范围内的计划任务设置为锁定状态,这些任务不纳入新一轮计划,在新一轮计划发布到生产单位前,这些锁定状态的任务用于保证生产活动持续进行。

传统的计划编制方式是以指定的频率,对指定范围内的生产任务,进行定时计划编制。例如每天生成一次计划,每次对未来三天的生产活动进行计划编制。常见的制造业场景中,”计划->执行”过程具有连贯性需求。每次产生新的计划时,因为计算系统运算、人工对计划的查核确认等工作,需要消耗一定的时间。若计划以当前实时编制,而不考虑计划与生产的时间空隙问题、计划部门与生产部门对接问题、生产单位执行延时问题,计划下发到生产单位那一刻有可能已超时,存在”先天性脱离计划要求”的现象。因此,计划必须确保在下发给生产单位时,其时效性是合理的。

此外,实际生产中有可能部分企业因为工艺、资源、设备等特殊原因,在执行计划任务前所需时间无法包含任务的预处理时间,例如特殊工件备料、专业操作人员班组分配等准备工作等。而这些额外的工作往往在实践操作中,是客观存在的,需要预留相应的时间。因此,为确保生产单位可完全按照计划编定的时间、进度来执行,在确定计划的起止时间和起始任务时必须划出一定的缓冲区。这个缓冲区在新旧计划的过渡过程中,起到避免生产活动停滞的作用。因此,在生成新一轮计划时,除了需要把上一轮计划周期内未执行完成的任务在新一轮计划考虑进来外,还需要根据上一周期任务的执行情况(包括但不限于备料情况、机台设备就绪情况等)将计划中部分已排定但未开始执行的一部分任务锁定,供生产单位继续按既定计划执行,并将这些任务排除在新一轮计划范围内。存在这些被锁定的任务,不需参与新一轮计划的规划运算,留给生产单位继续执行,有助于确保这部分任务在时间(开始、结束时间)和空间(使用哪个机台哪些资源)上的稳定性。避免新一轮计划的变化导致这些任务的前期预备工作的浪费。具体的锁定时间长度、任务范围需要根据实际情况而定。

二、通过实时连续计划,保证计划的连贯性

该方法使用了OptaPlanner的实时规划功能(Real Time Planning),通过规划服务程序的全程在线、实时处理特性。当计划各种因素发生变更时(例如任务完成、任务作废、资源可用性变更等),APS系统能即时作出响应,将变更因素纳入考虑范围,并基于已有的计划方案找出新的方案,最大程度上保证计划的连贯性。

该方法虽然可以实现计划工作的持续性,可实时更新计划;但这种连贯性也只是基于变更前后两个方案承接关系,来实现最大程度连贯性。当变更内容过于巨大时,前后的变化还是足以让生产活动出现断层,从而引发上述提到的部分任务的前期预准备工作作废。因此,同样需要使用类似于设定缓冲区的方法,防止生产活动因为计划变更过大,而导致部分任务的预处理工作浪费。只不过因为实时规划的变更通常是连接、小规模逐步进行的。因此,每个变更产生的差异,相对传统的定时分批计划必然小得多;从而产生更小的前后计划间跳跃。在OptaPlanner用户手册中,有专门的章节介绍这处情况,其描述就是我们项目管理中,项目计划常用的滚动计划模型。将任务分为”未计划”,”草拟””已发布”和”历史”四种状态。忆出现,但在当前计划时间内未予以考虑的任务可列为”未计划”,下一轮将要纳入规划运算的任务列为”草拟”,经过规划运算已排定任务执行时空、且需要发布给生产单位执行的任务列表”已发布”,已开始执行或已执行完成的任务列为”历史”;随着时间推移任务遵循上述四种状态进行转换。可以看出,对于已发布的任务,其时间跨度通常会大于计划的周期(也即计划频率)。因此,每一轮发布的计划,可能在下一轮计划会被重新纳入,也有部分任务将会锁定,这些任务虽然未开始执行,但不再纳入下一轮计划;从而确保生产活动的连贯性。如下图。

相邻两个生产计划之间的衔接问题滚动计划

综上,部署了APS系统后,计划编制和发布工作,同样遵循平缓过渡、预留缓冲的原则,以实现计划与生产的无缝接洽;APS系统对计划起到优化和增效的作用。

本系列文章在公众号不定时连载,请关注公众号(搜”让APS成为可能”或扫以下QR Code)及时接收,二维码:

相邻两个生产计划之间的衔接问题

如需了解更多关于OptaPlanner的应用,请发电邮致:kentbill@gmail.com
或到讨论组发表你的意见: _ https://groups.google.com/forum /#!forum/optaplanner-cn ;_
若有需要可添加本人微信(13631823503)或QQ(12977379)实时沟通,但因本人日常工作繁忙,通过微信,QQ等工具可能无法深入沟通,较复杂的问题,建议以邮件或讨论组方式提出。(讨论组属于google邮件列表,国内网络可能较难访问,需自行解决)

Original: https://www.cnblogs.com/kentzhang/p/14839386.html
Author: kentzhang
Title: 相邻两个生产计划之间的衔接问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622663/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【金九银十必问Java面试题】工作六年面试被问JVM为什么使用元空间替换了永久代?

    “JVM 为什么使用元空间替换了永久代?”这是一个工作6年的同学去字节第一面遇到的问题,很遗憾,他没有回答出来大家好,我是Mic,一个工作了14年的Java…

    Java 2023年6月16日
    076
  • IDEA查看class文件

    IDEA查看class文件 class文件又名为字节码文件 人直接看class文件是看不懂的,需要反编译才能看懂。反编译工具有非常多,IDEA也可以实现。 点击Project选项,…

    Java 2023年6月6日
    056
  • Golang实现二维数组的排序

    一、通常的实现方法 实现sort.Interface接口中的3个方法:Len方法、Less方法以及Swap方法,即可通过调用sort包中的Sort方法实现结构体数组的排序。(二维数…

    Java 2023年6月13日
    065
  • Hibernate 离线对象构建通用查询

    1.业务场景 当下主系统衍生子业务系统已经成为常态,像京东的物流和金融,阿里的支付宝和淘宝。 子业务系统需要对主系统的资源进行访问,这里的资源我具体化为数据库数据,但日常业务中可能…

    Java 2023年5月29日
    067
  • springboot集成webservice,基于用户名,密码

    springboot集成webservice,基于用户名,密码 https://blog.csdn.net/hsqingwei/article/details/89331959 p…

    Java 2023年5月30日
    078
  • Java 几种常见数据库连接方式

    String Driver=”com.mysql.jdbc.Driver”; //驱动程序 String URL=”jdbc:mysql://l…

    Java 2023年6月7日
    081
  • 从Go编程看IO多路复用Select

    IO多路复用通过某种机制使进程监听某些文件描述符,当文件描述符中有读或写就绪时,进程能够收到系统内核发送的相应通知从而进行相应的IO操作;IO多路复用有:select、poll、e…

    Java 2023年6月16日
    074
  • AOP 与 注解的那些事儿~

    前言 什么是AOP? AOP的相关概念(面试常客) Spring Boot 如何整合AOP自定义一个注解? 使用拦截器如何自定义注解? 内部调用导致AOP注解失效 总结 注解相信大…

    Java 2023年6月13日
    067
  • (转) MySQL中的意向锁

    详解 MySql InnoDB 中意向锁的作用 posted on2022-09-29 21:54 茶倌 阅读(9 ) 评论() 编辑 Original: https://www….

    Java 2023年6月8日
    076
  • 如何正确的中断线程?你的姿势是否正确

    Java停止线程的逻辑(协同、通知) 在Java程序中,我们想要停止一个线程可以通过interrupt方法进行停止。但是当我们调用interrupt方法之后,它可能并不会立刻就会停…

    Java 2023年6月5日
    064
  • 戏说领域驱动设计(十五)——内核元素

    前面细讲了基于CQS的4层架构,其中的领域模型层也就是六边型架构中的内核在整个开发流程中工作占比最大,也是需要工程师最需要关注地方。那么话说回来了,里面到底包含了什么东西需要投入如…

    Java 2023年6月7日
    086
  • 浅尝Spring注解开发_声明式事务及原理

    业务类 UserDao @Repository public class UserDao { @Autowired private JdbcTemplate jdbcTemplat…

    Java 2023年6月5日
    061
  • 眼见不一定为实:调用链HBase倾斜修复

    hello,大家好,我是小楼。 今天给大家分享一个关于HBase数据倾斜的排查案例,不懂调用链?不懂HBase?没关系,看完包懂~ 背景 最近HBase负责人反馈HBase存储的调…

    Java 2023年6月6日
    076
  • Nginx总结目录

    Original: https://www.cnblogs.com/qtiger/p/16021987.htmlAuthor: 搬砖滴Title: Nginx总结目录

    Java 2023年5月30日
    078
  • Dubbo本地开发技巧

    作为后端服务负载、前后分离的主要手段,dubbo在业界中使用率还比较高。随着Dubbo系统的增多,本地开发、调试就出现了麻烦之处 直接在开发本地起同样一份服务 由于Dubbo采用负…

    Java 2023年6月7日
    096
  • 爽翻天!告别Java。一起来使用kotlin开发完整客户端

    必须写在前面:从Java转向Kotlin,只需要几天时间! 本篇是kotlin开发Android系列教程的最后一篇。前面几篇介绍了kotlin的基本语法、与java的不同之处等。在…

    Java 2023年5月29日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球