我有一篇论文编程,希望给它一个解决特定问题的工具。作者称它为线性编程(LP)实例,但我不确定。 配方有点如下:
max x1+x2+x3...
s.t.
x1.x3+x4.x5 <= 10
x2.x5+x3.x7+x1.x9 <=10
...
我尝试通过cplexqcp
函数对其进行编程(由于二次约束,但约束不包括任何x_i^2
变量)。但是我收到了CPLEX Error 5002: Q in %s is not positive semi-definite error
。这是非凸线约束的非线性规划的实例吗?我可以使用CPLEX
解决此问题或使用NLP
工具吗?我是LP/NLP
工作人员的新手(不接受任何关于他们的课程),所以非常欢迎帮助解释我的问题答案的详细信息。
非常感谢。
答案 0 :(得分:1)
您发布的问题需要有关变量x1,x2和x3的域的一些信息。
如果它们是连续的,则没有办法将您的问题表达为线性程序(LP),因为x1 * x2的表面只是非线性的。
如果至少有一个产品变量是二进制(整数),那么产品可以线性化(因此,如果你有一个混合整数程序),如here中所述 - 因为上述产品的“边界”是线性的。
Cplex基本上可以解决一些二次问题。根据您的错误消息判断,您的问题不属于那里。因此,为了解决这个问题,您可能需要坚持使用通用的NLP求解器。可以找到解算器的示例列表here,所有这些都可以由软件AMPL触发,或者可以单独使用。我不是这里的专家,所以我不能给出建议哪个求解器应该是你的问题的首选。
此致 马丁