CPLEX说平方和不是凸的

时间:2019-06-16 13:19:59

标签: cplex quadratic-programming convex

我想用目标解决最大化问题

f(x,y,z)= 0.5 *(x ^ 2 + y ^ 2 + z ^ 2)

在[0,1]中带有x,y,z。

但是,当使用下面的代码将此问题提交给CPLEX时,它会提示错误,指出我的目标是非凸的。

我还应该说我检查了.lp文件,以确保我正确地指出了问题。

import cplex


p = cplex.Cplex()
p.objective.set_sense(p.objective.sense.maximize)

p.variables.add(ub=[1, 1, 1],
                names=["x", "y", "z"])


qmat = [[[0], [1.]],
        [[1], [1.]],
        [[2], [1.]]]
p.objective.set_quadratic(qmat)

p.write("qpex.lp")

p.solve()

我不明白为什么,因为我的函数f肯定是凸的(Hessian是单位矩阵)。 我在做什么错了?

1 个答案:

答案 0 :(得分:2)

请注意,当您指定目标

p.objective.set_sense(p.objective.sense.maximize)

您已将其指定为最大化问题。

要使其成为凸优化问题,您应该解决一个最小化问题。

最小化凸函数是一个凸优化问题,最大化一个凸函数通常不是凸优化问题。