Gurobi 中的二次 objective 函数
Quadratic objective function in Gurobi
我正在构建一个具有二次 objective 函数的模型。但是我在如何编码方面遇到了麻烦。
v 是系数矩阵。
这是原文objective:
x = m.addMVar(shape=n, vtype=GRB.BINARY, name="x") # binary var
m.setObjective(v @ x, GRB.MAXIMIZE)
我需要将其转换为:max [(v*x)^2]
我试过了,但它给出了一个错误:
x = m.addMVar(shape=n, vtype=GRB.BINARY, name="x") # binary var
m.setObjective(x @ v @ x, GRB.MAXIMIZE)
有人可以帮我解决这个问题吗?
谢谢!
x@v@x要求v为矩阵(2维numpy.ndarray);我的猜测是 v 是一个向量(一维 numpy.ndarray)。如果你真的是指表达式 x1^2 * v1 + ... + xn^2 * vn,那么你可以写:
m.setObjective(x @ np.diag(v) @ x, GRB.MAXIMIZE)
我正在构建一个具有二次 objective 函数的模型。但是我在如何编码方面遇到了麻烦。
v 是系数矩阵。
这是原文objective:
x = m.addMVar(shape=n, vtype=GRB.BINARY, name="x") # binary var
m.setObjective(v @ x, GRB.MAXIMIZE)
我需要将其转换为:max [(v*x)^2] 我试过了,但它给出了一个错误:
x = m.addMVar(shape=n, vtype=GRB.BINARY, name="x") # binary var
m.setObjective(x @ v @ x, GRB.MAXIMIZE)
有人可以帮我解决这个问题吗? 谢谢!
x@v@x要求v为矩阵(2维numpy.ndarray);我的猜测是 v 是一个向量(一维 numpy.ndarray)。如果你真的是指表达式 x1^2 * v1 + ... + xn^2 * vn,那么你可以写:
m.setObjective(x @ np.diag(v) @ x, GRB.MAXIMIZE)