matlab中的凸优化工具箱 ——cvx简介
这学期选了王书宁的凸优化这门课,教材也是用的祂翻译的教材,平时作业都是用matlab编写。最近无意发现原来还有CVX这样专门的工具箱,想的这下能节省不少时间,下面介绍一下cvx的安装和用法。
matlab本身是没有cvx的工具箱,需要到[cvx主页],(http://cvxr.com/cvx/)上下载,菜单上有个download,进入后选择适合你的版本下载。我用的是windows系统,matlab 版本是64位,所以下载最后一个,压缩包大约20M,解压后大约50M,加压后楼主为了方便就直接放在了\matlab\bin目录下,你可以选择其它目录。
将matlab命令窗口目录定位到你安装的文件夹下,这主要是为了下一步可以运行cvx_setup文件。运行后会出现多行英文,你可以看看有没有error字眼出现。
No errors! cvx has been successfully installed.
NOTE: The MATLAB path has been updated to point to the cvx distribution.
In order to use cvx regularly, you must save this new path definition.
因为我就放在了bin目录下,所以不需要再file\setpath菜单下将文件目录加进去。如果你放在其它文件,最好加一下。然后在在file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下,就可以了
我们可以用cvx页面上的实例进行验证。
新建一个M文件,将灰色区域的代码直接复制到m文件中,保存运行,(注意m文件系统可能会提示你进行更改,请不要更改)
保存后直接运行,
Calling SDPT3 4.0: 56 variables, 22 equality constraints
For improved efficiency, SDPT3 is solving the dual problem.
num. of constraints = 22
dim. of socp var = 41, num. of socp blk = 11
dim. of linear var = 11
dim. of free var = 4 * convert ublk to lblk
SDPT3: Infeasible path-following algorithms
version predcorr gam expon scale_data
NT 1 0.000 1 0
it pstep dstep pinfeas dinfeas gap prim-obj dual-obj cputime
0|0.000|0.000|1.4e+01|9.1e+00|3.2e+03| 1.321448e+01 0.000000e+00| 0:0:00| chol 1 1
1|0.916|0.458|1.2e+00|5.0e+00|7.7e+02| 2.483994e+01 -4.420328e+00| 0:0:00| chol 1 1
2|1.000|0.968|2.1e-05|1.7e-01|4
……
……
最后会给出最优值,出现以上这说明配置成功了,你可能会发现重复运行结果不一样,看一下代码就知道,其中的参数均是随机产生,所以有区别,至此安装就完成了。
如果要详细学习此工具箱,可以下载他的pdf说明文档,99页。不过建议初学者先用自己的语言实现,等熟练后再使用此库。就像虽然有计算器,但是我们还是要先熟练加减乘除一样。
祝你成功!