CVX是一个基于Matlab的凸优化建模系统。CVX将Matlab转换为建模语言,允许使用标准Matlab表达式语法指定约束和目标。
CVX工具包官方网站:http://cvxr.com/cvx/
关于CVX的介绍:http://web.cvxr.com/cvx/doc/intro.html
工具包安装网址: http://cvxr.com/cvx/doc/install.html
- 点开网址 http://cvxr.com/cvx/download 下载 .zip 或者 .tar.gz 文件
因为我的电脑是Windows系统,并且我已经安装了Matlab2013b(x64),所以我下载了cvx-w64-zip压缩包。 - 下载后对压缩包进行解压,将cvx文件夹拷贝至你习惯使用的目录下(例如,我将cvx文件夹拷贝到G:\myMATLAB tool目录下)。
- 启动Matlab,在Current Folder窗口中打开cvx文件夹,然后在Command Window中输入cvx_setup。
这样就安装成功啦!
Remark:需要设置路径Set Path(Add with Subfolders),这一步是将cvx工具箱所在文件夹添加到MATLAB工作搜索目录。
File-Set Path-Add with Subfolders
-CVX的使用
例子1.考虑以下凸优化模型:
以下代码生成并解决此模型的随机实例:
m = 20; n = 10; p = 4;
A = randn(m,n); b = randn(m,1);
C = randn(p,n); d = randn(p,1); e = rand;
cvx_begin
variable x(n)
minimize( norm( A * x - b, 2 ) )
subject to
C * x == d
norm( x, Inf ) <= e
cvx_end
输出结果:
CVX还可以通过使用特殊的GP模式支持几何编程(GP)。几何程序不是凸的,但可以通过应用某种变换来实现。在此模式下,CVX允许GP以其原始的非凸形式构建,将它们自动转换为可解的凸形,并将数值结果转换回原始问题。(几何规划教程见网址:http://stanford.edu/~boyd/papers/gp_tutorial.html
PDF见网址: http://stanford.edu/~boyd/papers/pdf/gp_tutorial.pdf )
要使用GP模式,你必须使用命令cvx_begin gp或者cvx_begin GP而不是cvx_begin。 例如,在gp / max_volume_box.m的示例库中找到的以下代码可确定受到各种面积和比率约束的最大volume box:
例子2. cvx_begin gp
variables w h d
maximize( w * h * d )
subject to
2*(hw+hd) <= Awall;
w*d <= Afloor;
alpha <= h/w >= beta;
gamma <= d/w <= delta;
cvx_end
感兴趣的同学可以好好看看教程呀!