void function(void) { key_diy(); switch(key_status) { case 1: function1(); break; case 2: function2(); break; case 3: function3(); break; case 4: function4(); break; case 5: function5(); break; case 6: function6(); break; case 7: function7(); break; default: function0(); break; } }
double GWO(){ initializeAgents(); int l=0; while(l<MI){ for(int i=0; i<SEARCH_AGENTS;i++){ double sumF = 0; verLU(i); for (int j = 0; j < dim; j++){ sumF = (sumF + function6(i,j)); } //sumF=function16(i); wolf_pack[i].fitness = sumF; if (wolf_pack[i].fitness < alpha.fitness) { memcpy(delta.pos, beta.pos, sizeof(beta.pos)); delta.fitness = beta.fitness; memcpy(beta.pos, alpha.pos, sizeof(alpha.pos)); beta.fitness = alpha.fitness; memcpy(alpha.pos, wolf_pack[i].pos, sizeof(wolf_pack[i].pos)); alpha.fitness=wolf_pack[i].fitness; } if (wolf_pack[i].fitness < beta.fitness && wolf_pack[i].fitness > alpha.fitness){ memcpy(delta.pos, beta.pos, sizeof(delta.pos)); delta.fitness = beta.fitness; memcpy(beta.pos, wolf_pack[i].pos, sizeof(wolf_pack[i].pos)); beta.fitness=wolf_pack[i].fitness; } if (wolf_pack[i].fitness > alpha.fitness && wolf_pack[i].fitness > beta.fitness && wolf_pack[i].fitness < delta.fitness){ memcpy(delta.pos, wolf_pack[i].pos, sizeof(wolf_pack[i].pos)); delta.fitness=wolf_pack[i].fitness; } } double a=2-l*((2)/MI); for(int i=0; i<SEARCH_AGENTS;i++){ double A1[dim],A2[dim],A3[dim],D_alpha[dim],D_beta[dim],D_delta[dim],C1[dim],C2[dim],C3[dim],X1[dim],X2[dim],X3[dim]; for (int z = 0; z < dim; ++z){ A1[z]=2*a*RngStream_RandU01(g1)-a; C1[z]=2*RngStream_RandU01(g1); A2[z]=2*a*RngStream_RandU01(g1)-a; C2[z]=2*RngStream_RandU01(g1); A3[z]=2*a*RngStream_RandU01(g1)-a; C3[z]=2*RngStream_RandU01(g1); D_alpha[z]=fabs(C1[z]*alpha.pos[z]-wolf_pack[i].pos[z]); D_beta[z]=fabs(C2[z]*beta.pos[z]-wolf_pack[i].pos[z]); D_delta[z]=fabs(C3[z]*delta.pos[z]-wolf_pack[i].pos[z]); X1[z]=alpha.pos[i]-A1[z]*D_alpha[z]; X2[z]=beta.pos[i]-A2[z]*D_beta[z]; X3[z]=delta.pos[i]-A3[z]*D_delta[z]; wolf_pack[i].pos[z]=(X1[z]+X2[z]+X3[z])/3; } } l++; } }