prisma megan
/
ga-mppt_sim_1gen
main.cpp@0:3670c5137ff2, 2021-08-02 (annotated)
- Committer:
- PrismaMegan
- Date:
- Mon Aug 02 04:51:34 2021 +0000
- Revision:
- 0:3670c5137ff2
MPPT with GA
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
PrismaMegan | 0:3670c5137ff2 | 1 | #include "mbed.h" |
PrismaMegan | 0:3670c5137ff2 | 2 | #include <math.h> |
PrismaMegan | 0:3670c5137ff2 | 3 | |
PrismaMegan | 0:3670c5137ff2 | 4 | AnalogIn analog_value(A1); |
PrismaMegan | 0:3670c5137ff2 | 5 | |
PrismaMegan | 0:3670c5137ff2 | 6 | DigitalOut led(LED1); |
PrismaMegan | 0:3670c5137ff2 | 7 | |
PrismaMegan | 0:3670c5137ff2 | 8 | const int nGen = 10; |
PrismaMegan | 0:3670c5137ff2 | 9 | const double nGen1 = nGen; |
PrismaMegan | 0:3670c5137ff2 | 10 | const int nIndividu = 8; |
PrismaMegan | 0:3670c5137ff2 | 11 | const int nGenerasi = 10; |
PrismaMegan | 0:3670c5137ff2 | 12 | const float kSil = 0.75; |
PrismaMegan | 0:3670c5137ff2 | 13 | const float kMut = 0.5; |
PrismaMegan | 0:3670c5137ff2 | 14 | |
PrismaMegan | 0:3670c5137ff2 | 15 | int kromInduk[nIndividu][nGen]; |
PrismaMegan | 0:3670c5137ff2 | 16 | int kromKode[nIndividu][nGen]; |
PrismaMegan | 0:3670c5137ff2 | 17 | float indeksGen[nIndividu][1]; |
PrismaMegan | 0:3670c5137ff2 | 18 | float kromEval[nIndividu][nGen+2]; |
PrismaMegan | 0:3670c5137ff2 | 19 | float kromUrut[nIndividu][nGen+2]; |
PrismaMegan | 0:3670c5137ff2 | 20 | int r[nIndividu/2]; |
PrismaMegan | 0:3670c5137ff2 | 21 | bool kromSel[nIndividu/2][nGen]; |
PrismaMegan | 0:3670c5137ff2 | 22 | bool kromSilInduk[nIndividu/2][nGen]; |
PrismaMegan | 0:3670c5137ff2 | 23 | bool kromSilAnak[nIndividu/2][nGen]; |
PrismaMegan | 0:3670c5137ff2 | 24 | bool kromMut[nIndividu][nGen]; |
PrismaMegan | 0:3670c5137ff2 | 25 | int arrayku[nGen]; |
PrismaMegan | 0:3670c5137ff2 | 26 | const int nMut = kMut *nGen; |
PrismaMegan | 0:3670c5137ff2 | 27 | int chGen[nMut]; |
PrismaMegan | 0:3670c5137ff2 | 28 | float kromUngGen[nGenerasi][nGen+1]; |
PrismaMegan | 0:3670c5137ff2 | 29 | |
PrismaMegan | 0:3670c5137ff2 | 30 | int h,i,k,a,j,l,m,n,b,c,x; |
PrismaMegan | 0:3670c5137ff2 | 31 | float d,e; |
PrismaMegan | 0:3670c5137ff2 | 32 | const int bawah = pow(2,nGen1)- 1; |
PrismaMegan | 0:3670c5137ff2 | 33 | |
PrismaMegan | 0:3670c5137ff2 | 34 | int xmin = 0; |
PrismaMegan | 0:3670c5137ff2 | 35 | float xmax = 22.1; |
PrismaMegan | 0:3670c5137ff2 | 36 | |
PrismaMegan | 0:3670c5137ff2 | 37 | void bangkitGen(){ |
PrismaMegan | 0:3670c5137ff2 | 38 | |
PrismaMegan | 0:3670c5137ff2 | 39 | printf("\n1. Pembangkitan Kromosom Induk\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 40 | |
PrismaMegan | 0:3670c5137ff2 | 41 | for(m=0;m<nIndividu;m++){ |
PrismaMegan | 0:3670c5137ff2 | 42 | //Here I'd like to print each address field of each structure to the screen |
PrismaMegan | 0:3670c5137ff2 | 43 | printf("Kromosom ke-%d : ", m); |
PrismaMegan | 0:3670c5137ff2 | 44 | for (n=0;n<nGen;n++){ |
PrismaMegan | 0:3670c5137ff2 | 45 | bool s = rand() % 2; |
PrismaMegan | 0:3670c5137ff2 | 46 | kromInduk[m][n] = s; |
PrismaMegan | 0:3670c5137ff2 | 47 | printf("%i",kromInduk[m][n]); |
PrismaMegan | 0:3670c5137ff2 | 48 | } |
PrismaMegan | 0:3670c5137ff2 | 49 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 50 | } |
PrismaMegan | 0:3670c5137ff2 | 51 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 52 | } |
PrismaMegan | 0:3670c5137ff2 | 53 | |
PrismaMegan | 0:3670c5137ff2 | 54 | void koding(){ |
PrismaMegan | 0:3670c5137ff2 | 55 | printf("\n2. Pengkodean kromosom\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 56 | |
PrismaMegan | 0:3670c5137ff2 | 57 | for (m=0; m<nIndividu; m++){ |
PrismaMegan | 0:3670c5137ff2 | 58 | printf("%d : ", m); |
PrismaMegan | 0:3670c5137ff2 | 59 | float binerTotal = 0.00; |
PrismaMegan | 0:3670c5137ff2 | 60 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 61 | kromKode[m][n] = kromInduk[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 62 | x = kromKode[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 63 | binerTotal += x * pow(2,nGen1 - (n + 1)); |
PrismaMegan | 0:3670c5137ff2 | 64 | |
PrismaMegan | 0:3670c5137ff2 | 65 | printf("%i",kromInduk[m][n]); |
PrismaMegan | 0:3670c5137ff2 | 66 | } |
PrismaMegan | 0:3670c5137ff2 | 67 | float c = binerTotal /bawah; |
PrismaMegan | 0:3670c5137ff2 | 68 | indeksGen[m][1] = (xmin + (xmax - xmin)) * c; |
PrismaMegan | 0:3670c5137ff2 | 69 | d = indeksGen[m][1]; |
PrismaMegan | 0:3670c5137ff2 | 70 | printf(", %.0f, %.2f", binerTotal, d); |
PrismaMegan | 0:3670c5137ff2 | 71 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 72 | } |
PrismaMegan | 0:3670c5137ff2 | 73 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 74 | } |
PrismaMegan | 0:3670c5137ff2 | 75 | |
PrismaMegan | 0:3670c5137ff2 | 76 | void evaluasi(){ |
PrismaMegan | 0:3670c5137ff2 | 77 | printf("\n3. Evaluasi\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 78 | bool f; |
PrismaMegan | 0:3670c5137ff2 | 79 | float h; |
PrismaMegan | 0:3670c5137ff2 | 80 | for (m=0; m<nIndividu; m++){ |
PrismaMegan | 0:3670c5137ff2 | 81 | printf("%d : ", m); |
PrismaMegan | 0:3670c5137ff2 | 82 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 83 | kromEval[m][n] = kromKode[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 84 | f = kromEval[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 85 | printf("%i",f); |
PrismaMegan | 0:3670c5137ff2 | 86 | } |
PrismaMegan | 0:3670c5137ff2 | 87 | kromEval[m][nGen] = indeksGen[m][1]; |
PrismaMegan | 0:3670c5137ff2 | 88 | kromEval[m][nGen+1] = indeksGen[m][1] * 4.0; |
PrismaMegan | 0:3670c5137ff2 | 89 | h = kromEval[m][nGen+1]; |
PrismaMegan | 0:3670c5137ff2 | 90 | printf(",%.2f", h); |
PrismaMegan | 0:3670c5137ff2 | 91 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 92 | } |
PrismaMegan | 0:3670c5137ff2 | 93 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 94 | } |
PrismaMegan | 0:3670c5137ff2 | 95 | |
PrismaMegan | 0:3670c5137ff2 | 96 | void maks(){ |
PrismaMegan | 0:3670c5137ff2 | 97 | int i; |
PrismaMegan | 0:3670c5137ff2 | 98 | float maks = 0.00; |
PrismaMegan | 0:3670c5137ff2 | 99 | int imaks = 0; |
PrismaMegan | 0:3670c5137ff2 | 100 | float val; |
PrismaMegan | 0:3670c5137ff2 | 101 | for (i=0; i<nIndividu; i++){ |
PrismaMegan | 0:3670c5137ff2 | 102 | val = kromUrut[i][nGen+1]; |
PrismaMegan | 0:3670c5137ff2 | 103 | if (val > maks){ |
PrismaMegan | 0:3670c5137ff2 | 104 | maks = val; |
PrismaMegan | 0:3670c5137ff2 | 105 | imaks = i; |
PrismaMegan | 0:3670c5137ff2 | 106 | } |
PrismaMegan | 0:3670c5137ff2 | 107 | else{ |
PrismaMegan | 0:3670c5137ff2 | 108 | maks = maks; |
PrismaMegan | 0:3670c5137ff2 | 109 | imaks = imaks; |
PrismaMegan | 0:3670c5137ff2 | 110 | } |
PrismaMegan | 0:3670c5137ff2 | 111 | } |
PrismaMegan | 0:3670c5137ff2 | 112 | r[l] = imaks; |
PrismaMegan | 0:3670c5137ff2 | 113 | printf("%i, %.2f: ", imaks, maks); |
PrismaMegan | 0:3670c5137ff2 | 114 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 115 | int ag = kromUrut[imaks][n]; |
PrismaMegan | 0:3670c5137ff2 | 116 | kromSel[l][n] = ag; |
PrismaMegan | 0:3670c5137ff2 | 117 | kromUrut[imaks][nGen+1] = 0; |
PrismaMegan | 0:3670c5137ff2 | 118 | printf("%i",ag); |
PrismaMegan | 0:3670c5137ff2 | 119 | } |
PrismaMegan | 0:3670c5137ff2 | 120 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 121 | } |
PrismaMegan | 0:3670c5137ff2 | 122 | |
PrismaMegan | 0:3670c5137ff2 | 123 | void urut(){ |
PrismaMegan | 0:3670c5137ff2 | 124 | printf("\n4. Seleksi\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 125 | for (m=0; m<nIndividu; m++){ |
PrismaMegan | 0:3670c5137ff2 | 126 | for (n=0; n<=(nGen+1); n++){ |
PrismaMegan | 0:3670c5137ff2 | 127 | kromUrut[m][n] = kromEval[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 128 | } |
PrismaMegan | 0:3670c5137ff2 | 129 | } |
PrismaMegan | 0:3670c5137ff2 | 130 | |
PrismaMegan | 0:3670c5137ff2 | 131 | for (l=0; l<(nIndividu/2); l++){ |
PrismaMegan | 0:3670c5137ff2 | 132 | maks(); |
PrismaMegan | 0:3670c5137ff2 | 133 | } |
PrismaMegan | 0:3670c5137ff2 | 134 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 135 | } |
PrismaMegan | 0:3670c5137ff2 | 136 | |
PrismaMegan | 0:3670c5137ff2 | 137 | void silang(){ |
PrismaMegan | 0:3670c5137ff2 | 138 | printf("\n5. Penyilangan\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 139 | printf("\nInduk\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 140 | |
PrismaMegan | 0:3670c5137ff2 | 141 | for (m=0; m<nIndividu/2; m++){ |
PrismaMegan | 0:3670c5137ff2 | 142 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 143 | int sx = kromSel[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 144 | printf("%i",sx); |
PrismaMegan | 0:3670c5137ff2 | 145 | kromSilInduk[m][n] = sx; |
PrismaMegan | 0:3670c5137ff2 | 146 | } |
PrismaMegan | 0:3670c5137ff2 | 147 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 148 | } |
PrismaMegan | 0:3670c5137ff2 | 149 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 150 | printf("\nAnak\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 151 | int pSil = kSil *nGen; |
PrismaMegan | 0:3670c5137ff2 | 152 | for (m=0; m<nIndividu/4; m++){ |
PrismaMegan | 0:3670c5137ff2 | 153 | for (int ma=0; ma<pSil; ma++){ |
PrismaMegan | 0:3670c5137ff2 | 154 | int ms1 = kromSilInduk[m*2][ma]; |
PrismaMegan | 0:3670c5137ff2 | 155 | kromSilAnak[m*2][ma] = ms1; |
PrismaMegan | 0:3670c5137ff2 | 156 | int ms2 = kromSilInduk[(m*2)+1][ma]; |
PrismaMegan | 0:3670c5137ff2 | 157 | kromSilAnak[(m*2)+1][ma] = ms2; |
PrismaMegan | 0:3670c5137ff2 | 158 | } |
PrismaMegan | 0:3670c5137ff2 | 159 | for (int mb=pSil; mb<=nGen; mb++){ |
PrismaMegan | 0:3670c5137ff2 | 160 | int mb1 = kromSilInduk[(m*2)+1][mb]; |
PrismaMegan | 0:3670c5137ff2 | 161 | kromSilAnak[m*2][mb] = mb1; |
PrismaMegan | 0:3670c5137ff2 | 162 | int mb2 = kromSilInduk[m*2][mb]; |
PrismaMegan | 0:3670c5137ff2 | 163 | kromSilAnak[(m*2)+1][mb] = mb2; |
PrismaMegan | 0:3670c5137ff2 | 164 | } |
PrismaMegan | 0:3670c5137ff2 | 165 | } |
PrismaMegan | 0:3670c5137ff2 | 166 | for (int ma=0; ma<pSil; ma++){ |
PrismaMegan | 0:3670c5137ff2 | 167 | int ms1 = kromSilInduk[0][ma]; |
PrismaMegan | 0:3670c5137ff2 | 168 | kromSilAnak[0][ma] = ms1; |
PrismaMegan | 0:3670c5137ff2 | 169 | int ms2 = kromSilInduk[1][ma]; |
PrismaMegan | 0:3670c5137ff2 | 170 | kromSilAnak[1][ma] = ms2; |
PrismaMegan | 0:3670c5137ff2 | 171 | } |
PrismaMegan | 0:3670c5137ff2 | 172 | for (int mb=pSil; mb<=nGen; mb++){ |
PrismaMegan | 0:3670c5137ff2 | 173 | int mb1 = kromSilInduk[1][mb]; |
PrismaMegan | 0:3670c5137ff2 | 174 | kromSilAnak[0][mb] = mb1; |
PrismaMegan | 0:3670c5137ff2 | 175 | int mb2 = kromSilInduk[0][mb]; |
PrismaMegan | 0:3670c5137ff2 | 176 | kromSilAnak[1][mb] = mb2; |
PrismaMegan | 0:3670c5137ff2 | 177 | } |
PrismaMegan | 0:3670c5137ff2 | 178 | |
PrismaMegan | 0:3670c5137ff2 | 179 | for (m=0; m<nIndividu/2; m++){ |
PrismaMegan | 0:3670c5137ff2 | 180 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 181 | int cb1 = kromSilAnak[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 182 | printf("%i",cb1); |
PrismaMegan | 0:3670c5137ff2 | 183 | } |
PrismaMegan | 0:3670c5137ff2 | 184 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 185 | } |
PrismaMegan | 0:3670c5137ff2 | 186 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 187 | } |
PrismaMegan | 0:3670c5137ff2 | 188 | |
PrismaMegan | 0:3670c5137ff2 | 189 | void genArray(){ |
PrismaMegan | 0:3670c5137ff2 | 190 | for (int r=0; r<nGen; r++){ |
PrismaMegan | 0:3670c5137ff2 | 191 | arrayku[r] = r; |
PrismaMegan | 0:3670c5137ff2 | 192 | } |
PrismaMegan | 0:3670c5137ff2 | 193 | } |
PrismaMegan | 0:3670c5137ff2 | 194 | |
PrismaMegan | 0:3670c5137ff2 | 195 | void pickRandom(){ |
PrismaMegan | 0:3670c5137ff2 | 196 | genArray(); |
PrismaMegan | 0:3670c5137ff2 | 197 | for (int i=0; i<(nGen-nMut); i++){ |
PrismaMegan | 0:3670c5137ff2 | 198 | int ame = (nGen-1)-i; |
PrismaMegan | 0:3670c5137ff2 | 199 | int choosen = rand() % ame; |
PrismaMegan | 0:3670c5137ff2 | 200 | arrayku[choosen] = 0; |
PrismaMegan | 0:3670c5137ff2 | 201 | |
PrismaMegan | 0:3670c5137ff2 | 202 | for (int l=choosen; l<nGen; l++){ |
PrismaMegan | 0:3670c5137ff2 | 203 | int m = arrayku[l+1]; |
PrismaMegan | 0:3670c5137ff2 | 204 | arrayku[l] = m; |
PrismaMegan | 0:3670c5137ff2 | 205 | } |
PrismaMegan | 0:3670c5137ff2 | 206 | |
PrismaMegan | 0:3670c5137ff2 | 207 | } |
PrismaMegan | 0:3670c5137ff2 | 208 | |
PrismaMegan | 0:3670c5137ff2 | 209 | printf("Nomor gen termutasi: "); |
PrismaMegan | 0:3670c5137ff2 | 210 | for (int q=0; q<nMut; q++){ |
PrismaMegan | 0:3670c5137ff2 | 211 | chGen[q] = arrayku[q]; |
PrismaMegan | 0:3670c5137ff2 | 212 | int p = chGen[q]; |
PrismaMegan | 0:3670c5137ff2 | 213 | printf("%i,",p); |
PrismaMegan | 0:3670c5137ff2 | 214 | } |
PrismaMegan | 0:3670c5137ff2 | 215 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 216 | } |
PrismaMegan | 0:3670c5137ff2 | 217 | |
PrismaMegan | 0:3670c5137ff2 | 218 | void mutasi(){ |
PrismaMegan | 0:3670c5137ff2 | 219 | printf("\n6. Mutasi\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 220 | pickRandom(); |
PrismaMegan | 0:3670c5137ff2 | 221 | |
PrismaMegan | 0:3670c5137ff2 | 222 | for (m=0; m<nIndividu/2; m++){ |
PrismaMegan | 0:3670c5137ff2 | 223 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 224 | int sy = kromSilInduk[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 225 | kromMut[m][n] = sy; |
PrismaMegan | 0:3670c5137ff2 | 226 | } |
PrismaMegan | 0:3670c5137ff2 | 227 | } |
PrismaMegan | 0:3670c5137ff2 | 228 | for (m=nIndividu/2; m<=nIndividu; m++){ |
PrismaMegan | 0:3670c5137ff2 | 229 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 230 | int sh = kromSilAnak[m - (nIndividu/2)][n]; |
PrismaMegan | 0:3670c5137ff2 | 231 | kromMut[m][n] = sh; |
PrismaMegan | 0:3670c5137ff2 | 232 | } |
PrismaMegan | 0:3670c5137ff2 | 233 | } |
PrismaMegan | 0:3670c5137ff2 | 234 | |
PrismaMegan | 0:3670c5137ff2 | 235 | for (m=0; m<nIndividu; m++){ |
PrismaMegan | 0:3670c5137ff2 | 236 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 237 | } |
PrismaMegan | 0:3670c5137ff2 | 238 | } |
PrismaMegan | 0:3670c5137ff2 | 239 | |
PrismaMegan | 0:3670c5137ff2 | 240 | for (int s=0; s<nIndividu; s++){ |
PrismaMegan | 0:3670c5137ff2 | 241 | for (int t=0; t<nMut; t++){ |
PrismaMegan | 0:3670c5137ff2 | 242 | int u = chGen[t]; |
PrismaMegan | 0:3670c5137ff2 | 243 | if (kromMut[s][u]==1){ |
PrismaMegan | 0:3670c5137ff2 | 244 | kromMut[s][u] = 0; |
PrismaMegan | 0:3670c5137ff2 | 245 | } |
PrismaMegan | 0:3670c5137ff2 | 246 | else{ |
PrismaMegan | 0:3670c5137ff2 | 247 | kromMut[s][u] = 1; |
PrismaMegan | 0:3670c5137ff2 | 248 | } |
PrismaMegan | 0:3670c5137ff2 | 249 | } |
PrismaMegan | 0:3670c5137ff2 | 250 | } |
PrismaMegan | 0:3670c5137ff2 | 251 | |
PrismaMegan | 0:3670c5137ff2 | 252 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 253 | |
PrismaMegan | 0:3670c5137ff2 | 254 | for (int v=0; v<nIndividu; v++){ |
PrismaMegan | 0:3670c5137ff2 | 255 | for (int x=0; x<nGen; x++){ |
PrismaMegan | 0:3670c5137ff2 | 256 | int wa = kromMut[v][x]; |
PrismaMegan | 0:3670c5137ff2 | 257 | printf("%i",wa); |
PrismaMegan | 0:3670c5137ff2 | 258 | } |
PrismaMegan | 0:3670c5137ff2 | 259 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 260 | } |
PrismaMegan | 0:3670c5137ff2 | 261 | } |
PrismaMegan | 0:3670c5137ff2 | 262 | |
PrismaMegan | 0:3670c5137ff2 | 263 | int main() |
PrismaMegan | 0:3670c5137ff2 | 264 | { |
PrismaMegan | 0:3670c5137ff2 | 265 | bangkitGen(); |
PrismaMegan | 0:3670c5137ff2 | 266 | printf("\nKromosom unggul setiap generasi :\n\r"); |
PrismaMegan | 0:3670c5137ff2 | 267 | for (i=0; i<1; i++){ |
PrismaMegan | 0:3670c5137ff2 | 268 | koding(); |
PrismaMegan | 0:3670c5137ff2 | 269 | evaluasi(); |
PrismaMegan | 0:3670c5137ff2 | 270 | urut(); |
PrismaMegan | 0:3670c5137ff2 | 271 | silang(); |
PrismaMegan | 0:3670c5137ff2 | 272 | mutasi(); |
PrismaMegan | 0:3670c5137ff2 | 273 | |
PrismaMegan | 0:3670c5137ff2 | 274 | for (m=0; m<nIndividu; m++){ |
PrismaMegan | 0:3670c5137ff2 | 275 | for (n=0; n<nGen; n++){ |
PrismaMegan | 0:3670c5137ff2 | 276 | kromInduk[m][n] = kromMut[m][n]; |
PrismaMegan | 0:3670c5137ff2 | 277 | } |
PrismaMegan | 0:3670c5137ff2 | 278 | } |
PrismaMegan | 0:3670c5137ff2 | 279 | koding(); |
PrismaMegan | 0:3670c5137ff2 | 280 | evaluasi(); |
PrismaMegan | 0:3670c5137ff2 | 281 | urut(); |
PrismaMegan | 0:3670c5137ff2 | 282 | |
PrismaMegan | 0:3670c5137ff2 | 283 | printf("Generasi ke-%d : ", i); |
PrismaMegan | 0:3670c5137ff2 | 284 | for (m=0; m<nGen; m++){ |
PrismaMegan | 0:3670c5137ff2 | 285 | kromUngGen[i][m] = kromSel[0][m]; |
PrismaMegan | 0:3670c5137ff2 | 286 | printf("%.0f",kromUngGen[i][m]); |
PrismaMegan | 0:3670c5137ff2 | 287 | } |
PrismaMegan | 0:3670c5137ff2 | 288 | kromUngGen[i][nGen+1] = kromEval[r[0]][nGen+1]; |
PrismaMegan | 0:3670c5137ff2 | 289 | float kromUngVal = kromUngGen[i][nGen+1]; |
PrismaMegan | 0:3670c5137ff2 | 290 | printf(" : %.2f", kromUngVal); |
PrismaMegan | 0:3670c5137ff2 | 291 | printf(" \n\r"); |
PrismaMegan | 0:3670c5137ff2 | 292 | } |
PrismaMegan | 0:3670c5137ff2 | 293 | } |