Gurobi Python: Как мне сделать поэлементное умножение на MVar? - PullRequest
0 голосов
/ 23 января 2020

Как выполнить поэлементное умножение в ограничении для программы c с квадратами?

У меня есть следующая реализация

import gurobipy as gp

m = gp.model("model")
x = m.addMVar(shape=(10), name="x")
y = m.addMVar(shape=(5), name="y")
A = np.random.rand(5, 10)

m.addConstr(A @ x - (y*y) <= A[:,0], name="const")

m.setObjective(x.sum() - (y*y).sum()), GRB.MAXIMIZE)

(y*y) не работает как он делает в numpy для поэлементного умножения и выдает следующую ошибку:

Traceback (most recent call last):
  File "/home/usr/test.py", line 21, in solve_QP_gurobi
    m.addConstr(A @ x - (y*y) <= A[:,0], name="const")
  File "mvar.pxi", line 76, in gurobipy.MVar.__mul__
  File "mvar.pxi", line 152, in gurobipy.MVar.scalar_mult
TypeError: float() argument must be a string or a number, not 'MVar'

1 Ответ

0 голосов
/ 14 февраля 2020

Поскольку ваше "y" является скаляром, вы можете сделать y @ y

...