目 录CONTENT

文章目录

Matlab CVX与Mosek的安装与配置

QvQ
QvQ
2024-04-11 / 1 评论 / 3 点赞 / 208 阅读 / 0 字
温馨提示:
本文最后更新于2024-10-08,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

引言

CVX基于Matlab的建模系统,用于处理凸优化问题。 Matlab CVX 凸优化工具包全称:CVX: Matlab Software for Disciplined Convex Programming。

CVX中自带的求解器版本比较滞后,因此下载安装最新版的Mosek求解器,提高求解效率,便随手记录在安装过程中的具体步骤。

CVX工具包

注意到这里的solvers表示求解器,cvx工具包中包含了免费求解器之外,还包含了商业求解器。其中不同求解器求解凸问题的类型(LP、QP、SOCP、SDP、GP、整数)不一样,而且在计算法复杂度与计算结果精度等会存在区别。

此版本的 CVX 支持的求解器,每个求解器具有不同的功能:

求解器

LP

QP

SOCP

SDP

GP

整数

SeDuMi

Y

Y

Y

Y

E

N

SDPT3

Y

Y

Y

Y

E

N

Gurobi

Y

Y

Y

N

N

E

Mosek

Y

Y

Y

Y

Y

Y

GLPK

Y

N

N

N

N

Y

(Y = 是,N = 否,E = 实验)

SeDuMi 和 SDPT3 包含在标准 CVX 发行版中,因此无需下载额外的求解器即可开始使用 CVX。CVX与Gurobi和Mosek的开发人员签订了合同安排,允许将其二进制文件与CVX一起发布,但使用这些求解器需要CVX 专业许可证。由于许可证差异,无法为CVX提供GLPK 。然而如果您在使用一个求解器时遇到困难,请尝试另一个求解器。在 CVX 可以生成的每个模型上,没有一个求解器的性能比其他求解器更好,包括收费的求解器。

后文会提供相关的Mosek求解器的安装与配置(需申请许可证)

这里并不对求解器的细节进行展开,感兴趣的可以去官网查看。

CVX工具包的在Matlab中安装与配置

CVX工具包的下载地址:

http://cvxr.com/cvx/download/

目前官网适配了window,linux,mac平台的工具包,这里主要是使用window平台(64位),因此如下图所示,我们下载对应的cvx_w64.zip

使用Matlab2021b进行安装CVX工具(可以是其他版本的Matlab)

这里解压缩包cvx_w64.zip相关的安装目录

例如:D:\Program Files\MATLAB\R2021b\bin\cvx

在Matlab中打开对应的安装目录

注:cvx_license.dat为Mosek许可证文件(旧版失效,忽略)
在Matlab命令行中,执行脚本

cvx_setup

安装成果后会有如下提示

到此,我们就可以使用CVX工具了,其中包含了SDPT3与SeDuMi求解器

Mosek求解器的安装与配置

Mosek安装包下载安装

Mosek的下载地址参考:

https://docs.mosek.com/latest/install/installation.html

使用Default Installers安装方式更简单,不需要配置Path环境变量,直接执行可执行文件选择好按照位置就行。

例如: D:Program Files\MATLAB

Mosek工具在Matlab中配置

进入官网的序列号页面:

https://www.mosek.com/products/academic-licenses

申请获得Mosek的license后会在收到一封包含附件mosek.lic的邮件,在用户主目录下创建名为mosek的文件夹,随后将邮件中附件mosek.lic下载到刚刚新建的mosek文件夹中。

例如:用户名为XXXX,则license放置在 C:\Users\XXXX\mosek\mosek.lic


MATLAB然后,配置MATLAB路径,参考文档
https://docs.mosek.com/latest/toolbox/install-interface.html

如下图所示 打开 设置路径 面板

在设置路径面板中右侧点击添加并包含子文件夹按钮,将如下目录之一或者两个添加进去

<MSKHOME>/mosek/10.0/toolbox/r2017a

<MSKHOME>/mosek/10.0/toolbox/r2017aom

其中<MSKHOME>是Mosek安装目录,本例中为 D:Program Files\MATLAB

上面两个文件夹的区别在于文件夹r2017a会重写MATLAB自带求解线性规划函数linprog 和 二次凸优化函数quadprog,而文件夹r2017aom不会重写。

在Matlab中打开对应的CVX安装目录

本例中路径为:D:\Program Files\MATLAB\R2021b\bin\cvx

先执行脚本

cvx_startup 

设置 CVX添加到MATLAB的路径中

然后执行

cvx_setup 

如果出现如下图所示,中的 x solvers initialized (* = default): 中包含刚刚指定Mosek目录的求解器说明安装成功了. 需要注意 新安装的Mosek求解器Mosek_2和Mosek_3的版本号显示不准确,这是CVX的原因,不影响实际调用。

然后就可以使用CVX工具与Mosek求解器。

卸载与更新

如果以前安装了Mosek求解器,现在想更新一下Mosek求解器的版本,需要先卸载老版本Mosek。

卸载方法是: 先下载老版本的Mosek求解器的Default Installers安装文件,下载完成后执行该安装文件,此时选择 Remove 就可以移除老版本的求解器,然后安装新版本的Mosek求解器。

参考 Mosek安装与配置 MATLAB路径部分,此时除了将新的路径添加上,还要将老的路径移除。

最后进入到CVX安装目录 执行脚本

cvx_setup

附页

最后献上Boyd大佬的凸优化工具与教程。
大佬的个人网页(课程、习题、资料、代码等):
https://web.stanford.edu/~boyd/cvxbook/

B站上也有大佬的翻译公开课视频。

3

评论区