Вы находитесь на странице: 1из 3

function [ka,kbs,r,m,del,th_eng]= maincall

global alp ra_min rb_max rb ra xb inixa xa del k1 k2 kb p zb za c_a tv_l tv k0 k f ph l_h th_a
th_b th_sb c_b om bv d diff_ra diff_xa diff_xb diff_rb diff_za diff_zb diff_k diff_th_b diff_th_a
diff_cb diff_p diff_ca diff_d cs n s v1 v2 v3 ;
alp=20;
rb_max=4.3*.0254;
ra_min=4.3*.0254/3.9;
inixa=.003;
c_a= 19.659;
tv_l= (3.9:-.1:.9)';
tv= ones(size(tv_l,1),1)./tv_l;
k0= .15;
k= zeros(31,1);
f= .5;
ph= atand(.48);
l_h= .300;
d= .0385*2;
for i=0:30
rb(i+1,1)= rb_max-i*.001638;
ra(i+1,1)= rb(i+1,1)*tv(i+1,1);
xa(i+1,1)= 2*(ra(i+1,1)-ra_min)*tand(alp)+.003;
xb(i+1,1)= 2*(rb_max-rb(i+1,1))*tand(alp);
bv(i+1,1)= (atand((ra(i+1,1)-rb(i+1,1))/l_h));
th_a(i+1,1)= 180+2*(atand((ra(i+1,1)-rb(i+1,1))/l_h)) ;
th_b(i+1,1)= 180-2*(atand((ra(i+1,1)-rb(i+1,1))/l_h));
th_sb(i+1,1)= th_b(i+1,1)*0.8;
end
for i=0:30
k(i+1,1)= k0*((rb(i+1,1)/rb(end-1,1))^2);
k1(i+1,1)= k(i+1,1)* ((tand(alp+ph))/tand(alp));
k2(i+1,1)= k(i+1,1)*((tand(alp-ph))/tand(alp));
p(i+1,1)= sqrt(((1.5-(f*tand(alp)))^2)-(1.5-(f*tand(alp)))+(2*k(i+1,1)*(1+(f*cotd(alp)))));
c_b(i+1,1)=tv_l(i+1,1)*c_a;
om(i+1,1)= sqrt((k1(i+1,1)-p(i+1,1))*(p(i+1,1)-k2(i+1,1))*cosd(alp+ph)*cosd(alp-
ph))/(p(i+1,1)*cosd(ph));
zb(i+1,1)= 0.0174*th_b(i+1,1)+((k1(i+1,1)-k2(i+1,1))/(2*(p(i+1,1)-
k2(i+1,1))))*(((sinh(om(i+1,1)*th_sb(i+1,1)*0.0174))/(om(i+1,1)))-th_sb(i+1,1));
za(i+1,1)= 0.0174*th_a(i+1,1);
end
for i=0:29
diff_ra(i+1,1)=ra(i+2,1)-ra(i+1,1);
diff_xa(i+1,1)=2*diff_ra(i+1,1)*tand(alp);
diff_rb(i+1,1)=rb(i+2,1)-rb(i+1,1);
diff_xb(i+1,1)=2*diff_rb(i+1,1)*tand(alp);
diff_za(i+1,1)=za(i+2,1)-za(i+1,1);
diff_zb(i+1,1)=zb(i+2,1)-zb(i+1,1);
diff_k(i+1,1)=k0*2*(rb(i+1,1)/(rb(end-1,1)^2))*diff_rb(i+1,1);
diff_th_a(i+1,1)=2*(cosd(bv(i+1,1))^2)* ((diff_ra(i+1,1)*((1/l_h)-
(1/(tv(i+1,1)*l_h))))+(ra(i+1,1)/(tv(i+1,1)*tv(i+1,1)*l_h)));
diff_th_b(i+1,1)= -diff_th_a(i+1,1) ;
diff_cb(i+1,1)= -c_a/(tv(i+1,1)^2);
diff_p(i+1,1)= (1+(f*cotd(alp))*diff_k(i+1,1))/p(i+1,1);
end
[cs,fval]=genalgo;
ka(1,1)=cs(1);
kb(1,1)=cs(2);
r(1,1)=cs(3);
m(1,1)=cs(4);
del(1,1)=cs(5);
kbs=kb;
[th_eng]= engage;
for s=1:30
[n,fval2]=genalgodiffr;
fvaldiff(s+1,1)=fval2;
v1 = ka(s,1)+ n(1)*(tv(s+1,1)-tv(s,1));
v2 = r(s,1)+n(2)*(tv(s+1,1)-tv(s,1));
v3 = del(s,1)+n(3)*(tv(s+1,1)-tv(s,1));
ka(s+1,1) = ka(s,1) + n(1)*(tv(s+1,1)-tv(s,1));
r(s+1,1) = r(s,1)+n(2)*(tv(s+1,1)-tv(s,1));
del(s+1,1)= del(s,1)+n(3)*(tv(s+1,1)-tv(s,1));
end
end

//Genetic Algorithm 1 settings and initialization


function [x,fval]=genalgo
nvars=5;
rng('default');
lb=[ 26000 14000 .1 .100 0];
ub=[ 38000 26000 .11 .200 20];
options=
oaoptimset('Generation',200,'FitnessLimit',3600,'PopulationSize',50,'CrossoverFraction',.6);
[x,fval] =ga(@mainfun, nvars,[],[],[],[],lb,ub,[],options);
End
//Genetic Algorithm 1 Fitness function
Function w= mainfun(x)
global za zb ra xa xb c_a d alp
a= ((x(2)*x(5)*((xb(1,1)*180)/(x(5)*3.14*.0385))*za(1,1))/(d*zb(1,1)));
c= ((c_a*za(1,1)*(cotd(alp)))/(2*ra(1,1)));
di=(x(1)*xa(1,1));
e= (4*x(4)*x(3)*((x(3)-.1)/(xa(1,1))));
w= sqrt((a+c+di)/e);
end
//Genetic Algorithm 2 settings and initialization
function [y,fval]= genalgodiffr
global tv s;
nvars= 3;
rng('default');
lb= [70 .0010 1]./(tv(s+1,1)-tv(s,1));
ub= [150 .0015 2]./(tv(s+1,1)-tv(s,1));
options=
gaoptimset('Generation',150,'FitnessLimit',0,'PopulationSize',70,'CrossoverFraction',.6);
[y,fval]= ga(@mainfun2, nvars,[],[],[],[],lb,ub,[],options);
end
// The fitness function for 2nd Genetic Algorithm
function diff_w= mainfun2(y)
global fx s n cs del xa xb za zb kb alp d ra c_a diff_xb diff_za diff_zb diff_ra diff_xa diff_ca
tv v1 v2 v3 ;
m(1,1)=cs(4);
if s==1
ka(1,1) =cs(1);
r(1,1) =cs(3);
del(1,1)=cs(5);
else
ka(s,1) = v1+n(1)*(tv(s+1,1)-tv(s,1));
r(s,1) = v2+n(2)*(tv(s+1,1)-tv(s,1));
del(s,1)= v3+n(3)*(tv(s+1,1)-tv(s,1));
end
a=(kb*del(s+1,1)*(((180*(xb(s+1,1)-xb(s,1)))/(del(s+1,1)-
del(s,1)*3.14*.0385)))*za(s+1,1))/(d*zb(s+1,1));
c=((c_a*za(s+1,1)*(cotd(alp)))/(2*ra(s+1,1)));
if s==1
di=(ka(s,1)*xa(s,1));
else
for l=2:s
fx(l,1)=ka(l,1)*(xa(l,1)-xa(l-1,1));
end
di=sum(fx);
end
e=4*m(1,1)*r(s,1)*(y(2)*(tv(s+1)-tv(s)))/(xa(s+1,1)-xa(s,1));
w= sqrt((a+c+di)/e)+3400;
diff_a= y(3)*(xb(s+1,1)-xb(s,1))/(y(3)*(tv(s+1,1)-
tv(s,1)))*kb*za(s+1,1)/(d*zb(s+1,1))+(((del(s,1)*3.14/180)*y(3)*(sec(atan((xb(s+1,1)-
xb(s,1))*180/(y(3)*3.14*(tv(s+1,1)-
tv(s,1))))))^2)*(kb*za(s+1,1)/(zb(s+1,1)*d)))+diff_za(s,1)*kb*(((del(s,1)+y(3)*(tv(s+1,1))-
tv(s,1)))*((xb(s+1,1)-xb(s,1))/(y(3)*(tv(s+1,1)-tv(s,1)))))/(zb(s+1,1)*d)-
(diff_zb(s,1)*kb*del(s,1))-(diff_zb(s,1)*kb*(((del(s,1)+y(3)*(tv(s+1,1)-tv(s,1)))*((xb(s+1,1)-
xb(s,1))/((y(3)*(tv(s+1,1)-tv(s,1)*za(s+1,1))/(d*(zb(s+1,1))^2)-(kb*((del(s,1)+y(3)*(tv(s+1,1)-
tv(s,1)))*diff_xb(s,1)*((del(s,1)+y(3)*(tv(s+1,1)-
tv(s,1)))*3.14*.0385))))*za(s+1,1))/((d*zb(s+1,1)*(180*(xb(s+1,1))^2)))))));
diff_c = ((diff_ca(s,1)*za(s+1,1)*cotd(alp))/(2*ra(s+1,1)))+
((diff_za(s,1)*c_a*cotd(alp))/(2*ra(s+1,1)))-
((diff_ra(s,1)*c_a*za(s+1,1)*cotd(alp))/(2*(ra(s+1,1)))^2);
diff_di=(y(1)*xa(s,1))+(diff_xa(s,1)*ka(s,1));
diff_e=(y(2)*4*m(1,1)*(y(2)-r(s,1))/(xa(s+1)-xa(s)))+(y(2)*4*m(1,1)*r(s,1)*(secd(atand(y(2)-
r(s,1))/(xa(s+1)-xa(s))))^2);
diff_w= ((((a+c+di)*diff_e)/(e^2))-((diff_a+diff_c+diff_di)/e))/((2)*w);
end
// Calulation of primary cam profile for engagement
function th_eng = engage
global cs
th_eng= atand((cs(1)*.003)/(cs(3)*cs(4)*((2900*2*pi/60)^2)));
end

Вам также может понравиться