如何为 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

任何帮助将不胜感激。谢谢!!

想了想..我想我已经破解了这个...

  1. 为活跃天数创建一个虚拟的一维二元决策变量。 0- 非活动 1- 活动。

ActiveDays = LpVariable.dicts('activedays', Days,0,1, LpBinary)

  1. 创建一个非常大的虚拟常量。

M=200000

  1. 添加第一个约束。

prob += LpSum(m[j] for j in Days) ==3

  1. 添加第二个约束

    for j in Days:
    
         prob += LpSum(vars[i][j] for i in TruckTypes) <= M*m[j]