支持的求解器
此版本的 CVX 支持四个求解器,每个求解器具有不同的功能:
求解器 | LP | QP | SOCP | SDP | GP | 整数 |
---|---|---|---|---|---|---|
SeDuMi | Y | Y | Y | Y | E | N |
SDPT3 | Y | Y | Y | Y | E | N |
Gurobi | Y | Y | Y | N | N | Y |
MOSEK | Y | Y | Y | Y | Y | Y |
GLPK | Y | N | N | N | N | Y |
(Y = 是,N = 否,E = 实验)
每个求解器具有不同的功能和不同的性能级别。例如,SeDuMi ,SDPT3 和MOSEK支持CVX本身支持的所有连续(非整数)模型,而Gurobi更受限制,因为它不支持半定约束;GLPK进一步受到限制。另一方面,Gurobi,GLPK和MOSEK支持整数约束,而SeDuMi和SDPT3不支持。
SeDuMi 和 SDPT3 包含在标准 CVX 发行版中,因此您无需下载额外的求解器即可开始使用 CVX。我们还与Gurobi和MOSEK的开发人员签订了合同安排,允许我们将其二进制文件与CVX一起发布,但使用这些求解器需要CVX 专业许可证。由于许可证差异,我们无法为CVX提供GLPK 。然而
如果您在使用一个求解器时遇到困难,请尝试另一个求解器。在 CVX 可以生成的每个模型上,没有一个求解器的性能比其他求解器更好,包括商业求解器。也就是说,如果您遇到一个求解器可以很好地处理而另一个求解器无法处理的问题,请向我们发送错误报告(请参阅支持),我们将结果转发给求解器的作者。
我们在本用户指南中创建了将Gurobi和MOSEK与CVX一起使用的特殊部分:
- Gurobi: Using Gurobi with CVX
- Mosek: Using MOSEK with CVX
对 GLPK 的支持应被视为实验性的。
选择求解器
当前默认求解器为 SDPT3。我们发现SeDuMi对于大多数问题来说都更快,但不幸的是不那么可靠。但是,没有一个求解器是完美的,您可能会发现对于您的应用程序另一个求解器更受欢迎。
要查看当前选择的求解器,只需键入
cvx_solver
要更改当前求解器,只需在cvx_solver后面加上您所选择的求解器的名称。例如,要选择 SeDuMi,请键入
cvx_solver sedumi
cvx_solver命令不区分大小写,因此cvx_solver SeDuMi也可以正常工作。