zoukankan      html  css  js  c++  java
  • 生产模块之乱弹(二)

    上一回我们没说重叠那个Job类型是咋回事,这次我们弹一弹。

    整个生产可能要经过多道工序,比如要经过两道工序10,20,我要生产1000个产品,在一般情况下,如果没有设定转移批次(插一句,AX的中文翻译成转移批处理,在下不敢苟同,虽然俺是生产模块的白痴...)的话,这1000个产品要在完全完成10工序后才转到20工序,这样是顺序执行生产的,这样显然不符合某些生产场景,一般情况下会在10工序完成一部分比如100个就转移到20工序,并行提高生产效率,让20工序干等着多浪费事?

    OK,我们看一下在AX里如何实现重叠。

    在工艺路线或者生产订单的工艺路线我们都可以对工序进行更改,工艺路线对工序的一些定义只是基础数据,真实要执行的工序数据是以在生产订单的工艺路线为准的,这里的讨论以生产订单->工艺路线为准。

    假设我们要生产1000个产品,生产订单有两道工序10和20,首先不使用重叠,其在生产工艺路线时间选项卡的设定如下:

    10:

    一个小时可以生产60个产品,运输时间为1小时,之后的排队时间为1小时。

    20:

    一小时可以生产40个,之前的排队时间为1小时,设置时间为1小时。

    这时候我们做作业级排产,看一下产生的作业情况。

    我们可以看到20工序是在10工序完成之后才开始的,并没有重叠。

    假设我们要在10工序生产完1个后就马上转入到20工序,应该怎么设置那?

    其实这个很简单,我们需要首先介绍一下  工艺路线 时间 选项卡里的  转移批处理和重叠数量.

    转移批处理:在连续的工作中心之间转移的数量。

    重叠数量:在可以开始下一道工序前要生产的数量。

    这两个子字段很好理解,转移批处理就是我一次可以从10转移到20多少个产品用来加工,重叠数量就是我要在10工序生产多少个以后才能从10工序转移产品到20工序,乍一听重叠数量好像有些不可思议,我生产完一个就开始移动呗,这有啥好说的,嗯,是的,在正常情况下确实可以这么做,我们先把上面的例子做完,然后再详细所以下为啥要加这么个重叠数量,并且不设置转移批处理还不让编辑。。。

    OK,我们设置10工序的转移批处理设置为1,这时重叠数量自动设为1,如下图所示:

    这时我们再做作业级排产,并查看产生的Job,如下图所示:

    我们可以看到20工序并没有等到10工序全部完成才开工,而是在重叠生产完1个后就运输,然后进入20工序。

    OK,到目前为止一切顺利,万事大吉,可那个重叠数量貌似还没有用武之地。重叠数量可以自己设一个数值,在完成多少个后才开始第二道工序的生产。如果20工序比10工序加工的快,也就是 处理数量字段设置的比10工序大,就会有一个问题,如果重叠数量过小,也就是10工序完成的数量很少第二道工序就开工了,就会出现一种情况,那就是20工序已经完成了,10工序还没完成,这显然是有些不合常理的。所以如果20工序比10工序快,10工序的重叠数量必须设置得足够大,也就是10工序生产的时间要足够长才开始转移,让20工序多等会,否则就出现20工序先于10工序完成的情况了。

    我们修改20工序的处理数量为100,大于10工序的60,其余保持不变,重叠数量依然为1,再运行作业级排产看看效果,我们收到了如下的提示:

    在 估计 的时候,它已经帮忙把重叠数量从1改成160.60了,作业情况如下:

    AX帮你算了一把,如果按照重叠数量为1去计算,也就是10做完1个后,20就开工,这样算下来,20就会先于10完工了,它意识到我们设置的有问题帮我们改正了。

    它是怎么算出160.6这么个稀奇古怪的数字那,我们以描述它的计算逻辑结束本文吧。

    1. 10工序处理一件产品的时间 0.016667 小时

    1. 10工序处理全部产品的时间 16.666667小时

    2. 20工序处理全部产品的时间 1000/100 = 10小时

    3.20工序完成全部产品需要的时间 = 10工序的运输时间(1小时)+10工序的之后排队时间(1小时)+20工序的之前排队时间(1小时)+20工序的设置时间(1小时)+20工序的处理时间(10小时)=14小时

    4. 20 工序处理 转移批处理 数量需要的时间 1/100 = 0.01小时

    5.如果 20工序完成全部产品需要的时间 小于  10工序处理全部产品的时间 的时间,也就是说20工序会先于10工序完成,则重叠数量按如下逻辑计算:

        重叠数量 = (10工序处理完全部产品的时间+20 工序处理 转移批处理 数量需要的时间-20工序完成全部产品需要的时间)/10工序处理一件产品的时间

                     = (16.666667+0.01-14)/0.016667

                     = 160.596808.

    OK,今天就弹到这里了,有空接着弹。。。

  • 相关阅读:
    (转载)C++ string中find() ,rfind() 等函数 用法总结及示例
    UVA 230 Borrowers (STL 行读入的处理 重载小于号)
    UVA 12100 打印队列(STL deque)
    uva 12096 The SetStack Computer(STL set的各种库函数 交集 并集 插入迭代器)
    uva 1592 Database (STL)
    HDU 1087 Super Jumping! Jumping! Jumping!
    hdu 1176 免费馅饼
    HDU 1003 Max Sum
    转战HDU
    hust 1227 Join Together
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/1246992.html
Copyright © 2011-2022 走看看