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
請幫忙!