CVX基础

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;

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值