Matlab下的整形规划(CVX)

文章目录

    • Toy Example
    • 安装Gurobi,Mosek
    • 测试
    • 参考

CVX的免费版本并不支持整形规划,所以需要安装其他的优化工具,如,Gurobi,Mosek,Cplex等。好在CVX支持调用Gurobi,Mosek等工具,在matlab中,不改变原先的CVX算法,只需要改变优化工具就行,默认SDPT3

Toy Example

从data里面找出10个数字,使之求和最小

data = 1:1:n;
cvx_begin
     variable pp(n) binary
     minimize (data*pp)
     subject to
     sum(pp)==10
 cvx_end

直接运行得到错误

Error using cvx_sdpt3>solve (line 131)
SDTP3 does not support integer variables.

安装Gurobi,Mosek

安装Gurobi,Mosek比较简单,首先到CVX官网下载带有Gurobi,Mosek的CVX版本。
如果要使用Gurobi,Mosek,需要申请三个许可证(CVX,Gurobi,Mosek)分别到相应的官网申请就可以。如果是学校里的人员,只要有教育网的邮箱可以很快就申请到,本人用了一两个小时就全部申请完了。具体可以看参考中的网址,很详细。
安装中遇到一个小问题,Gurobi安装完后就是识别不到。以下是cvx_setup中看到的信息

Gurobi unknown {cvx}\gurobi\w64
A valid CVX Professional license key was found, but not a Gurobi license key. *Both* keys are needed to use Gurobi.Saving updated preferences...done.

许可已经注册过而且提示成功。解决办法到cvx-w64\gurobi\w64目录下执行grbgetkey.exe,输入申请到的gurobi序列号,重新运行cvx_setup +CVX序列号,终于正常了

4 solvers initialized (* = default):
Gurobi 7.52 {cvx}\gurobi\w64
Mosek 8.0.0.60 {cvx}\mosek\w64
* SDPT3 4.0 {cvx}\sdpt3
SeDuMi 1.34 {cvx}\sedumi
1 solver skipped:
GLPK
Could not find a GLPK installation.
个人觉得Gurobi,Mosek有一个就行了,够用

测试

Matlab下的整形规划(CVX)_第1张图片

参考

https://blog.csdn.net/u012705410/article/details/78196927?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

你可能感兴趣的:(数据科学)