(上文通学 Matlab cvx使用指南
1896 1920 1987 2006 Matlab CVX 使用指南 1
CVX简介 cWX是一个基于 Matlab的凸优化建模系统。CVX将 Matlab语言转 换为建模语言,允许使用标准 Matlab表达式语法指定约束和目 标 ·CVX可以用于求解LP、QP、SOCP、SDP、GP以及一些包含不可 导函数的问题 用户指南:http:/cvxr.com/cvx/doc/cvx.pdf
2 CVX简介 • CVX是一个基于Matlab的凸优化建模系统。 CVX将Matlab语言转 换为建模语言,允许使用标准Matlab表达式语法指定约束和目 标 • CVX可以用于求解LP、QP、SOCP、SDP 、GP以及一些包含不可 导函数的问题 • 用户指南:http://cvxr.com/cvx/doc/CVX.pdf
CX安装 CWX下载:http://cvxr.com/cvx/beta 将CW压缩包解压在 matlab程序所在的文件夹(eg,D: matlab2014a) 用 matlab运行文件夹中的 cVx setup. m文件 Download matrix Free solvers Commercial solvers Os 32/64 mexext Download links SDPT3 Se DuMi)( Gurobi MOSEK Standard bundles, including Gurobi and/or MOSEK 64-bit mexa64 CVX -a64. tar. gz 64-bit mexmaci64 cvx-maci6izip cvx-maci64targz Windows 32-bit mexw32cvx-w32zip Cvx-w 32, ta 64-bit mexw64 w64z11 cvx-w64. tar.gz Commercial solvers only Linux 64-bit mexa64 cvx-a64-cozip cvx-a64-co. tar. gz 64-bit mexmaci64 cvx-maci64-cozip cvx-maci64-co. tar. gz Windows 32-bit mexw32 VX-W32-co zip Cvx-w32-co. tar.gz 64-bit mexw64 cvx-w64-co zip cvx-w64-co. tar.gz
3 CVX安装 • CVX下载:http://cvxr.com/cvx/beta/ • 将CVX压缩包解压在matlab程序所在的文件夹(e.g., D:\matlab2014a) • 用matlab运行文件夹中的cvx_setup.m文件 Free solvers Commercial solvers
Commercia| solvers的使用 要将CWX与 Gurob或 MOSEK等 Commercial solvers一起使用,需要 CVX Professiona许可证密钥( SeDuM和SDPT3无需密钥) 科研人员可以通过填写申请免费获得许可证密钥 申请网址:htt:/vxr.com/cvx/academic 许可证在一年后到期,但只要科研人员没离开科研机构,即可 续 an expiring/expired license e Retrieve an existing license casting license Your full name Email address Email address (again):
4 Commercial solvers的使用 • 要将CVX与Gurobi或MOSEK等Commercial solvers一起使用,需要 CVX Professional许可证密钥(SeDuMi和SDPT3无需密钥) • 科研人员可以通过填写申请免费获得许可证密钥 • 申请网址: http://cvxr.com/cvx/academic/ • 许可证在一年后到期,但只要科研人员没离开科研机构,即可 续订
C程序示例1 避免程序运行后在命令行窗口自动输出CW结果 cvx_begin)quiet-(结果明目繁多,占屏,不易观察其他结果) it#solver-=z(i set, 1) sum(t)spara. T cvx end
5 CVX程序示例1 选择solver 定义优化变量 编写优化问题 y*exp(x/y)<=z转化为x+rel_entr(y,z)<=0 避免程序运行后在命令行窗口自动输出CVX结果 (结果明目繁多,占屏,不易观察其他结果)
CX程序示例2:求解SDP问题 使用CX的SDP模式: cvx begin改为 cvx begin sdp 在SDP模式中,等式条件与向量不等式条件的写法与普通模式相同 X≥0,X∈Rn可以用X>=0或者X= semidefinite(n)表示 X≥0.X∈Cn可以用X>=0或者X= hermitian semidefinite(n)表示 Inequality constraints involving real, square matrices are interpreted as follows: Ⅹ>= Y becomes-Y semidefinite(n) x =Y becomes X-Y == hermitian_semidefinite(n) X<= Y becomes-Ⅹ hermitian semidefinite(n)
6 CVX程序示例2:求解SDP问题 • 使用CVX的SDP模式: cvx_begin 改为 cvx_begin sdp • 在SDP模式中,等式条件与向量不等式条件的写法与普通模式相同 • 可以用X>=0 或者X==semidefinite(n)表示 • 可以用X>=0 或者X==hermitian_semidefinite(n)表示
CWX程序示例2:求解SDP问题 < cvx_begin sdp%选择SDP模式 variable x(3,3) symmetric%实数域 SDP relaxation of two-way partitioning problem % variable x(3,3) hermitian%复数域 minimize tr(wX) minimize (trace(W*X) bject to X≥0 Efor 1=1: 3 Xi= 1, i=1. X(i,i)==1 enc 半正定约束 X= semidefinite(3)%实数 %X== hermitian semi definite(2)%复数域 cvx end
7 CVX程序示例2:求解SDP问题 SDP relaxation of two-way partitioning problem 半正定约束
cVX程序的输出结果 工作区 cvx_ optval:最优值 名称▲ cvx status:求解状态,包括 Solved E cvx_cputime 田 cvx_optbnd Unbounded, Infeasible Inaccurate/solved f 田 cvx slvitr 根据 cvx status调整优化问题中的参数设置xs abc cvx_status 或者选取有效结果,比如利用下图所示代码 选取 Solved状态下的最优值 田 X f strcmp(cvx status, Solved)==1 optimal value=cvx optval end
8 CVX程序的输出结果 • cvx_optval: 最优值 • cvx_status: 求解状态, 包括 Solved, Unbounded, Infeasible, Inaccurate/Solved等 • 根据cvx_status调整优化问题中的参数设置 或者选取有效结果,比如利用下图所示代码 选取Solved状态下的最优值