math - 最大化受二次约束的线性目标

我有一篇论文的编程公式,想给它一个解决特定问题的工具。作者将其描述为线性规划 (LP) 实例,但我不确定。 公式有点像如下:

max x1+x2+x3...

s.t.

x1.x3+x4.x5 <= 10

x2.x5+x3.x7+x1.x9 <=10

...

我尝试通过 cplexqcp 函数对其进行编程(由于二次约束,但约束不包括任何 x_i^2 变量)。但是我收到 CPLEX 错误 5002:%s 中的 Q 不是半正定错误。这是具有非凸约束的非线性规划的实例吗?我可以使用 CPLEX 或使用 NLP 工具解决它吗?我是 LP/NLP 工作人员的新手(没有参加任何有关他们的类(class)),所以非常欢迎帮助解释我的问题答案的详细信息。

非常感谢。

最佳答案

您发布的问题需要一些关于变量 x1、x2 和 x3 的域的信息。

如果它们是连续的,则无法将您的问题表达为线性规划 (LP),因为 x1*x2 的曲面只是非线性的。

如果至少一个乘积变量是二进制(整数),则乘积可以线性化(因此如果您有混合整数程序),如 here 中所述- 因为上述产品的“边界”是线性的。

Cplex基本上可以解决一些类的二次问题。从您的错误消息来看,您的问题不属于那里。因此,为了解决这个问题,您可能需要坚持使用通用 NLP 求解器。可以找到求解器的示例列表 here ,所有这些都可以由软件 AMPL 触发,也可以单独使用。我不是这方面的专家,所以我无法就您的问题首选哪种求解器给出建议。

问候, 马丁

https://stackoverflow.com/questions/22298991/

相关文章:

makefile - 了解 kbuild 构建过程的工作原理

wpf - 在不破坏 ControlTemplate 的情况下将 setter 添加到 Contro

sql - 有没有办法删除已经绑定(bind)到存储过程的用户定义表类型?

django - @login_required 和 is_authenticated() -- 在

qt - 如何在 QMainWindow 中绘画?

diff - 如何通过输出获取差异文件名

objective-c - NSData 指针与引用

localization - 在运行时更改 WIX 安装程序语言

database-design - Toad ERD 到 Visio ER 图的转换

google-chrome-extension - 我可以在我的网站上有一个 chrome 扩展的安