matlab 凸优化 gpsolve()相关问题

最近写了一个MINLP问题,采用了matlab的ggplab库来做,本身并不难,但是遇到了很多很神奇的问题,而且每次在百度搜并搜不到相关的解决办法(matlab遇到bug是真的难找到类似问题),浪费了很多时间,所以想把自己遇到的一些问题摆出来,希望以后的人遇到类似问题不会纠结那么久。

gpsolve()可以解决优化问题,直接上斯坦福的网站下载相关的包就行。解压文件打开里面的doc文件夹可以看到相关的资料,格式简单,可以很快上手


有几个问题要注意:

(1)constr的条件不要设置永远为真的,比如0<=1这类条件就会报错

(2)我原先代码是constr=[alpha+gamma./beta'<delta];

就会遇到 Undefined function 'lt' for input arguments of type 'posynomial'.的报错

但是改成c=1;constr=[c*alpha + c*gamma./beta' <= c*delta];竟然就通过了,我并不知道什么原理

(3)如果遇到Cannot pointwise divide vectors or matrices with incompatible dimensions.的报错,是因为你的矩阵形式不一致,仔细检查你的矩阵是否能够(点)乘除。我的问题是我设置了gpvar b(6),但是优化结果是个3*1矩阵,我错了两次,一是误以为是1*3,第二个是你设置(6)但它并不一定出来就是6,可能会少于你设置的数字。

(4)我constr两个条件分别可通过,合在一起告诉我Dimensions of matrices being concatenated are not consistent. 所以应该是无解,但是这个错误描述很醉

猜你喜欢

转载自blog.csdn.net/qq_34219959/article/details/79716718