简体   繁体   English

Gurobi中的二次目标函数

[英]Quadratic objective function in Gurobi

I am building a model with a quadratic objective function.我正在建立一个具有二次目标函数的模型。 But I am having trouble on how to code it.但是我在如何编码时遇到了麻烦。

v is a matrix of coefficients. v 是一个系数矩阵。

This is the original objective:这是最初的目标:

 x = m.addMVar(shape=n, vtype=GRB.BINARY, name="x")  # binary var
 m.setObjective(v @ x, GRB.MAXIMIZE)

And I need to transform it in : max [(v*x)^2] I tried this, but it gives an error:我需要将其转换为: max [(v*x)^2] 我试过这个,但它给出了一个错误:

 x = m.addMVar(shape=n, vtype=GRB.BINARY, name="x")  # binary var
 m.setObjective(x @ v @ x, GRB.MAXIMIZE)

Could someone help me with this?有人可以帮我解决这个问题吗? Thank you!谢谢!

x @ v @ x requires v to be a matrix (2-dimensional numpy.ndarray); x@v@x 要求 v 为矩阵(二维 numpy.ndarray); my guess is that v is a vector (1-dimensional numpy.ndarray).我的猜测是 v 是一个向量(一维 numpy.ndarray)。 If you really mean the expression x1^2 * v1 + ... + xn^2 * vn, then you can write:如果你的意思是表达式 x1^2 * v1 + ... + xn^2 * vn,那么你可以写成:

m.setObjective(x @ np.diag(v) @ x, GRB.MAXIMIZE)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM