کلیدستان

نسخه‌ی کامل: خطای double
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام خدمت دوستان عزیز،
من میخوام  یک تابع را تعریف کنم وبعد الگوریتم ژنتیک را فراخوانی کنم و بهینه سازی انجام بدم.کدی که نوشتم بصورت زیر است  من 2تا سوال دارم که ممنون میشم اگه کسی میتونه بهم کمک کنه.سوال اولم ،با اینکه ماتریس p را تعریف کردم با خطایUndefined function 'P' for input arguments of type 'double '.روبرو میشم برای رفع آن باید چکار کنم؟؟؟
و بعد برای فراخوانی الگوریتم ژنتیک دستور 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