安装mosek并配置到matlab
1、之前一直使用sdpt3求解半定规划问题,写完模型后想跑大一点规模数据,当约束增加到14000+条的时候,调用sdpt3求解会出下下面报错:
在网上查半天发现都是提问类似问题没有解决,看了一下sdpt3的代码,sdpt3在求解前会检查约束是否是线性无关。个人理解线性无关或者线性相关应该不影响求解才对,想了想可能是求解前年代久远的问题,于是考虑转用mosek求解。
2、mosek下载,在官网下载就好。mosek官网下载。选择对应系统的默认安装包就好。
3、安装及申请license。
下载完成后,一直下一步傻瓜安装就好了。然后打开matlab将安装路径\toolbox,添加并包含子文件夹。
在命令行输入setenv(‘PATH’, [getenv(‘PATH’) ‘;C:\安装路径\Mosek\9.2\tools\platform\win64x86\bin’]);添加路径,不然会报一个找不到dll文件的错误。(MEX 文件 ‘D:\Mosek\toolbox\r2018a\mosekopt.mexw64’ 无效: 缺少依赖共享库:)。这里应该也能在系统路径添加,不过这个方便点。
最后添加license就可以用了。在校学生可以用自己学校的邮箱申请。选择Academic 类型,填写姓名、学校邮箱及学校后即可申请。license申请
申请成功后会发一个lic文件到你邮箱里。下载然后复制到C:\Users\你的用户名\mosek 下就好了。这里要注意网上很多教程让你放到安装路径下,其实是不对的,一定要在这个路径下,如果用户里面没有mosek文件夹就自己建一个就好。
输入mosekdiag显示下列信息,就表示完全安装配置好了。
4、再用mosek跑我的模型,是能跑的,求解细节太多了就不放了。但确实是有些无用的约束,这应该就是使用sdpt3时报错的原因,使用mosek求解时,他会消除(释放?)这些约束。感觉比sdpt3人性化很多。而且求解信息给出的比sdpt3多一些,感觉会更好的。