R 中是否有一个函数可以使用二次约束进行优化?
参考:http://en.wikipedia.org/wiki/Quadratically_constrained_quadratic_program
仅供参考。
有一个新的包 ECOSolveR 来解决 SOCP
您可能想尝试包quadprog:解决二次规划问题的函数。
所有这些答案似乎忘记了一件重要的事情:使用的求解器在很大程度上取决于约束是否是凸的。如果是凸的,我们可以使用现成的 QCP / SOCP 求解器(包括 Cplex 和 Gurobi)。如果不是凸的,我们可以尝试通用的 NLP 求解器(例如IPOPT)。非凸全局求解器是另一种可能性,但大多数不能直接在 R 下使用。
来自
optiSolve
包的 CRAN 页面:https://cran.r-project.org/web/packages/optiSolve/optiSolve.pdf
求解约束优化包括以下步骤 问题(警察):
- 使用以下之一定义目标 函数:
定义线性目标函数,linfun
定义 二次目标函数,quadfun
定义理性目标 功能。ratiofun
- 使用以下函数定义约束:
定义线性等式和不等式约束,lincon
定义二次约束,quadcon
定义有理约束,ratiocon
定义变量的下限,lbcon
定义变量的上限 变量的界限。ubcon
- 将目标函数和 约束一起定义优化问题:
定义约束优化问题。cop
- 解决 优化问题:
解决约束优化 问题。solvecop
- 检查是否 该解决方案满足所有约束:
检查该解决方案是否 满足所有约束,并计算约束的值。validate
因此,二次约束二次目标要求您将
quadfun
与 quadcon
一起使用。