未定义的运算符'>'对于'msspoly'类型的输入参数(优化软件)

时间:2017-11-29 07:22:54

标签: matlab

我知道有许多类似的问题,例如标题在这里问。 但是,我仍然相信这些讨论都不能解决我的问题。

我正在测试麻省理工学院开发的以下软件“SPOTless”:
https://github.com/spot-toolbox/spotless
这是一个将多项式优化问题转换为LP或SOCP的软件。然后调用其他软件“mosek”来解决它。

此示例来自以下教程:
https://github.com/spot-toolbox/spotless/tree/master/doc(请参阅最后一个示例)

n = 2 ;
d = 4 ;
x = msspoly('x',n ) ;
basis = monomials(x , 0 : d ) ;
p = randn(length(basis))'*basis ;

g = 1 - x'*x ;
prog = spotsosprog ;
prog = prog.withIndeterminate(x) ;
[prog,r] = prog.newFree(1) ;
[prog,f] = prog.newFreePoly(x,monomials(x,0:d-2)) ;
prog = prog.withSOS(r-p-f*g) ;
sol = prog.minimize(r) ;

然而,当运行它时,Matlab显示以下错误:

enter image description here

第401行和相关部分如下:

function [pr,poly,coeff] = newFreePoly(pr,basis,n)
            if nargin < 3, n = 1; end
            if ~isempty(basis) && n > 0  % line 401
                if ~pr.isPolyInIndet(basis)
                    error('Basis must be polynomial in the indeterminates.');
                end
                [pr,coeff] = pr.newFree(length(basis)*n);
                poly = reshape(coeff,n,length(basis))*basis;
            else
                poly = [];
            end
    end

$ n $是一个整数,因此$ n&gt; 0 $显然是有效的。

我问相关教授(不是这个软件的作者);他告诉我他以前没见过这个问题。问题来自软件中的一个.m文件。

我不确定是否有人可以帮我测试这个软件和这个例子,让我知道结果或如何解决这个错误。

  

注意:如果您真的测试了这个软件(易于安装),请同时安装“ mosek ”,这是一个着名的优化软件。

     

注意:如果您不想安装“mosek”,请在代码中删除最后两行。

0 个答案:

没有答案