模型简介
背景
在生产与需求已知的情况下,分销计划决定物品在供应链的各个站点之间的调拨关系。 其中,流向指的是在哪些站点之间进行调拨以及所使用的运输方式,流量指的是调拨的物品数量。
物品在站点之间调拨时,需要满足一定的约束条件。常见的约束条件有:
- 运输方式的限定:限定某种商品只能使用某种运输方式进行调拨
- 储运能力的限定:限定起始地和目的地之间的某种运输方式储运能力的上界,下界,或者指定量
- 流向的限定:限定某种商品/产品组只能在某些站点之间进行以某种运输方式的调拨,并且调拨的量有上界,下界,或者指定量的限制
另外,各个起始站点的生产计划决定了在计划周期内的供应量,各个终端站点的需求计划决定了在计划周期内对每个物品的需求数量。生产与需求计划,连同上述的约束条件,一并作为输入,成为制订分销计划的依据。 分销计划的目标是在满足约束条件的前提下平衡供需关系。优化的分销计划,在平衡供需的同时,还要做到把优化目标最小或者最大化。
分销计划应用
分销计划模型是基于Convect的FlowOpt通用时空网络优化解决方案的一个特例化应用,可以基于用户给定的
- 需求计划
- 生产计划
- 运输方式限制
- 储运能力限制
- 流向限制
并支持用户自定义地点集合,产品集合,运输方式集合,来扩展约束条件的定义范围,来快速制定分销计划。
分销计划应用支持多场景,多计划实例的管理,给计划人员很大的自由度快速创建自定义场景,并支持快速复制计划实例并修改输入条件做what if的计划分析。
模型求解概要
分销计划模型基于需求和生产计划以及运输方式限制,构建空间网络。其中网络的空间节点为
- (产品,站点)
边为
- (产品,起始地,目的地,运输方式)
模型按照优先级从高到低依次求解,每次求解后,限制目标,再次求解
- 流向约束条件 (最小化约束违反)
- 储运约束条件 (最小化约束违反)
- 供需平衡条件(最小化需求缺口)
- 最小化运输成本
并且,模型在供小于求的情况下,对缺口数量会基于需求自动按比例分配(详见场景实例)
模型网络链路创建逻辑
这里我们以一个简单的例子来说明模型的网络链路创建逻辑。假设我们有两个工厂,A,B,两个仓库, C, D, 两个产品,P1,P2,两种运输方式,T1,T2。
用户提供的输入生产计划,需求计划,运输方式限制, 运输成本如下:
- 生产计划
产品名称 | A | B |
---|---|---|
P1 | 100 | 100 |
P2 | 100 | 100 |
- 需求计划
产品名称 | C | D |
---|---|---|
P1 | 100 | 100 |
P2 | 100 | 100 |
- 运输方式限制
产品名称 | 运输方式 | 允许 |
---|---|---|
P1 | T1 | 1 |
P1 | T2 | 0 |
P2 | T1 | 0 |
P2 | T2 | 1 |
- 运输成本
来源地 | 目的地 | 产品 | 运输方式 | 运输成本 |
---|---|---|---|---|
A | C | P1 | T1 | 10 |
A | C | P2 | T2 | 10 |
A | D | P1 | T1 | 10 |
A | D | P2 | T2 | 10 |
B | C | P1 | T1 | 10 |
B | C | P2 | T2 | 10 |
B | D | P1 | T1 | 10 |
B | D | P2 | T2 | 10 |
系统会根据如下步骤创建网络
-
根据生产计划,需求计划的站点创建起OD配对 (起始地,目的地)
- (A, C), (A, D), (B, C), (B, D)
-
根据生产计划,需求计划的产品在站点OD配对的基础上创建 (产品,起始地,目的地), 这里要求生产计划和需求计划的产品必须一致。
- (P1, A, C), (P1, A, D), (P1, B, C), (P1, B, D)
- (P2, A, C), (P2, A, D), (P2, B, C), (P2, B, D)
-
根据运输方式限制,创建 (产品,起始地,目的地,运输方式)
- (P1, A, C, T1), (P1, A, D, T1), (P1, B, C, T1), (P1, B, D, T1)
- (P2, A, C, T1), (P2, A, D, T1), (P2, B, C, T1), (P2, B, D, T1)
- (P1, A, C, T2), (P1, A, D, T2), (P1, B, C, T2), (P1, B, D, T2)
- (P2, A, C, T2), (P2, A, D, T2), (P2, B, C, T2), (P2, B, D, T2)
-
根据运输方式限制过滤掉产品不允许的运输方式,过滤后为如下 (产品,起始地,目的地,运输方式)
- (P1, A, C, T1), (P1, A, D, T1), (P1, B, C, T1), (P1, B, D, T1)
- (P2, A, C, T2), (P2, A, D, T2), (P2, B, C, T2), (P2, B, D, T2)
-
若在模型参数中设置了参数使用运输成本过滤链路为1,则系统会根据运输成本中定义的 (产品,起始地,目的地,运输方式) 过滤掉不允许的配对。
- 比如如果运输成本输入中 (P1, A, C, T1) 缺失,则系统会过滤掉 (P1, A, C, T1) 配对。
注意:
由于模型的输出是基于创建的网络结构,故链路的存在与否对于模型构建是硬性的条件,即如果某个链路不存在,模型的输出中就不会有该链路的信息。
模型约束条件概要
目前模型的约束条件如下:
- 运输方式限制 (下文中简称为限制条件1)
- 限制是否允许产品以某种运输方式运输 (详见数据导入运输方式限制部分)
- 储运约束条件 (下文中简称为限制条件2)
- 对于始发地到目的地的某种运输方式的运输总量的限制 (详见数据导入储运能力限制部分)
- 流向约束条件 (下文中简称为限制条件3)
- 对于是始发地到目的地某种产品以某种运输方式下的运输总量的限制 (详见数据导入流向约束部分)
运输方式限制(限制条件1)以及若用户使用模型配置开启使用运输成本过滤链路为硬性限制条件。
储运约束条件(限制条件2)以及流向约束条件(限制条件3)为软性限制条件,系统会最小化违反。
其中在最小化违反时,会优先最小化流向约束条件违反,其次是储运约束条件违反。所以,从限制条件优先级的考量上,用户可以将限制条件优先级理解为
运输方式限制(限制条件1) > 流向约束条件(限制条件3) > 储运约束条件(限制条件2)
隐含的约束条件
除了以上显示定义的约束条件,模型还有隐含处理供需平衡的情况。
系统会根据用户的生产计划,在(产品,厂) 的网络节点放置外部输入流, 外部输入流为网络创建时给定, 故也为硬性条件,由此会导致储运约束条件(限制条件2)和流向约束条件(限制条件3)的违反(详见场景实例中的例子)。
此外,在供需不平衡(供<求)的情况下,系统会最小化供需缺口,以及对缺口按照用户给定的需求等比例分配(详见场景实例中的例子)。这一部分的决策优先级,会高于最小化成本。