2
我正在解决一个非常简单的约束优化问题。在这一点上,我只输入了一个约束条件,使(L-2)向量范数等于1,之后我希望添加非负约束条件。Matlab Fmincon“太多输出参数”
Fmincon给我一个“太多的输出参数”在我的约束上。我不明白为什么。
目标函数:一个简单的二次型。实际上是一个方差协方差矩阵,我输入为一个预先计算的全局变量。
function [y, grady] = quadobj(x)
global Q
y = x*Q*x';
if nargout > 1
grady = 2*Q*x;
end
等式约束:该矢量L2范数应为1。
function outeq = confuneq2(x)
% Nonlinear equality constraints
outeq = x*x'-1;
end
Fmincon。
x0 = [0.7,0.1, -0.69];
options = optimoptions(@fmincon,'Algorithm','sqp');
[x,fval] = fmincon(@quadobj,x0,[],[],[],[],[],[],...
@confuneq2,options);
但它不工作。我收到以下错误。
Error using confuneq2
Too many output arguments.
Error in fmincon (line 632)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});
Caused by:
Failure in initial user-supplied nonlinear constraint function evaluation. FMINCON cannot continue
请帮忙!