R 中的二次约束二次规划

问题描述 投票:0回答:6

R 中是否有一个函数可以使用二次约束进行优化?

参考:http://en.wikipedia.org/wiki/Quadratically_constrained_quadratic_program

r mathematical-optimization
6个回答

2
投票

是的,有几个软件包可以解决QCQP。

CLSOCP 解决 SOCP 问题。 DWD 还解决了 SOCP 问题。 Rcsdp解决了SDP问题。

请记住

QCQP 是 SOCP 的子集,而 SOCP 又是 SDP 的子集。

网上有参考资料说明如何将 QCQP 制定为 SOCPSDP


1
投票

仅供参考。

有一个新的包 ECOSolveR 来解决 SOCP


0
投票

您可能想尝试包quadprog:解决二次规划问题的函数。

http://cran.r-project.org/web/packages/quadprog/index.html


0
投票

所有这些答案似乎忘记了一件重要的事情:使用的求解器在很大程度上取决于约束是否是凸的。如果是凸的,我们可以使用现成的 QCP / SOCP 求解器(包括 Cplex 和 Gurobi)。如果不是凸的,我们可以尝试通用的 NLP 求解器(例如IPOPT)。非凸全局求解器是另一种可能性,但大多数不能直接在 R 下使用。


0
投票

来自

optiSolve
包的 CRAN 页面:https://cran.r-project.org/web/packages/optiSolve/optiSolve.pdf

求解约束优化包括以下步骤 问题(警察):

  1. 使用以下之一定义目标 函数:
    linfun
    定义线性目标函数,
    quadfun
    定义 二次目标函数,
    ratiofun
    定义理性目标 功能。
  2. 使用以下函数定义约束:
    lincon
    定义线性等式和不等式约束,
    quadcon
    定义二次约束,
    ratiocon
    定义有理约束,
    lbcon
    定义变量的下限,
    ubcon
    定义变量的上限 变量的界限。
  3. 将目标函数和 约束一起定义优化问题:
    cop
    定义约束优化问题。
  4. 解决 优化问题:
    solvecop
    解决约束优化 问题。
  5. 检查是否 该解决方案满足所有约束:
    validate
    检查该解决方案是否 满足所有约束,并计算约束的值。

因此,二次约束二次目标要求您将

quadfun
quadcon
一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.