APS高级排产系统---frepple源码阅读分享

一.  安装

以ubuntu14.04系统为例,系统的安装步骤为:

1. 安装python2.7

2. 安装postgres

3. 安装python模块:openpyxl

4. 安装django 1.6.8 的版本。

   将目录software_adds中的Django-1.6.8.tar.gz解压后,进入目录,执行:python setup.py install

5. 开始安装frepple-2.4,首先进入目录后,运行 ./configure(失败的话,缺失的库xerces-c在software_adds目录下),

   然后执行make,最后执行 sudo make install。

   安装成功后, 在命令行中输入 sudo frepple --help 会打印出帮助信息。

6. 修改 /etc/frepple/djangosettings.py 的配置,“TIMEZONE”,“SECRET_KEY”,“DATABASES”(数据库要在启动前已经创建完毕)。

7. 同步数据库,将数据模型在数据库中创建出来,使用命令为:python frepplectl.py syncdb

8. 导入样例数据,命令为:python frepplectl.py loaddata demo

9. 启动服务: python frepplectl.py frepple_runserver.

10. 在浏览器中输入 localhost:8000 访问系统。



二.算法原理说明

1.加载所有的工序/库存/子工序等信息形成组织树结构。

注:子工序是工序的alternate。比如:快递出去,可以通过公司1,也可以通过公司2。这样 快递出去的工序,有两个子工序:公司1快递出去,公司2快递出去。

1.加载所有的工序/库存/子工序等信息形成组织树结构。

注:子工序是工序的alternate。比如:快递出去,可以通过公司1,也可以通过公司2。这样 快递出去的工序,有两个子工序:公司1快递出去,公司2快递出去。


2. 将每个独立的组织树作为一个cluster簇。每个簇之间资源/工序等都独立,可以并行执行计划。

3. 通过demand需求对应的交付工序。该工序属于哪个cluster,就将demand归类于这个簇。

4. 按簇分多线程执行,每个线程处理同一个簇中的demand

5.多线程处理时,先将demand排序,将优先级高的排前面处理。(顺序:优先级/交付日期/数量,数字小的优先级高)

单个demand计划排程的算法原理:

以需求交付时间为起点,反时间方向从工序到子工序/工序流/库存计算终止时间。如果只有一个demand,并且一天就能完工,那么排程时会将工序的开始时间设置为需求交付的前一天。


算法的大体工作步骤:

1. 需求对应一个交付工序,这个工序的终止时间就是需求的交付时间。

2. 工序包含多个工序流,每个工序流的终止时间为:工序.due 减去 工序.后置时间 再减去工序本身耗时。

3. 工序流消费库存,如果库存不足,会调用生产库存的工序生产,该生产工序的终止时间为 工序流的.due。

4.  如上迭代计算每个工序的结束时间。(开始时间可由结束时间和数量等信息推导出)。

5. 工序包含多个负载,需要查看负载对应的资源的日历,如果交付时间时的资源被占用。程序往前(逆时间方向)找日历中资源可用的时间点,尝试修改需求的交付时间为该时间点(该时间点 早于 需求原本计划的时间点),重新计算计划。如果没有找到可用的历史时间,则demand计算返回失败。

demand返回失败后,如果demand 有最大延期时间, 则 demand的交付时间 加上lazydelay(系统配置的时间间隔),然后重新计算该demand。直到延期超过最大延期时间时该需求计划失败。


三. 名词解释

地点(location):某组加工 所赖以存在的 位置区域, 如 某分厂, 某厂内分区。它们可能是使用一个相同的 日历x, 进而 当资源放在此位置, 工序发生在此位置区域, 人员在此位置上班, 他(它)们将自动继承 此位置的日历x。

产品(item):每道工序的输入,输出都是产品

工序(operation):加工某个具体物料的某个具体工序

子工序(suboperation):可以替换父工序的多种可能工序。如邮递出去,可以通过公司1和公司2,则邮递出去工序有两个子工序:通过公司1邮递出去和通过公司2邮递出去。

负载(resourceload):当工序在实例化时, 必然 在 某一组(个)资源上 产生负载。

资源(resource):设备, 工具, 人员,一条流水线

库存(buffer):某具体物料在 多个 工位的 即时库存

资源技能(resourceskill): 对于具体的某一个人, 比如会开叉车, 会焊接, 会CNC编程, 对于设备, 比如该设备 能做 A1,也能做A3, 另一个设备能做B8?, 工具 类似, 这些技能 涉及到 分配具体的资源时, 有自动挑选的依据.

需求(demand):订单。




  • 4
    点赞
  • 31
    收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

labracy

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值