با سلام خدمت دوستان عزیز،
من میخوام یک تابع را تعریف کنم وبعد الگوریتم ژنتیک را فراخوانی کنم و بهینه سازی انجام بدم.کدی که نوشتم بصورت زیر است من 2تا سوال دارم که ممنون میشم اگه کسی میتونه بهم کمک کنه.سوال اولم ،با اینکه ماتریس p را تعریف کردم با خطایUndefined function 'P' for input arguments of type 'double '.روبرو میشم برای رفع آن باید چکار کنم؟؟؟
و بعد برای فراخوانی الگوریتم ژنتیک دستور ga را کجا باید بنویسم؟ آیا جای که در کدم نوشتم درست است؟
و بعد برای فراخوانی الگوریتم ژنتیک دستور ga را کجا باید بنویسم؟ آیا جای که در کدم نوشتم درست است؟
ممنون
کد پیاچپی:
function z=dash(a)
z=0;
% ######### Soil (infill) Properties ########
fii=46*pi/180;
gamai=16.34;
% ######### Soil (bed) Properties ########
fi=46*pi/180
gama=16.34
% ######### Foundation Properties ########
B=0.1;
%######## load data ###############
data=[0.8 190 378 543 653
1.6 227 452 631 773
2 237 461 672 846
2.75 238 451 674 848
3.14 250 488 708 866];
% ######### Properties ########
hdB=data(:,1);
ddB=1.2;
% ######### Load Properties ########
p=data(:,3:5);
% @@@@@@@@@@@@@@@@ Calculation @@@@@@@@@@@@@@@@@@
Nq=(tan(pi/4+fi/2))^2*exp(pi*tan(fi));
Nc=(Nq-1)*tan(fi);
Ng=2*(Nq+1)*tan(fi);
k=1-sin(fi);
delta=2*fi/3;
%%%%%%%%%%%%%%%%%%%%%%%%%%
n=size(p,1);
for i=1:n
hdd(i)=hdB(i)/ddB;
e(i)=(ddB)^(-1)/((ddB)^(-1)+2*(a(1)*(hdd(i))^3+a(2)*(hdd(i))^2+a(3)*(hdd(i))+a(4)));
Pu(i)=Su*Nc+gamai*B*hdB(i)*(Nq-1)+0.5*gama*B*Ng;
for j=1:size(p,2)
dP1(i,j)=4*(1+2^0.5)*hdd(i)*k.*P(i,j).*e(i)*tan(delta)/(pi^0.5);
dP2(i,j)=(1-e(i)).*P(i,j);
if hdd(i)<=1
Pr(i,j)=Pu(i)+dP1(i,j)+dP2(i,j);
else
Pr(i,j)=Pu(i)+dP1(i,j)*0+dP2(i,j);
end
eror(i,j)=(p(i,j)-pr(i,j)).^2;
end
end
z=((1/(size(p,2)*n)).*(sum(eror(:)))).^0.5
%%%% upper bound and lower bound of the parameters%%%%%%
LB=[-100 -100 -100 -100];
UB=[100 100 100 100];
%%%%% Genetic Algorithm %%%%%%%%%
x=ga[@dash,4,[],[],[],[],LB,UB]