【问题标题】:Maximizing linear objective subject to quadratic constraints最大化受二次约束的线性物镜
【发布时间】:2014-04-13 11:41:02
【问题描述】:

我有一篇论文中的编程公式,并想给它一个解决特定问题的工具。作者将其称为线性规划 (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 员工的新手(不参加任何关于他们的课程),所以非常欢迎帮助解释我的问题答案的细节。

非常感谢。

【问题讨论】:

  • scicomp.stackexchange.com你可能会有更好的运气
  • 这个问题似乎跑题了,因为它是关于数学规划的。
  • 我为关键字添加了数学优化。

标签: math mathematical-optimization cplex nonlinear-optimization convex


【解决方案1】:

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

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

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

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

问候, 马丁

【讨论】:

  • 马丁,非常感谢您的回复。这是非常有用的。变量不是连续的,它们都是整数,而是。所以在这种情况下,我可以使用 [link] (leandro-coelho.com/linearization-product-variables) 链接使它们成为线性的吗?但是,据我了解,如果我之前收到错误,我仍然需要 NLP 求解器?所以步骤,尝试线性化公式,如果我仍然得到错误而不是使用 NLP 求解器,对吗?
  • 当您的变量是整数时,问题可以表示为混合整数线性问题,即所有约束都是线性的 - 您可以通过完整性条件“规避”二次表达式。所以它可以通过单纯形和分支和界限通过标准cplex(你不需要二次求解器)来解决。当所有产品都线性化时,您不应该收到错误消息,但可能是解决速度不令人满意,具体取决于您的问题大小。
  • Martin,产品链接的线性化提供了关于二进制变量的提示,但是我的模型中的变量是一般整数(可以是 3、4 等)。有没有办法将这些条件也线性化?
  • 重要的是,每个整数变量都以数字 n 为界(我认为否则它不起作用)。然后,您可以通过一系列二进制变量 x_i 重放每个整数变量 I,即 I = 1x_1+2x_2+ 3x_3 ... + nx_n。整数的每个乘积都是二进制的乘积。他们可以线性化相应二进制变量的每个乘积。 “爆破”使得它对于更大的问题无效/高效......
猜你喜欢
  • 2021-11-21
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多