CVX中形如(ax+b)/(cx+d)<t的有理函数约束的表示

2022-08-11 13:09:45

CVX中形如(ax+b)/(cx+d)<t的有理函数约束的表示

CVX中形如(ax+b)/(cx+d)<t的有理函数约束的表示

最近在帮助老师做仿真,因为计算量比较大,而逻辑控制比较少,所以选择了Matlab。仿真的主要问题是一个凸优化问题,Matlab有一个凸优化工具箱CVX,是我这次仿真的主要工具。

CVX的下载与安装

CVX的安装和下载在网上有很多的帖子,进入官网就可以下载。值得注意的是,在下载的时候,要着重注意里面的下载器。
红框里的4个就是CVX自带的求解器,我们在求解凸优化的时候,就是用的这4个求解器中的一个。默认情况下,CVX会选择SDPT3作为求解器。

有理函数约束的表示

首先,需要使用到MOSEK求解器。使用MOSEK求解器的之前,需要获得license许可,这个在CVX官网可以用学生邮箱申请,之后将license.dat文件放入CVX文件夹即可。具体的教程网上也有。
在cvx_begin的上面一行添加cvx_solver mosek,即可使用mosek求解器。
对于形如(ax+b)/(cx+d)<t的有理函数约束,直接写入约束,运行时是会报错
的。
因此,要对约束进行变形,变换的形式如下。
在这里插入图片描述
因此,在cvx中就要化成上图所示的样子。此外,v1/u要写作vinv_pos(u),即要把分数1/u化为*inv_pos(u),这样就可以啦。

  • 作者:southChina_Mr
  • 原文链接:https://blog.csdn.net/southChina_Mr/article/details/109602783
    更新时间:2022-08-11 13:09:45