# How to fix this error : Not enough input arguments.

5 ビュー (過去 30 日間)
Abdulaziz Hassoun 2023 年 3 月 7 日
コメント済み: Abdulaziz Hassoun 2023 年 3 月 21 日
Hi Everyone, i am an Egnineering student new to MATLAB Coding and working on Coding arithmetic optimization Algorathim (AOA).
I keep Having this Erorr : Not enough input arguments.
Error in AOA_new6 (line 5)
Best_P=zeros(1,Dim);
i am trying to modifi the code for global optimization.
i added the code for refrence.
it's not my work.
function [Best_FF,Best_P,Conv_curve]=AOA_new6(N,M_Iter,LB,UB,Dim,fhd,Function_ID,Global_Opt)
disp('AOA Working');
%Two variables to keep the positions and the fitness value of the best-obtained solution
Best_P=zeros(1,Dim);
Best_FF=inf;
Conv_curve=zeros(1,M_Iter);
%Initialize the positions of solution
X=initialization(N,Dim,UB,LB);
Xnew=X;
Ffun=zeros(1,size(X,1));% (fitness values)
Ffun_new=zeros(1,size(Xnew,1));% (fitness values)
MOP_Max=1;
MOP_Min=0.2;
C_Iter=1;
Alpha=5;
Mu=0.499;
for i=1:size(X,1)
%Ffun(1,i)=F_obj(X(i,:)); %Calculate the fitness values of solutions
Ffun(1,i)=feval(fhd,X(i,:)',Function_ID); %Calculate the fitness values of solutions
if Ffun(1,i)<Best_FF
Best_FF=Ffun(1,i);
Best_P=X(i,:);
end
end
while C_Iter<M_Iter+1 %Main loop
MOP=1-((C_Iter)^(1/Alpha)/(M_Iter)^(1/Alpha)); % Probability Ratio
MOA=MOP_Min+C_Iter*((MOP_Max-MOP_Min)/M_Iter); %Accelerated function
%Update the Position of solutions
for i=1:size(X,1) % if each of the UB and LB has a just value
for j=1:size(X,2)
r1=rand();
if (size(LB,2)==1)
if r1<MOA
r2=rand();
if r2>0.5
Xnew(i,j)=Best_P(1,j)/(MOP+eps)*((UB-LB)*Mu+LB);
else
Xnew(i,j)=Best_P(1,j)*MOP*((UB-LB)*Mu+LB);
end
else
r3=rand();
if r3>0.5
Xnew(i,j)=Best_P(1,j)-MOP*((UB-LB)*Mu+LB);
else
Xnew(i,j)=Best_P(1,j)+MOP*((UB-LB)*Mu+LB);
end
end
end
if (size(LB,2)~=1) % if each of the UB and LB has more than one value
r1=rand();
if r1<MOA
r2=rand();
if r2>0.5
Xnew(i,j)=Best_P(1,j)/(MOP+eps)*((UB(j)-LB(j))*Mu+LB(j));
else
Xnew(i,j)=Best_P(1,j)*MOP*((UB(j)-LB(j))*Mu+LB(j));
end
else
r3=rand();
if r3>0.5
Xnew(i,j)=Best_P(1,j)-MOP*((UB(j)-LB(j))*Mu+LB(j));
else
Xnew(i,j)=Best_P(1,j)+MOP*((UB(j)-LB(j))*Mu+LB(j));
end
end
end
end
Flag_UB=Xnew(i,:)>UB; % check if they exceed (up) the boundaries
Flag_LB=Xnew(i,:)<LB; % check if they exceed (down) the boundaries
Xnew(i,:)=(Xnew(i,:).*(~(Flag_UB+Flag_LB)))+UB.*Flag_UB+LB.*Flag_LB;
%Ffun_new(1,i)=F_obj(Xnew(i,:)); % calculate Fitness function
Ffun_new(1,i)=feval(fhd,Xnew(i,:)',Function_ID); %Calculate the fitness values of solutions
if Ffun_new(1,i)<Ffun(1,i)
X(i,:)=Xnew(i,:);
Ffun(1,i)=Ffun_new(1,i);
end
if Ffun(1,i)<Best_FF
Best_FF=Ffun(1,i);
Best_P=X(i,:);
end
end
%Update the convergence curve
Conv_curve(C_Iter)=Best_FF-Global_Opt;
%Print the best solution details after every 50 iterations
if mod(C_Iter,50)==0
display(['At iteration ', num2str(C_Iter), ' the best solution fitness is ', num2str(Best_FF-Global_Opt)]);
end
C_Iter=C_Iter+1; % incremental iteration
end
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Abdulaziz Hassoun 2023 年 3 月 7 日
Should i define the variables : N,M_Iter,LB,UB,Dim,fhd,Function_ID,Global_Opt ?

サインインしてコメントする。

### 回答 (1 件)

Constantino Carlos Reyes-Aldasoro 2023 年 3 月 7 日
Hello
Most probably you are not calling the function with all the necessary input parameters, look at this example in which there are 3 parameters required and I only pass 2.
test(2,3)
Not enough input arguments.

Error in solution>test (line 3)
out = a*b*c;
function out = test(a,b,c)
out = a*b*c;
end
##### 8 件のコメント6 件の古いコメントを表示6 件の古いコメントを非表示
Image Analyst 2023 年 3 月 20 日
We assume you got it working because you accepted this answer. It that's not true, then unaccept it and maybe more people will answer.
Abdulaziz Hassoun 2023 年 3 月 21 日
Oh ok i did not know that, Thank you

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeGet Started with Curve Fitting Toolbox についてさらに検索

R2022b

### Community Treasure Hunt

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

Start Hunting!

Translated by