An error message using fmincon

3 vues (au cours des 30 derniers jours)
ektor
ektor le 25 Mai 2019
Commenté : ektor le 26 Mai 2019
Dear all,
I minimize this function.
g=randn(1000,1);
u=randn(1000,1);
ff = @(x) sum( ( g(2:end)- x(1)- x(2)*(g(1:end-1)-x(1)) - u(2:end)*x(3) ).^2 );
xx = fmincon(ff,[0.1 0.2 0.3],[],[],[],[],[],[],@unitdisk3,options);
where
function [c,ceq] = unitdisk3(x)
c = [ x(2)-0.999; -x(2)-0.999 ;- x(3) +0.001 ];
ceq = [];
end
but I get this error message
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
Error in unitdisk3 (line 2)
c = [ x(2)-0.999; -x(2)-0.999 ;- x(3) +0.001 ];
Error in fmincon (line 633)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});
Caused by:
Failure in initial nonlinear constraint function evaluation. FMINCON cannot
continue.
Any ideas why?

Réponse acceptée

Sulaymon Eshkabilov
Sulaymon Eshkabilov le 26 Mai 2019
Hi Ektor,
You have done a good work except for two small flaws, but crucial ones. Here are the corrected scripts:
function [c,ceq] = unitdisk3(x)
c = [ x(1)-0.999, -x(2)-0.999 , - x(3) +0.001 ];
ceq = [];
end
g=randn(1000,1);
u=randn(1000,1);
options = optimoptions('fmincon','Display','off', 'Algorithm', 'active-set');
ff = @(x) sum((g(2:end)- x(1)- x(2)*(g(1:end-1)-x(1)) - u(2:end)*x(3)).^2);
xx = fmincon(ff,[0.1 0.2 0.3],[],[],[],[],[],[],@unitdisk3,options);
Good luck.
  1 commentaire
ektor
ektor le 26 Mai 2019
Great!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Surrogate Optimization dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by