如何为 PuLP 中的成本优化制定矩阵约束
How to formulate matrix constraint for cost Optmization in PuLP
我正在尝试在 PuLP 中针对成本优化问题制定这个基于复杂矩阵的约束:
我有一个 vars[(i,j)] for i in TruckTypes for j in Days
作为我的决策变量,它只能采用非负整数值。我正在尝试对 active
天数实施限制。
现在,由于 Days
表示为列,任何全零值的列都是 inactive
天,所有其他列都是 active
天。有 6 列表示星期一到星期六。例如在下面的矩阵中:
1 0 0 1 3 0
0 0 0 1 1 0
2 0 0 1 0 0
0 0 0 1 0 0
第 2,3 和 6 列是 inactive
,第 1,4 和 5 列是 active
。现在,如何为该决策变量制定约束条件,例如 Number of active Days == 3
。
任何帮助将不胜感激。谢谢!!
想了想..我想我已经破解了这个...
- 为活跃天数创建一个虚拟的一维二元决策变量。 0- 非活动 1- 活动。
ActiveDays = LpVariable.dicts('activedays', Days,0,1, LpBinary)
- 创建一个非常大的虚拟常量。
M=200000
- 添加第一个约束。
prob += LpSum(m[j] for j in Days) ==3
添加第二个约束
for j in Days:
prob += LpSum(vars[i][j] for i in TruckTypes) <= M*m[j]
我正在尝试在 PuLP 中针对成本优化问题制定这个基于复杂矩阵的约束:
我有一个 vars[(i,j)] for i in TruckTypes for j in Days
作为我的决策变量,它只能采用非负整数值。我正在尝试对 active
天数实施限制。
现在,由于 Days
表示为列,任何全零值的列都是 inactive
天,所有其他列都是 active
天。有 6 列表示星期一到星期六。例如在下面的矩阵中:
1 0 0 1 3 0
0 0 0 1 1 0
2 0 0 1 0 0
0 0 0 1 0 0
第 2,3 和 6 列是 inactive
,第 1,4 和 5 列是 active
。现在,如何为该决策变量制定约束条件,例如 Number of active Days == 3
。
任何帮助将不胜感激。谢谢!!
想了想..我想我已经破解了这个...
- 为活跃天数创建一个虚拟的一维二元决策变量。 0- 非活动 1- 活动。
ActiveDays = LpVariable.dicts('activedays', Days,0,1, LpBinary)
- 创建一个非常大的虚拟常量。
M=200000
- 添加第一个约束。
prob += LpSum(m[j] for j in Days) ==3
添加第二个约束
for j in Days: prob += LpSum(vars[i][j] for i in TruckTypes) <= M*m[j]