2
非常に単純な制約最適化問題を解いています。この時点で、私は(L-2)ベクトルノルムを1にし、後で非負制約を追加することを望む制約を入力しただけです。Matlab Fmincon "出力引数が多すぎます"
Fminconは私の制約に「多すぎる出力引数」を与えています。なぜか分からない。
目的関数:シンプルな2次形式。実際には分散共分散行列です。事前に計算されたグローバル変数として入力しています。
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
助けてください!