📄 variables.h
字号:
/*************************************************************************** variables.h - description ------------------- begin : Mon Jan 29 2001 copyright : (C) 2001 by Max Salazar email : max@maxnet.cc ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/unsigned int num_fun(unsigned int fun){ unsigned int num = 1; switch (fun) { case 100: num = 2; break; case 200: num = 2; break; case 300: num = 2; break; case 400: num = 2; break; case 500: num = 2; break; case 600: num = 3; break; case 700: num = 2; break; case 800: num = 3; break; case 900: num = 2; break; case 1000: num = 2; break; case 10100:num =2;break; case 10200:num =2;break; case 10300:num =2;break; case 10400:num =2;break; case 10500:num =2;break; } return num; }unsigned int num_dim(unsigned int fun){ unsigned int num = 0; switch (fun) { case 1: num = 13; break; case 2: num = 20; break; case 3: num = 5; break; case 4: num = 2; break; case 5: num = 10; break; case 6: num = 2; break; case 7: num = 4; break; case 8: num = 4; break; case 9: num = 2; break; case 10: num = 1; break; case 11: num = 2; break; case 100: num = 1; break; case 200: num = 3; break; case 300: num = 3; break; case 400: num = 1; break; case 500: num = 2; break; case 600: num = 2; break; case 700: num = 2; break; case 800: num = 2; break; case 900: num = 2; break; case 1000: num = 2; break; case 10100:num=2;break; case 10200:num=2;break; case 10300:num=4;break; case 10400:num=2;break; case 10500:num=2;break; } return num; }unsigned int num_rest(unsigned int fun){ unsigned int num = 0; switch (fun) { case 1: num = 9; break; case 2: num = 2; break; case 3: num = 6; break; case 4: num = 2; break; case 5: num = 8; break; case 6: num = 2; break; case 7: num = 4; break; case 8: num = 7; break; } return num; }void initpop(double *pop, unsigned int fun, unsigned int M, unsigned int D) { double F = 10.0; double E = 2*pow(10,5); double L = 200.0; double r = 10.0; unsigned int i, j; switch (fun) { case 1: for(i = 0; i < M; i++) for(j = 0; j < 9; j++) pop[(D * i) + j] = RandomDouble(0.0, 1.0); for(i = 0; i < M; i++) for(j = 9; j < 12; j++) pop[(D * i) + j] = RandomDouble(0.0, 100.0); for(i = 0; i < M; i++) pop[(D * i) + 12] = RandomDouble(0.0, 1.0); break; case 2: for(i = 0; i < M; i++) for(j = 0; j < 20; j++) pop[(D * i) + j] = RandomDouble(0.0, 10.0); break; case 3: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(78.0, 102.0); for(i = 0; i < M; i++) pop[(D * i) + 1] = RandomDouble(33.0, 45.0); for(i = 0; i < M; i++) for(j = 2; j < 5; j++) pop[(D * i) + j] = RandomDouble(27.0, 45.0); break; case 4: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(13.0, 100.0); for(i = 0; i < M; i++) pop[(D * i) + 1] = RandomDouble(0.0, 100.0); break; case 5: for(i = 0; i < M; i++) for(j = 0; j < 10; j++) pop[(D * i) + j] = RandomDouble(-10.0, 10.0); break; case 6: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(0.0, 10.0); break; case 7: for(i = 0; i < M; i++) { for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(1.0, 99.0); for(j = 2; j < 4; j++) pop[(D * i) + j] = RandomDouble(10.0, 200.0); } break; case 8: for(i = 0; i < M; i++) { pop[(D * i) + 0] = RandomDouble(0.1, 2.0); for(j = 1; j < 3; j++) pop[(D * i) + j] = RandomDouble(0.1, 10.0); pop[(D * i) + 3] = RandomDouble(0.1, 2.0); } break; case 9: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(-3.0, 3.0); for(i = 0; i < M; i++) pop[(D * i) + 1] = RandomDouble(-2.0, 2.0); break; case 10: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(-5.0, 5.0); break; case 11: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(-65.536, 65.536); break; case 100: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(-5.0, 10.0); break; case 200: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(-5.0, 5.0); break; case 300: for(i = 0; i < M; i++) for(j = 0; j < 3; j++) pop[(D * i) + j] = RandomDouble(-4.0, 4.0); break; case 400: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(pow(-10.0, 5), pow(10.0, 5)); break; case 500: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(-3.1416, 3.1416); break; case 600: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(-30.0, 30.0); break; case 700: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(0.0, 1.0); break; case 800: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(-400.0, 400.0); break; case 900: for(i = 0; i < M; i++) pop[(D * i) + 0] = RandomDouble(0.0, 1.0); for(i = 0; i < M; i++) pop[(D * i) + 1] = RandomDouble(-30.0, 30.0); break; case 1000: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(0.1, 1.0); break; case 10100: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(0.0, 7.0); break; case 10200: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(-20.0, 20.0); break; case 10300: for(i = 0; i < M; i++){ pop[(D * i) + 0]=RandomDouble((double)(F/r),(double)3.0*(F/r)); pop[(D * i) + 1]=RandomDouble((double)sqrt(2.0)*(F/r),(double)3.0*(F/r)); pop[(D * i) + 2]=RandomDouble((double)sqrt(2.0)*(F/r),(double)3.0*(F/r)); pop[(D * i) + 3]=RandomDouble((double)(F/r),(double)3.0*(F/r)); } break; case 10400: for(i = 0; i < M; i++) for(j = 0; j < 2; j++) pop[(D * i) + j] = RandomDouble(0.1, 1.0); break; case 10500: for(i = 0; i < M; i++){ pop[(D * i) + 0] = RandomDouble(0.0, 1.0); pop[(D * i) + 1] = RandomDouble(-30.0, 30.0); } break; }}unsigned int constraints(double *x, unsigned int fun) { unsigned int i, j,violadas=0; switch(fun){ case 10100: violadas=0; // cout<<" cotz"<<endl; if( 0 < (double)(x[0]/6.0 + x[1] - 13.0/2.0 )) violadas ++; if( 0 < (double)(x[0]/2.0 + x[1] - 15.0/2.0) ) violadas ++; if( 0 < (double)(5.0*x[0] + x[1] - 30.0) ) violadas ++; //cout<<violadas<<endl; return violadas; case 10200: // return 0; //cout<<" violadas++; if( 0 < pow(x[0],2) + pow(x[1],2) - 225 ) violadas++; if( 0 < x[0] - 3*x[1] + 10 ) violadas++; //cout<<"hola"<<endl; return violadas; break; default: return 0; }}double chfun(double *pop, unsigned int fun) { //CONT_FUN++; switch (fun) { case 1: return g01_IEEE(pop); case 2: return g02_IEEE(pop); case 3: return g04_IEEE(pop); case 4: return g06_IEEE(pop); case 5: return g07_IEEE(pop); case 6: return g08_IEEE(pop); case 7: return g01_E(pop); case 8: return g02_E(pop); case 9: return g01_SR(pop); case 10: return g02_SR(pop); case 11: return g03_SR(pop); case 100: return f1_1_mo(pop); case 101: return f2_1_mo(pop); case 200: return f1_2_mo(pop); case 201: return f2_2_mo(pop); case 300: return f1_3_mo(pop); case 301: return f2_3_mo(pop); case 400: return f1_4_mo(pop); case 401: return f2_4_mo(pop); case 500: return f1_5_mo(pop); case 501: return f2_5_mo(pop); case 600: return f1_6_mo(pop); case 601: return f2_6_mo(pop); case 602: return f3_6_mo(pop); case 700: return f1_7_mo(pop); case 701: return f2_7_mo(pop); case 800: return f1_8_mo(pop); case 801: return f2_8_mo(pop); case 802: return f3_8_mo(pop); case 900: return f1_9_mo(pop); case 901: return f2_9_mo(pop); case 1000: return f1_10_mo(pop); case 1001: return f2_10_mo(pop); case 10100: return f1_10100_mo(pop); case 10101: return f2_10100_mo(pop); case 10200: return f1_10200_mo(pop); case 10201: return f2_10200_mo(pop); case 10300: return f1_10300_mo(pop); case 10301: return f2_10300_mo(pop); case 10400: return f1_10400_mo(pop); case 10401: return f2_10400_mo(pop); case 10500: return f1_10500_mo(pop); case 10501: return f2_10500_mo(pop); }return 0;}double chconst(double *pop, unsigned int fun, unsigned int cons) { switch (fun) { case 1: switch(cons) { case 1: return g01_r1(pop); case 2: return g01_r2(pop); case 3: return g01_r3(pop); case 4: return g01_r4(pop); case 5: return g01_r5(pop); case 6: return g01_r6(pop); case 7: return g01_r7(pop); case 8: return g01_r8(pop); case 9: return g01_r9(pop); } case 2: switch(cons) { case 1: return g02_r1(pop); case 2: return g02_r2(pop); } case 3: switch(cons) { case 1: return g04_r1(pop); case 2: return g04_r2(pop); case 3: return g04_r3(pop); case 4: return g04_r4(pop); case 5: return g04_r5(pop); case 6: return g04_r6(pop); } case 4: switch(cons) { case 1: return g06_r1(pop); case 2: return g06_r2(pop); } case 5: switch(cons) { case 1: return g07_r1(pop); case 2: return g07_r2(pop); case 3: return g07_r3(pop); case 4: return g07_r4(pop); case 5: return g07_r5(pop); case 6: return g07_r6(pop); case 7: return g07_r7(pop); case 8: return g07_r8(pop); } case 6: switch(cons) { case 1: return g08_r1(pop); case 2: return g08_r2(pop); } case 7: switch(cons) { case 1: return g01_Er1(pop); case 2: return g01_Er2(pop); case 3: return g01_Er3(pop); case 4: return g01_Er4(pop); } case 8: switch(cons) { case 1: return g02_Er1(pop); case 2: return g02_Er2(pop); case 3: return g02_Er3(pop); case 4: return g02_Er4(pop); case 5: return g02_Er5(pop); case 6: return g02_Er6(pop); case 7: return g02_Er7(pop);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -