IMParams BSO::decode(bitset<chromoLength> codes) { int buffer[chromoLength]; for(int i= 0;i<chromoLength;i++) buffer[i] = codes.at(i); int param1[] = {0,0,0,0,0}; int param2[] = {0,0,0,0}; int param3[] = {0,0,0,0,0}; int param4[] = {0,0,0,0}; int param5[] = {0,0,0,0,0,0}; int param6[] = {0,0,0,0,0,0}; int param7[] = {0,0,0,0,0,0}; int param8[] = {0,0,0,0}; int param9[] = {0,0,0,0}; int param10[] = {0,0,0,0}; int offset = 0; for(int i=offset;i<offset+5; i++) { param1[i-offset] = buffer[i]; } offset +=5; for(int i=offset;i<offset+4; i++) { param2[i-offset] = buffer[i]; } offset +=4; for(int i=offset;i<offset+5; i++) { param3[i-offset] = buffer[i]; } offset +=5; for(int i=offset;i<offset+4; i++){ param4[i-offset] = buffer[i]; } offset +=4; for(int i=offset;i<offset+6; i++){ param5[i-offset] = buffer[i]; } offset +=6; for(int i=offset;i<offset+6; i++){ param6[i-offset] = buffer[i]; } offset +=6; for(int i=offset;i<offset+6; i++){ param7[i-offset] = buffer[i]; } offset +=6; for(int i=offset;i<offset+4; i++){ param8[i-offset] = buffer[i]; } offset +=4; for(int i=offset;i<offset+4; i++){ param9[i-offset] = buffer[i]; } offset +=4; for(int i=offset;i<offset+4; i++){ param10[i-offset] = buffer[i]; } currentParams.TankValue = decode(param1, 5); currentParams.TankRadius = decode(param2, 4); currentParams.MarineValue = decode(param3, 5); currentParams.MarineRadius = decode(param4, 4); currentParams.A = decode(param5, 6); currentParams.B = decode(param6, 6); currentParams.C = decode(param7, 6); currentParams.l = decode(param8, 4); currentParams.m = decode(param9, 4); currentParams.n = decode(param10, 4); return currentParams; }