标准化数据接口
07 把库存要求转换为累计约束
任务:从库存收支推导字段
支架期初库存20件,要求各日末至少保留20件、最多100件。第一天出库80件,第二天再出库40件,无其他入库。需要把这些条件转换成inventory_limit中的累计生产数量范围。
本课检查每个时间单元末的库存。若库容必须在班中每个时刻都满足,需要更细时间表示和收发次序;日末约束不能代替班中检查。
一步一步计算
设截至t累计生产入库为P(t),累计出库为D(t),则库存为20+P(t)−D(t)。要求20 ≤ 20+P(t)−D(t) ≤ 100,得到D(t) ≤ P(t) ≤ D(t)+80。
| 时期 | 当期出库 | 累计出库D(t) | 累计生产下限 | 累计生产上限 |
|---|---|---|---|---|
| 1 | 80 | 80 | 80 | 160 |
| 2 | 40 | 120 | 120 | 200 |
实际写入:
| id | product | time_unit | binding | lower_bound_acc | upper_bound_acc | urgency |
|---|---|---|---|---|---|---|
| 1 | 1 | 1 | NULL | 80 | 160 | 0 |
| 2 | 1 | 2 | NULL | 120 | 200 | 0 |
两行下限80、120已是累计值,不再相加成200。原始期初库存与出库计划保存在来源表或映射依据中;标准表承载推导后的约束。
反向检查
候选生产第一天80、第二天40,累计产出为80、120;两天日末库存均为20,符合要求。如果第一天只生产60,则日末为0,低于安全库存20,即使两天最终总量达到120也不能弥补第一天的库存缺口。
有其他入库E(t)时,上下限应同步扣除E(t)。未配置限制使用NULL;下限0表示确实允许累计生产为0,不能混为一谈。
共用库存与紧迫性
相同binding表达多个制品共用库存的关系,但具体容量分配要考虑共同单位。大箱与小箱各一件可能占用不同空间,应使用体积、托位或明确的等效系数。urgency表达紧迫性或周转相关信息,何时影响优先选择需要对应策略解释。
练习与解析
期初库存改为30,其他条件不变。第一天下限70、上限150,第二天下限110、上限190。若推导的上限为负,说明零生产仍然超过库容,不能把负数静默改为0掩盖矛盾。下限低于0且生产数量要求非负时,可采用0作为有效下界。
当前数据层可以表达和校验上下限。实际求解时检查所选模型采用的库存规则,并用“只改一项库存条件”的对照运行确认结果,而非仅凭表中有值判断已生效。