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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...