首页 > 解决方案 > Python MIP,生成器对象没有属性意义

问题描述

我正在尝试在 Python(版本 3.7.1)中使用 MIP 库。我在 Windows 10 顺便说一句。这是我的代码:

from mip import Model, xsum, minimize, BINARY, INTEGER

tau_steps = 50

p = 4
cores = 16

m = Model("TDM")    
C = [[m.add_var(var_type=INTEGER, lb = -1, ub = p * 100) for j in range(tau_steps)] for i in range(cores)]

m.objective = minimize( xsum( xsum(C[i][j] for j in range(tau_steps)) != 0 ) for i in range(cores) )

我收到以下错误:

Using Python-MIP package version 1.5.3
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    m.objective = minimize( xsum( xsum(C[i][j] for j in range(tau_steps)) != 0 ) for i in range(cores) )
  File "C:\Python\Python37-32\lib\site-packages\mip\model.py", line 1863, in minimize
    expr.sense = MINIMIZE
AttributeError: 'generator' object has no attribute 'sense'

我对 BINARY 变量做了类似的事情,它奏效了。不知何故,对于 INTEGER,它不起作用。我打开了库,但找不到变量类型(BINARY、INTEGER、CONTINOUS)的定义。有一些预编译的 cpp 库。也许它在那里,但这对我没有帮助。我检查了 MIP 的文档,但我也找不到任何相关的内容。请指教。

我正在尝试使用整数线性规划来查找给定任务集的时间表。C代表时间表。行号对应于使用的核心。列号对应于核心中的时隙。当未使用特定时隙时,该值等于零。目标是尽量减少使用的核心数量。如果 C 的一行中所有数字的总和等于 0,则意味着核心未使用。通过计算加起来不等于 0 的行数,我们知道使用了多少个内核。正是这个数字需要被最小化。这就是我试图在我发布的代码的最后一行中写的内容。

标签: pythonattributessense

解决方案


推荐阅读