void FlightControl::calibrateGyro() { int16_t gz = 0; LowPassFilter glp(100); for(uint8_t i=0;i<100;i++) { delay(1); gz = glp.filter(AccelGyro.getRotationZ()); } gyroBias = gz; }
void initialize() { int q[zhongqunshu1][1],s=1; float xx[zhongqunshu1][1];//生成的glp用x储存 int h[1]={1};//生成向量 zuiyougeti=new individual;//最优个体的生成 zhongqunshu=200;//种群数量 nowpop=new individual[zhongqunshu1];//当代 newpop=new individual[zhongqunshu1];//新一代 maxgen=150;//最大代数 gen=0;//起始代 lchrom=22;//基因数量的初始化 mysrand(time(0));//随机数种子 a[0]=seed;//随机数种子 //对最优个体的初始化 zuiyougeti->geti=0; zuiyougeti->fitness=0; zuiyougeti->shiyingdu=0; // glp(zhongqunshu,s,h,q,xx); //for(int i=0;i<zhongqunshu1;i++)//产生初始种群 //{ // for(int j=0;j<s;j++) // { // nowpop[i].geti=zuobianjie+(youbianjie-zuobianjie)*xx[i][j]; // } //} for(int i=0;i<zhongqunshu1;i++)//产生初始种群 { nowpop[i].geti=zuobianjie+(youbianjie-(zuobianjie))*ran1(a); } //nowpop[0].geti=999;////////////////////////// guanjiancanshujisuan(); jingyingbaoliu(); //精英保留的实现 guanjiancanshujisuan();//计算shiyingdu,根据shiyingdu计算sumshiyingdu,对shiyingdu进行尺度变换变成fitness,根据fitness计算sumfitness,avefitness,maxfitness }