最近毕设工作要用到matpower,然而老师的matpower4.1老是装不上,然后还被骂能力不行(哭唧唧),又不想直接更换matlab版本(当时装matlab花费了很多精力,不想重装)
自力更生,劳资自己搞!
一、安装部分
(一)遇到的错误集:(注意是“错误”,主要讲基本操作和方法,已经有了解的可以跳过)
1.方法:
- 将matpowerX.X(某版本的matpower解压后文件夹)放在matlab安装目录下bin或者toolbox文件夹内,然后在matlab软件中设置路径
“设置路径”看得见吧?-matlab-2017b
- 将matpower及其子文件路径统统加进去(“添加并包含子文件夹”,然后选中matpowerX.X(某版本的matpower解压后文件夹))
matlab-2017b
- matlab路径更改为matpowerX.X文件夹下
图1.3
点击
然后找到matpowerX.X文件夹并且点进去,然后点“选择文件夹”最终matlab路径
图1.4
如图1.4“X.X(图中7.1)“后面有一个三角形就算点进去了,也可以参考图1.3
- 命令窗口中输入代码install_matpower
选择3然后一路默认下去
2. 结果:
再次使用test_matpower命令总是会报错,总之运行不完,没有出现如下图所示结果
虽然网上表示中途报错也不影响使用原帖链接如下:
matpower安装到MATLAB下遇到的问题_matpower吧_百度贴吧tieba.baidu.com/p/5057353469?red_tag=0702647918编辑
但是我不放心,故摸索出了最后的解决方案
(二)最终无报错解决方案
1.依据和猜想:
matpower 安装总是出错,求帮助!!!bbs.elecfans.com/jishu_1658738_1_1.html编辑
是此贴下面的评论(话说我是没读出来文档里的这个意思啦(学渣一枚))
于是有了尝试:
2. 会出现 OSQP Error!错误 但是能跑完test_matpower命令 的不完全方案:
- 不要将matpowerX.X文件夹放入matlab安装目录当中!
也就是前文错误方法中的第一步改为“将matpowerX.X文件夹放入matlab安装文件夹的同级目录或者更上层的目录而不是放进matlab安装文件夹中”
比如我的matlab安装在“zhijieanzhuang”文件夹下面,那么matpowerX.X文件夹就不能放在“zhijieanzhuang”文件夹下,而应该放在包括了“zhijieanzhuang”文件夹的“2017b”文件夹下面,如下图咯
其他步骤同前文(添加文件夹及其子文件夹-matlab路径进入matpowerX.X文件夹-install_matpower(注意选3然后一路默认)-test_matpower)
结果就是中途报错但是能跑完出现
3.完全解决方案如下(解决OSQP错误并且能跑完):
在保证matpowerX.X文件夹不在matlab安装目录下的前提下,在添加matpower路径一步中
- 仅仅添加matpowerX.X文件夹进入路径
- 并且在matlab路径进入matpowerX.X文件夹以保证能运行install_matpower命令即可
也就是仅仅只有前文的步骤三不变
- (再写一遍步骤三)在保证matlab正确工作路径的前提下
命令行窗口输入install_matpower会出现:
这里我已经选择了3
选择3,enter确认,然后一路enter(默认N)下去直到
问你要不要运行test_matpower,不想再输一次命令就直接选Y
或者上图中你也选N然后单独再运行test_matpower,最后就没有OSQP错误报错并且能跑完了
不知道能不能百分百解决大家的问题,但是我反正是这样解决了我的问题,所以
求个赞!
不过分吧?
二、更新关于
You have $MATPOWER/t/t_loadcase in your path. In general your path should
not include sub-directories of $MATPOWER/t. While harmless, it does prevent this
test from verifying the ability to load m-file cases that are outside your path.
> In t_loadcase (line 561)
In t_run_tests (line 61)
In test_matpower (line 173)
解决错误的方法:(这是个外网)
翻译如下:
您不必复制任何子目录。
只需仔细按照安装说明进行操作即可。
看来您不仅已将Matlab路径添加到说明中指示的目录,而且还添加了它们的子目录。
在Matlab中,单击“设置路径”按钮,选择安装说明中未明确提及的所有MATPOWER子目录,然后按“删除”。
说白了就是删除不必要的matpower路径,比如本来你安装在了a目录下,结果你的路径里面还有b/matpower/的字样。
三、更新matlab2023a的matpower7.1安装问题
本来我以为matpower安装的话题应该就此结束了, 万万没想到啊: matlab升级到2023过后, 居然改了Solver, 而且改法十分粗糙
图1.白话就是只要调用的时候使用X0参数我就直接报错
直接报错一时爽, matpower火葬场
如果你使用matpower7.1和matlab2023a, 就会发现在test_matpower的时候有个错误
这是评论区读者们反馈给我的, 本来我都不打算再更了(因为2017b版本没啥问题), 奈何这个问题网上似乎都没有人解决, 或者有人解决了但是没有发出来, 我又很好奇这个问题到底是怎么回事, 于是就顺腾摸瓜(评论区有读者说他使用的是matlab2023a)下个2023版本的看看到底是个什么问题(其实就是我等不及了,他反馈太慢了,我还不如动手做做看)
(一)首先是自行摸索的解决方案
1.修改mp-opt-model源文件,但是test_matpower后会有警告
警告如图
本来想直接对linprog.m下手的(想直接注释掉图1中的代码), 但是这个在toolbox里面, 是被保护的, 我改不了
所以只好从调用方入手
1.1解决t_qps_master错误
- 找到qps_ot.m(别问为啥是这个文件,我懒得写)
- 路径:
自己总结出里面的相对路径然后找或者直接搜文件
- 修改:
行数我也截进去了,或者你直接搜linprog
- 去掉linprog里面的"x0,"即可
1.2解决t_miqps_master错误
为啥又来个错误, 因为这家伙也在间接调用linprog的时候使用了x0参数
- 找到miqps_ot.m(不赘述)
- 路径: matpower7.1\matpower7.1\mp-opt-model\lib\miqps_ot.m
- 修改:
不赘述
- 去掉linprog里面的"x0,"即可
然后就没有报错了,只是有警告
再放一遍
容易注意到, 改的两个文件都是mp-op-model包里面的, 而这个包是matpower当中的一个独立包(有人在专门维护)
——所以matpower不跟进matlab2023a, mp-op-model作者会不会跟进了呢?
一查, 果然(如图是mp-op-model-master中两个文件的情况):
注意右面的字
注意右面的字
打开一看
图2.果然不一样了
于是:
2.尝试手动更新mp-op-model包
一顿操作(GitHub下载(首页Code下拉按钮下载mp-opt-model-master.zip包), 覆盖matpower下面原来的mp-op-model), 结果:
?什么鬼
关键是我还找不到有t_str_match这个文件...
另外:
从首页Code下拉按钮里面直接下载得到的是mp-opt-model-master.zip(更新了那两个文件)
而从Release里面下载最新版4.1得到的是mp-opt-model-4.1.zip(没更新那两个文件)
可能master不是正式版本吧,所以文件有缺失(Github小白一个)
那既然如此:
3.尝试直接更新文件
一顿操作(把那两个文件拷出来然后丢进去覆盖)
结论: 错误也解决了, 但仍然有一堆警告. 还不如不折腾(建议直接按方案1改源码), 甚至我觉得, 你们就应该使用老版本matlab(比如matlab2017b)
总之:这趟折腾之旅结束了, 结论就是直接按照方案1改源码方便些, 可以解决错误, 虽然一堆警告
至此,我的好奇心满足了, 要忙回正事了
ps: matpower8.0b1我也看了, 没解决t_qps_master错误
(二)知乎上已经有人弄清楚了
试过了,没报错也没警告,总之就是不要去matpower官方网站去下载,去Github下载MATLAB(直接Code下拉按钮下载matpower-master.zip)
折腾一圈,白给了
四、更新关于Matlab运行test_matpower崩溃的问题
注意如果你用的是AMD处理器,请继续往下看,如果不是就不用看了,这里只讨论AMD环境下的崩溃问题
1.首先是Matlab的配置要求(以2023a为例)
注意对AVX2的提及
对Intel处理器是“any”,AMD处理器额外提及了“AVX2”和“逻辑核心数”
2.然后是关于什么是AVX2,怎么看处理器是否支持AVX2以及AVX系列指令的区别
这篇文章有详细描述,文末还例举了满足avx系列指令的处理器,但还是建议自己动手查一下
文中提到一个有意思的查询方法,我单独提一下
Steam YES!
如果发现自己的处理器不支持AVX系列指令怎么办?
首先更老版本比如2017b也对AVX2“recommend”,所以更换软件版本大概解决不了问题
Matlab 2017b的配置要求
3.Matlab in AVX2 mode (for AMD CPU's)
AVX2指令是“建议”不是“必须”,所以才有文章[1]说把Matlab调到AVX2模式用于“性能”提升吧?
毕竟电脑因为“性能”不足而崩溃貌似也很合理
然后Matlab居然像是给AMD做了适配的样子[2]
确实做了适配,但是我没有AMD机器,没法测,Matlab转AMD模式的方法在下面的文章[3]里,自己试
总结
没有提出原创方法,只是分享一下上网过程,这里的方法都是网上的,而我没有AMD机器所以没法测试网上的方法。所以这里只能写一些思路和线索,希望能帮到你,剩下的你就自己解决(毕竟谁让你买的是AMD呢)