【发布时间】:2020-08-27 22:28:50
【问题描述】:
我目前正在处理一个项目,我正在尝试使用交通问题来解决这个问题。本质上,我需要做的是根据学生的居住地将学生分配到他们的学校。由于他们可以研究不同的事物,我将其建模为多商品运输问题。对该项目施加的限制之一是,同一学习方向和同一居住地的每个学生都需要分配到同一所学校。 这将给出以下数学模型:
我已经设法实现了除最后一个之外的所有约束。我的尝试是按照以下方式进行。
for g in communes:
for l in studies:
model.addConstraint(pulp.LpConstraint(
e=pulp.lpSum(x[g,s,l] - students[g,l] if x[g,s,l]==students[g,l] else x[g,s,l] for s in schools if (g,s,l) in x),
sense=pulp.LpConstraintEQ,
name='Unique_assignment[{}, {}]'.format(g,l),
rhs=0
))
添加最后一个约束会导致 PuLP 忽略所有其他约束,我不明白。谁能给我一个关于我需要如何实现这样的条件的指针?
【问题讨论】:
-
我不明白第一个和最后一个约束的组合。
d_gl显然是一个自然数,但是如果x_gsl \in {0, d_gl},那是不是意味着所有x_gsl中只有一个可以为1,而其他所有s \in S都必须为0?
标签: python constraints linear-programming pulp