fmincon() error too many input arguments

조회 수: 1 (최근 30일)
connie
connie 2011년 1월 21일
Dear peer users,
I got stuck with fmincon(). I tried different approaches but all showed different errors.
#1 codes are:
out=(f1-1)^2+(f2-1)^2+(f3-1)^2+(f4-1)^2;
x1=sym('x1',[1 4]);
subs(out,{x,phi,lamda2,lamda4},{x1(1),x1(2),x1(3),x1(4)});
out1=matlabFunction(out);
x0=[pi/6 pi/6 -1 -2];
lb=[0 0 -20 -20];
ub=[2*pi 2*pi 0 0];
[x1,fval,exitflag,output]=fmincon(out1,x0,[],[],[],[],lb,ub);
Errors are: ??? Error using ==> sym.matlabFunction>@()NaN Too many input arguments.
Error in ==> fmincon at 574 initVals.f = feval(funfcn{3},X,varargin{:});
Error in ==> solveequs_new at 77 [x1,fval,exitflag,output]=fmincon(out1,x0,[],[],[],[],lb,ub); Caused by: Failure in initial user-supplied objective function evaluation. FMINCON cannot continue.
#2: Codes are out=(f1-1)^2+(f2-2)^2+(f3-3)^2+(f4-4)^2;
x1=sym('x1',[1 4]);
subs(out,{x,phi,lamda2,lamda4},{x1(1),x1(2),x1(3),x1(4)});
x0=[pi/6 pi/6 -1 -2];
lb=[0 0 -20 -20];
ub=[2*pi 2*pi 0 0];
[x1,fval,exitflag,output]=fmincon(@(x1)out,x0,[],[],[],[],lb,ub);
errors are ??? Error using ==> sym.sym>notimplemented at 2621 Function 'ge' is not implemented for MuPAD symbolic objects.
Error in ==> sym.sym>sym.ge at 823 notimplemented('ge');
Error in ==> nlconst at 739 elseif f >=0
Error in ==> fmincon at 758 [X,FVAL,LAMBDA,EXITFLAG,OUTPUT,GRAD,HESSIAN]=...
Error in ==> solveequs_new at 76 [x1,fval,exitflag,output]=fmincon(@(x1)out,x0,[],[],[],[],lb,ub);
I understand I need to convert symbolic expression to function. But either of above is now working. Can you tell me why?
Thanks!

답변 (1개)

Walter Roberson
Walter Roberson 2011년 1월 21일
For more information about the "too many input parameters" problem, please see my comments in your previous question about minimization.

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by