引言
CVX基于Matlab的建模系统,用于处理凸优化问题。 Matlab CVX 凸优化工具包全称:CVX: Matlab Software for Disciplined Convex Programming。
CVX中自带的求解器版本比较滞后,因此下载安装最新版的Mosek求解器,提高求解效率,便随手记录在安装过程中的具体步骤。
CVX工具包
注意到这里的solvers表示求解器,cvx工具包中包含了免费求解器之外,还包含了商业求解器。其中不同求解器求解凸问题的类型(LP、QP、SOCP、SDP、GP、整数)不一样,而且在计算法复杂度与计算结果精度等会存在区别。
此版本的 CVX 支持的求解器,每个求解器具有不同的功能:
(Y = 是,N = 否,E = 实验)
SeDuMi 和 SDPT3 包含在标准 CVX 发行版中,因此无需下载额外的求解器即可开始使用 CVX。CVX与Gurobi和Mosek的开发人员签订了合同安排,允许将其二进制文件与CVX一起发布,但使用这些求解器需要CVX 专业许可证。由于许可证差异,无法为CVX提供GLPK 。然而如果您在使用一个求解器时遇到困难,请尝试另一个求解器。在 CVX 可以生成的每个模型上,没有一个求解器的性能比其他求解器更好,包括收费的求解器。
后文会提供相关的Mosek求解器的安装与配置(需申请许可证)
这里并不对求解器的细节进行展开,感兴趣的可以去官网查看。
CVX工具包的在Matlab中安装与配置
CVX工具包的下载地址:
目前官网适配了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站上也有大佬的翻译公开课视频。
评论区