📄 daoli2view.cpp
字号:
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (7)
else if((newangle>=-7.5)&&(newangle<0)&&(newspeed>=-60.0)&&(newspeed<-30))
{
ya1=-2.0*ax+1,ya2=-2*ax; //输入隶属度函数的确定
yb1=2.0*bx+2.0,yb2=-2*bx-1;
//R[4],R[3]并行推理
if(bViewRules[4]) //R[4]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[3]) //R[3]推理
{
if(ya1<yb2)
{
yc2=ya1;
}
else
{
yc2=yb2;
}
}
else
{
yc2=0.0;
}
//解模糊
if(bViewRules[4]||bViewRules[3])
{
if(yc1>yc2)
{
cx0=0.25*yc1-0.75;
}
else
{
cx0=-0.25*yc2-0.75;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (8)
else if((newangle>=0)&&(newangle<7.5)&&(newspeed>=0.0)&&(newspeed<30))
{
ya1=-2.0*ax+1,ya2=2*ax; //输入隶属度函数的确定
yb1=-2.0*bx+1,yb2=2*bx;
//R[5],R[6],R[9]并行推理
if(bViewRules[5]) //R[5]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[6]) //R[6]推理
{
if(ya1<yb2)
{
yc2=ya1;
}
else
{
yc2=yb2;
}
}
else
{
yc2=0.0;
}
if(bViewRules[9]) //R[9]推理
{
if(ya2<yb1)
{
yc3=ya2;
}
else
{
yc3=yb1;
}
}
else
{
yc3=0.0;
}
//解模糊
if(bViewRules[5]||bViewRules[6]||bViewRules[9])
{
if((yc1>=yc2)&&(yc1>=yc3))
{
cx0=-0.25*yc1+0.25;
}
else if((yc2>=yc1)&&(yc2>=yc3))
{
cx0=0.25*yc2+0.25;
}
else
{
cx0=0.25*yc3+0.25;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (9)
else if((newangle>=0)&&(newangle<7.5)&&(newspeed>=-30.0)&&(newspeed<0.0))
{
ya1=-2.0*ax+1,ya2=2*ax; //输入隶属度函数的确定
yb1=2.0*bx+1,yb2=-2*bx;
//R[5],R[4],R[9],R[8]并行推理
if(bViewRules[5]) //R[5]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[4]) //R[4]推理
{
if(ya1<yb2)
{
yc2=ya1;
}
else
{
yc2=yb2;
}
}
else
{
yc2=0.0;
}
if(bViewRules[9]) //R[9]推理
{
if(ya2<yb1)
{
yc3=ya2;
}
else
{
yc3=yb1;
}
}
else
{
yc3=0.0;
}
if(bViewRules[8]) //R[8]推理
{
if(ya2<yb2)
{
yc4=ya2;
}
else
{
yc4=yb2;
}
}
else
{
yc4=0.0;
}
//解模糊
if(bViewRules[5]||bViewRules[4]||bViewRules[9]||bViewRules[8])
{
if((yc1>=yc2)&&(yc1>=yc3)&&(yc1>=yc4))
{
if(ya1<yb1)
{
cx0=-0.25*yc1+0.25;
}
else
{
cx0=0.25*yc1-0.25;
}
}
else if((yc2>=yc1)&&(yc2>=yc3)&&(yc2>=yc4))
{
cx0=-0.25*yc2-0.25;
}
else if((yc3>=yc1)&&(yc3>=yc2)&&(yc3>=yc4))
{
cx0=0.25*yc3+0.25;
}
else
{
if(ya2<yb2)
{
cx0=-0.25*yc4+0.25;
}
else
{
cx0=0.25*yc4-0.25;
}
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (10)
else if((newangle>=0)&&(newangle<7.5)&&(newspeed>=-60.0)&&(newspeed<-30.0))
{
ya1=-2.0*ax+1,ya2=2*ax; //输入隶属度函数的确定
yb1=2.0*bx+2,yb2=-2*bx-1;
//R[4],R[3],R[8]并行推理
if(bViewRules[4]) //R[4]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[3]) //R[8]推理
{
if(ya1<yb2)
{
yc2=ya1;
}
else
{
yc2=yb2;
}
}
else
{
yc2=0.0;
}
if(bViewRules[8]) //R[8]推理
{
if(ya2<yb1)
{
yc3=ya2;
}
else
{
yc3=yb1;
}
}
else
{
yc3=0.0;
}
//解模糊
if(bViewRules[4]||bViewRules[3]||bViewRules[8])
{
if((yc1>=yc2)&&(yc1>=yc3))
{
cx0=0.25*yc1-0.75;
}
else if((yc2>=yc1)&&(yc2>=yc3))
{
cx0=-0.25*yc2-0.75;
}
else
{
cx0=0.25*yc3-0.25;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (11)
else if((newangle>=0)&&(newangle<7.5)&&(newspeed>=30.0)&&(newspeed<60))
{
ya1=-2.0*ax+1,ya2=2*ax; //输入隶属度函数的确定
yb1=-2.0*bx+2.0,yb2=2*bx-1;
//R[6],R[7]并行推理
if(bViewRules[6]) //R[6]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[7]) //R[7]推理
{
if(ya1<yb2)
{
yc2=ya1;
}
else
{
yc2=yb2;
}
}
else
{
yc2=0.0;
}
//解模糊
if(bViewRules[6]||bViewRules[7])
{
if(yc1>yc2)
{
cx0=-0.25*yc1+0.75;
}
else
{
cx0=0.25*yc2+0.75;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (12)
else if((newangle>=7.5)&&(newangle<15)&&(newspeed>=0.0)&&(newspeed<30))
{
ya1=-2.0*ax+2,ya2=2*ax-1; //输入隶属度函数的确定
yb1=-2.0*bx+1.0,yb2=2*bx;
//R[9],R[10]并行推理
if(bViewRules[9]) //R[9]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[10]) //R[10]推理
{
if(ya2<yb1)
{
yc2=ya2;
}
else
{
yc2=yb1;
}
}
else
{
yc2=0.0;
}
//解模糊
if(bViewRules[9]||bViewRules[10])
{
if(yc1>yc2)
{
cx0=-0.25*yc1+0.75;
}
else
{
cx0=0.25*yc2+0.75;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (13)
else if((newangle>=7.5)&&(newangle<15)&&(newspeed>=-30.0)&&(newspeed<0))
{
ya1=-2.0*ax+2,ya2=2*ax-1; //输入隶属度函数的确定
yb1=2.0*bx+1,yb2=-2*bx;
//R[9],R[8],R[10]并行推理
if(bViewRules[9]) //R[9]推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[8]) //R[8]推理
{
if(ya1<yb2)
{
yc2=ya1;
}
else
{
yc2=yb2;
}
}
else
{
yc2=0.0;
}
if(bViewRules[10]) //R[10]推理
{
if(ya2<yb1)
{
yc3=ya2;
}
else
{
yc3=yb1;
}
}
else
{
yc3=0.0;
}
//解模糊
if(bViewRules[9]||bViewRules[8]||bViewRules[10])
{
if((yc1>=yc2)&&(yc1>=yc3))
{
cx0=-0.25*yc1+0.75;
}
else if((yc2>=yc1)&&(yc2>=yc3))
{
cx0=-0.25*yc2+0.25;
}
else
{
cx0=0.25*yc3+0.75;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (14)
else if((newangle>15)&&(newspeed>=-30)&&(newspeed<30))
{
if(bx<0) //输入隶属度函数的确定
{
yb1=1+2.0*bx;
}
else
{
yb1=1-2.0*bx;
}
//R[10]
if(bViewRules[10]) //推理
{
yc1=yb1;
}
else
{
yc1=0.0;
}
if(bViewRules[10]) //解模糊
{
cx0=0.25*yc1+0.75;
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (15)
else if((newangle>=-7.5)&&(newangle<7.5)&&(newspeed<-60))
{
if(ax<0) //输入隶属度函数的确定
{
ya1=1+2.0*ax;
}
else
{
ya1=1-2.0*ax;
}
//R[3]
if(bViewRules[3]) //推理
{
yc1=ya1;
}
else
{
yc1=0.0;
}
if(bViewRules[3]) //解模糊
{
cx0=-0.25*yc1-0.75;
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (16)
else if((newangle>=-7.5)&&(newangle<7.5)&&(newspeed>=60))
{
if(ax<0) //输入隶属度函数的确定
{
ya1=1+2.0*ax;
}
else
{
ya1=1-2.0*ax;
}
//R[7]
if(bViewRules[7]) //推理
{
yc1=ya1;
}
else
{
yc1=0.0;
}
if(bViewRules[7]) //解模糊
{
cx0=0.25*yc1+0.75;
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (17)
else if((newangle>=-15)&&(newangle<-7.5)&&(newspeed>=30)&&(newspeed<60))
{
//输入隶属度函数的确定
ya1=-2.0*ax-1.0,ya2=2.0*ax+2;
yb1=-2.0*bx+2.0,yb2=2.0*bx-1;
//R[2]
if(bViewRules[2]) //推理
{
if(ya2<yb1)
{
yc1=ya2;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[2]) //解模糊
{
if(ya2<yb1)
{
cx0=0.25*yc1-0.25;
}
else
{
cx0=-0.25*yc1+0.25;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
//state (18)
else if((newangle>=7.5)&&(newangle<15)&&(newspeed>=-60)&&(newspeed<30))
{
//输入隶属度函数的确定
ya1=-2.0*ax+2.0,ya2=2.0*ax-1;
yb1=2.0*bx+2.0,yb2=-2.0*bx-1;
//R[8]
if(bViewRules[8]) //推理
{
if(ya1<yb1)
{
yc1=ya1;
}
else
{
yc1=yb1;
}
}
else
{
yc1=0.0;
}
if(bViewRules[8]) //解模糊
{
if(ya1<yb1)
{
cx0=0.25*yc1-0.25;
}
else
{
cx0=-0.25*yc1+0.25;
}
}
else
{
cx0=0.0;
}
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
}
else
{
ya1=0.0,ya2=0.0; //还原输入中间变量
yb1=0.0,yb2=0.0;
yc1=0.0,yc2=0.0,yc3=0.0,yc4=0.0;
cx0=0.0;
}
dcarF=10.0*cx0;
double newpaiangle=newangle*3.1415926/180.00;
double ddangle=(1.1*9.8*sin(newpaiangle)-cos(newpaiangle)*(dcarF+0.1*0.5*newspeed*newspeed*3.14159*3.14159*sin(newpaiangle)/180.0/180.0))*180.0/3.14159/(4.0*1.1*0.5/3.0-0.1*0.5*cos(newpaiangle)*cos(newpaiangle));
dVpolespeed=ddangle*0.02+dVpolespeed;
dVpoleangle=dVpolespeed*0.02+dVpoleangle;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -