CVX基础知识

CVX基础知识

翻译自CVX官网http://web.cvxr.com/cvx/doc/basics.html

一、 cvx_begin和cvx_end

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

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

cvx_begin sdp 调用半正定规划

cvx_begin gp 调用几何规划

必要时,修饰词可以组合使用。如:
cvx_begin sdp quiet 调用半正定规划并禁止屏幕输出

二、 变量

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

变量可以是实/复标量、向量、矩阵或者n维数组。例如:
variable X %标量

variable Y(20,10) %20*10 矩阵

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

变量申明也可以包括一个或者多个关键字以变量不同的结构或者是类型。例如,申明一个复数变量,采用关键字complex
variable w(50) complex %复数向量

非负变量和对称/Hermitian半正定(PSD)矩阵分别用nonnegative和semidefinite关键字申明:
variable x(10) nonnegative %非负向量

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

variable Q(5,5) complex semidefinite %复Hermitian PSD矩阵

对于MIDCPs而言,integer和binary分别是申明整数和二进制变量的关键字:
variable p(10) integer %整数变量

variable q binary %二进制变量

有一类关键字可以帮助变量构建矩阵结构,例如:
variable Y(50,50) symmetric %对称矩阵

variable Z(100,100) hermitian toeplitz %Hermitian toeplitz矩阵(hermitian关键字也意味着矩阵是复的)

目前支持的结构关键词还有:
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

矩阵特有的关键字也可以应用于n维数组:数组的每个二维“切片”都基于给定的结构。例如,声明

variable R(10,10,8) hermitian semidefinite%定义8个10*10的复hermitian半正定矩阵,存放在R的二维切片中。

尽管variable语句可能很灵活,但它只能用于声明单个变量,如果有很多变量需要声明,这可能会很不方便。因此,提供了variables语句,它允许你声明多个变量:

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

注意:命令variables的一个限制是它不能声明复数、整数或结构化的变量。这些变量必须使用variable命令一次声明一个。

三、目标函数

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

minimize( norm( x, 1 ) )

maximize( geo_mean( x ) )

在CVX规范中最多可以声明一个目标函数,而且它必须有一个标量值。

如果没有指定目标函数,则将问题解释为可行性问题,这与将目标函数集为零的情况下进行最小化操作是相同的。在本例中,如果找到可行点,cvx_optval为0;如果约束不可行,则为+Inf。

四、 约束条件

CVX支持下列约束类型:

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

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

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

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

5 函数

基本的CVX函数库包括各种凸函数、凹函数和仿射函数,它们接受CVX变量或表达式作为参数。许多常见的Matlab函数,如sum, trace, diag, sqrt, max, and min,根据需要已经重新实现支持CVX;其他一些是Matlab中没有的新函数。还有一些CVX新函数,可以在Reference guide里面找到。

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值