You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pyomo运输问题如何添加约束实现配送中心单工厂供货

Pyomo运输模型单源供货约束实现方案

给原有线性规划模型补充二进制决策变量与配套约束,将模型转为混合整数规划,即可实现每个配送中心仅由单家工厂供货的业务规则,具体修改步骤如下:


核心修改逻辑

单源供货规则的本质是为每个配送中心做0-1供货方选择:

  • 新增二进制变量标记「某工厂是否为某配送中心的唯一供货方」
  • 约束每个配送中心只能选中1家供货工厂
  • 强制非选中工厂到对应配送中心的运输量为0

具体代码修改

1. 新增二进制决策变量

在原有连续运输量变量model.x的定义后,添加0-1类型的供货标记变量:

# 二进制变量:y[i,j]=1 表示工厂i为配送中心j的供货方,0表示不供货
model.y = Var(model.i, model.j, domain=Binary)

2. 添加单源选择约束

保证每个配送中心有且仅有1家供货工厂:

# 约束规则:每个配送中心仅能选择1家工厂供货
def single_source_constraint(model, j):
    return sum(model.y[i, j] for i in model.i) == 1
model.single_source = Constraint(model.j, rule=single_source_constraint)

3. 绑定运输量与供货标记

通过大M法建立运输量和供货标记的关联:如果某工厂未被选中为配送中心供货,则对应路径的运输量必须为0。这里大M取对应配送中心的需求量即可,边界最紧、求解效率最高:

# 约束规则:非供货工厂到配送中心的运输量强制为0
def x_y_link_constraint(model, i, j):
    return model.x[i, j] <= model.b[j] * model.y[i, j]
model.x_y_link = Constraint(model.i, model.j, rule=x_y_link_constraint)

运行说明

  • 原有代码使用的glpk求解器原生支持混合整数规划,无需更换求解器,直接运行即可
  • 原有产能约束、需求约束、目标函数均不需要修改,模型会自动在单源供货的可行域内寻找总成本最低的方案
  • 按给出的参数计算,修改后DC3将由Factory B独家供货(Factory C剩余产能仅1300件,无法满足DC3的1800件需求),不会再出现多工厂共同供货的情况

内容的提问来源于stack exchange,提问作者Hookstark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 09:39:19