在使用连续凸近似(SCA)求解优化问题时遇到了报错
Problem status : ILL_POSED
Solution status : PRIMAL_ILLPOSED_CER
并且最后给出的结果为NaN。
在CVX论坛中找到一条回答
具体链接如下:
The status is failed
因为我使用的是CVX自带的Mosek求解器,其版本为9.1。因此考虑也可能是Mosek版本太低的缘故,故重新在Mosek官网下载安装了最新版的Mosek。故在此记录一下安装过程。
Mosek安装
Mosek下载
Mosek的下载网址如下:
Mosek Download
推荐安装Default Installers,只需要选择安装目录即可完成安装。
我选择的安装目录为:D:\Mosek
License申请
Mosek的License申请很简单,大学生可使用学校的邮箱免费获取,基本上申请后几分钟内就能收到邮件。申请链接如下:
License Apply
在申请的时候要选择“Request Personal Academic License”,之后填写相关信息,并在收到的邮件中进行确认即可。
得到Mosek.lic文件后,将其放到“C:\Users\你的用户名\mosek”目录下(如果没有这个目录,新建一个就好了)。比如说你的用户名为“admin”,则存放的位置为“C:\Users\admin\mosek\mosek.lic”。
到此就完成了Mosek的安装和License的申请,重启电脑后就能够正常使用了。
Matlab设置
添加路径
在环境设置中中点击设置路径,
在“设置路径”面板中右侧点击“添加并包含子文件夹”,将如下Mosek目录添加进去(两个选择一个添加即可)
<MSKHOME>/mosek/10.1/toolbox/r2017a
<MSKHOME>/mosek/10.1/toolbox/r2017aom
其中是Mosek安装目录,本例中为"D:\Mosek"。
这两个文件夹的区别在于:
- 文件夹r2017a会重写MATLAB自带求解线性规划函数linprog 和 二次凸优化函数quadprog
- 文件夹r2017aom不会重写.Matlb自导的函数
CVX设置
首先运行
cvx_setup
运行结束后,就将Mosek新版本的Solver添加进来了,如果添加失败,请重启计算机后重试。
之后运行
cvx_solver
就能看到新安装的Mosek求解器了。
新安装的Mosek求解器Mosek_2和Mosek_3的版本号显示不准确。这是CVX的原因,并不影响实际调用。
Mosek卸载
如果以前安装了Mosek求解器,现在想卸载该版本Mosek。首先需要下载该版本的Mosek求解器的Default Installers安装文件。执行该安装文件,此时选择 Remove 就可以移除该版本的求解器了。