Fmincon too many input arguments

2 vues (au cours des 30 derniers jours)
Mohammad Nazmus Saquib
Mohammad Nazmus Saquib le 5 Mai 2022
function [x,fval,exitflag,output] = try_no_gradient(u0)
% This is an auto generated M-file from Optimization Tool.
% Start with the default options
options=optimset('largescale','off','display','iter');
% options = optimset;
% Modify options setting
% options = optimset(options,'Display', 'iter-detailed');
% options = optimset(options,'PlotFcns', { @optimplotx @optimplotfval });
% options = optimset(options,'Algorithm', 'interior-point');
% options = optimset(options,'DerivativeCheck', 'on');
% options = optimset(options,'GradConstr', 'off');
% options = optimset(options,'GradObj', 'off');
% Initial Design
u0=[0,0];
% fmincon called
[u,fval,exitflag,output] = ...
fmincon(@try_obj,u0,[],[],[],[],[],[],@try_con,options);
beta=fval
x(1)=u(1)*3.8+38
x(2)=u(2)*2.7+54
% function for objective
function [f]=try_obj(u)
f = sqrt(u(1)^2+u(2)^2);
% gradient of the objective
% nargout: required number of arguments in the output
% function for objective
function [g ceq]=try_con(u)
g=[];
x(1)=u(1)*3.8+38;
x(2)=u(2)*2.7+54;
ceq=[x(1)*x(2)-1140];
I've tried to use objective function, initial condition and constraint formulation for my fmincon optimization. It's throwing an error saying too many input arguments. I've passed 10 inputs still it says so. Can anyone help me to resolve it here?

Réponse acceptée

Walter Roberson
Walter Roberson le 5 Mai 2022
You named your own function fmincon.m and at line 18 of that file you have a call to fmincon. You intended that the Mathworks fmincon should be called at that point but when matlab searched for fmincon it found it right there, the same file. . You should have named the file try_no_gradient.m if it starts by defining try_no_gradient

Plus de réponses (1)

John D'Errico
John D'Errico le 5 Mai 2022
Modifié(e) : John D'Errico le 5 Mai 2022
How are you using it? That is, how did you call the function try_no_gradient(u0)?
When you get an error message, show the COMPLETE error message. Otherwise, we must guess what you did wrong. Show EVERYTHING in red.
My guess is that you do not understand how to pass in the vector u0.
  1 commentaire
Mohammad Nazmus Saquib
Mohammad Nazmus Saquib le 5 Mai 2022
Here's the error message:
"Error using fmincon
Too many input arguments.
Error in fmincon (line 18)
[u,fval,exitflag,output] = fmincon(@try_obj,u0,[],[],[],[],lbnd,ubnd,@try_con,options);"
Yes I'm comparatively new in this field. I'm still learning how to pass vector and its dimension related problems.

Connectez-vous pour commenter.

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by