1

运行此代码时

import numpy as np
import xpress as xp

z = np.array([xp.var () for i in range (200)]).reshape (4,5,10)
t = np.array([xp.var (vartype = xp.binary) for i in range (200)]).reshape (4,5,10)
p = xp.problem()
p.addVariable(z,t)
p.addConstraint(z <= 1 + t)

我收到以下错误

Invalid constraint
---------------------------------------------------------------------------
ModelError                                Traceback (most recent call last)
      3 p = xp.problem()
      4 p.addVariable(z,t)
----> 5 p.addConstraint(z <= 1 + t)
      6 p.addConstraint(xp.Sum(z[i][j][k] for i in range (4) for j in range (5)) <= 4 for k in range (10))
ModelError: Invalid constraint

任何帮助将不胜感激,因为我不知道如何解决它!

4

1 回答 1

1

np 数组的dtype必须显式设置为 xp.npvar。这在这里说明:

NumPy 数组的属性 dtype 必须等于 xpress.npvar(此处缩写为 xp.npvar),以便使用矩阵/向量形式的比较(<=、=、>=)、算术(+、-、* , /, **) 和逻辑 (&, |) 运算符。

如果您不将类型设置为 npvar,则会使用这些运算符的错误重载,并且z <= 1 - t将只是一个布尔数组。

这是创建数组的正确方法:

z = np.array([xp.var () for i in range (200)], dtype=xp.npvar).reshape (4,5,10)
t = np.array([xp.var (vartype = xp.binary) for i in range (200)], dtype=xp.npvar).reshape (4,5,10)
于 2021-02-09T05:44:36.757 回答