您的位置:首页 > 其它

CVX基础

2015-10-24 15:09 274 查看
1 cvx_begin和cvx_end

所有的cvx建模必须以cvx_begin开始以cvx_end结束,所有的变量声明,目标函数和约束必须位于这两者之间,cvx_begin命令可以包含多个修饰词。

cvx_begin quiet 禁止求解过程中的屏幕输出

cvx_begin sdp 调用半正定规划

cvx_begin gp 调用几何规划

修饰词可以组合使用

2 变量

所有的变量必须在使用前以variable(或者variables)命令申明,variable命令包含变量名,可选的纬度列表,一个或者多个关键词提供有关变量内容和结构的额外信息。

variable X %标量

variable Y(20,10) %矩阵

variable Z(5,5,5) %多维矩阵

variable w(50)complex %复数向量

variable x(10)nonnegative %非负

variable Z(5,5) semidefinite %半正定(对称正定矩阵)

variable Q(5,5) complexsemidefinite %厄密共轭矩阵

variable p(10) integer %整数变量

variable q binary %二进制变量

variable Y(50,50) symmetric %对称矩阵

variable Z(100,100) hermitiantoeplitz %厄密共轭常对角矩阵

目前支持的结构关键词还有:

banded(lb,ub) diagonal hankel hermitian

skew_symmetric symmetric toeplitz tridiagonal

lower_bidiagonal lower_hessenberg lower_triangular

upper_bidiagonal upper_hankel upper_hessenberg upper_triangular

指定矩阵关键词同样可以用于多维矩阵,此时将定义多个申明的结构

variable R(10,10,8) hermitian semidefinite%定义8个厄密共轭半正定矩阵

variables 可以同时定义多个变量,但是不能定义复数,整数,结构变量:

variables x1 x2 x3 y1(10) y2(10,10,10);

3 目标函数

申明目标函数要求使用minimize或maximize函数,注意调用minimize的目标函数必须是凸的,调用maximize的目标函数必须是凹的。

minimize( norm( x, 1 ) )

maximize( geo_mean( x ) )

如果不指定目标函数,问题将被解释成可行性问题,如果可行性点找到,cvx_optval将设定为0,否则将为+Inf。

4 约束条件

CVX支持下列约束类型

相等==,等式左右两边是仿射表达式

小于<=不等式约束,左边表达式是凸的,右边表达式是凹的。

大于>=约束,左边表达式是凹的,右边表达式是凸的。

可以使用链式不等式:如l <= x <= u.

同时不建议使用<</SPAN>或者>

5 函数

许多matlab函数如sum,trace,diag,sqrt,max和min均支持CVX

还有一些CVX新函数,可以在Reference guide里面找到

此外,可以自己定义新函数,见Adding new functions to the atomlibrary

6 设定集合

可以用==或者来设定集合



X semidefinite(n);

A*X*A’-X B*semidefinite(n)*B’;

cvx_begin

variables x(n) y;

minimize( y );

subject to

{ A*x-b, y } lorentz(m);

cvx_end

7 对偶变量



8赋值和表达式定义

使用=进行赋值操作

使用ex_pression命令进行定义表达式

variable u(9);

express_ion x(10);

x(1) = 1;

for k = 1 : 9,

x(k+1) = sqrt( x(k) + u(k) );

end

variables x y

expre_ssion z

z = 2 * x - y;

square( z ) <= 3;

quad_over_lin( x, z ) <= 1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: