prisma megan / Mbed 2 deprecated ga-mppt_sim_fullgen_sens_copy

Dependencies:   mbed TextLCD

Committer:
PrismaMegan
Date:
Mon Aug 02 04:53:52 2021 +0000
Revision:
0:862d3839389c
MPPT with GA, simulation full gen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PrismaMegan 0:862d3839389c 1 #include "mbed.h"
PrismaMegan 0:862d3839389c 2 #include <math.h>
PrismaMegan 0:862d3839389c 3 #include "stdio.h"
PrismaMegan 0:862d3839389c 4
PrismaMegan 0:862d3839389c 5 AnalogIn arusIn(A0);
PrismaMegan 0:862d3839389c 6 AnalogIn tegIn(A1);
PrismaMegan 0:862d3839389c 7 AnalogIn arusOut(A2);
PrismaMegan 0:862d3839389c 8 AnalogIn tegOut(A3);
PrismaMegan 0:862d3839389c 9 AnalogIn suhuPv(A4);
PrismaMegan 0:862d3839389c 10 AnalogIn suhuCore(A5);
PrismaMegan 0:862d3839389c 11
PrismaMegan 0:862d3839389c 12 DigitalOut led(LED1);
PrismaMegan 0:862d3839389c 13
PrismaMegan 0:862d3839389c 14 const int nGen = 24;
PrismaMegan 0:862d3839389c 15 const double nGen1 = nGen;
PrismaMegan 0:862d3839389c 16 const int nIndividu = 50;
PrismaMegan 0:862d3839389c 17 const int nGenerasi = 40;
PrismaMegan 0:862d3839389c 18 const float kSil = 0.75;
PrismaMegan 0:862d3839389c 19 const float kMut = 0.5;
PrismaMegan 0:862d3839389c 20
PrismaMegan 0:862d3839389c 21 int kromInduk[nIndividu][nGen];
PrismaMegan 0:862d3839389c 22 int kromKode[nIndividu][nGen];
PrismaMegan 0:862d3839389c 23 float indeksGen[nIndividu][1];
PrismaMegan 0:862d3839389c 24 float kromEval[nIndividu][nGen+2];
PrismaMegan 0:862d3839389c 25 float kromUrut[nIndividu][nGen+2];
PrismaMegan 0:862d3839389c 26 int r[nIndividu/2];
PrismaMegan 0:862d3839389c 27 bool kromSel[nIndividu/2][nGen];
PrismaMegan 0:862d3839389c 28 bool kromSilInduk[nIndividu/2][nGen];
PrismaMegan 0:862d3839389c 29 bool kromSilAnak[nIndividu/2][nGen];
PrismaMegan 0:862d3839389c 30 bool kromMut[nIndividu][nGen];
PrismaMegan 0:862d3839389c 31 int arrayku[nGen];
PrismaMegan 0:862d3839389c 32 const int nMut = kMut *nGen;
PrismaMegan 0:862d3839389c 33 int chGen[nMut];
PrismaMegan 0:862d3839389c 34 float kromUngGen[nGenerasi][nGen+1];
PrismaMegan 0:862d3839389c 35 int kromUng[nGen];
PrismaMegan 0:862d3839389c 36 float kromUngVal2;
PrismaMegan 0:862d3839389c 37
PrismaMegan 0:862d3839389c 38 int h,i,k,a,j,l,m,n,b,c,x;
PrismaMegan 0:862d3839389c 39 float d,e;
PrismaMegan 0:862d3839389c 40 const int bawah = pow(2,nGen1)- 1;
PrismaMegan 0:862d3839389c 41
PrismaMegan 0:862d3839389c 42 int xmin = 0;
PrismaMegan 0:862d3839389c 43 float xmax = 22.1;
PrismaMegan 0:862d3839389c 44
PrismaMegan 0:862d3839389c 45 void bangkitGen(){
PrismaMegan 0:862d3839389c 46
PrismaMegan 0:862d3839389c 47 //printf("\n1. Pembangkitan Kromosom Induk\n\r");
PrismaMegan 0:862d3839389c 48
PrismaMegan 0:862d3839389c 49 for(m=0;m<nIndividu;m++){
PrismaMegan 0:862d3839389c 50 //Here I'd like to print each address field of each structure to the screen
PrismaMegan 0:862d3839389c 51 //printf("Kromosom ke-%d : ", m);
PrismaMegan 0:862d3839389c 52 for (n=0;n<nGen;n++){
PrismaMegan 0:862d3839389c 53 bool s = rand() % 2;
PrismaMegan 0:862d3839389c 54 kromInduk[m][n] = s;
PrismaMegan 0:862d3839389c 55 //printf("%i",kromInduk[m][n]);
PrismaMegan 0:862d3839389c 56 }
PrismaMegan 0:862d3839389c 57 //printf(" \n\r");
PrismaMegan 0:862d3839389c 58 }
PrismaMegan 0:862d3839389c 59 //printf(" \n\r");
PrismaMegan 0:862d3839389c 60 }
PrismaMegan 0:862d3839389c 61
PrismaMegan 0:862d3839389c 62 void koding(){
PrismaMegan 0:862d3839389c 63 //printf("\n2. Pengkodean kromosom\n\r");
PrismaMegan 0:862d3839389c 64
PrismaMegan 0:862d3839389c 65 for (m=0; m<nIndividu; m++){
PrismaMegan 0:862d3839389c 66 //printf("%d : ", m);
PrismaMegan 0:862d3839389c 67 float binerTotal = 0.00;
PrismaMegan 0:862d3839389c 68 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 69 kromKode[m][n] = kromInduk[m][n];
PrismaMegan 0:862d3839389c 70 x = kromKode[m][n];
PrismaMegan 0:862d3839389c 71 binerTotal += x * pow(2,nGen1 - (n + 1));
PrismaMegan 0:862d3839389c 72
PrismaMegan 0:862d3839389c 73 //printf("%i",kromInduk[m][n]);
PrismaMegan 0:862d3839389c 74 }
PrismaMegan 0:862d3839389c 75 float c = binerTotal /bawah;
PrismaMegan 0:862d3839389c 76 indeksGen[m][1] = (xmin + (xmax - xmin)) * c;
PrismaMegan 0:862d3839389c 77 d = indeksGen[m][1];
PrismaMegan 0:862d3839389c 78 //printf(", %.0f, %.2f", binerTotal, d);
PrismaMegan 0:862d3839389c 79 //printf(" \n\r");
PrismaMegan 0:862d3839389c 80 }
PrismaMegan 0:862d3839389c 81 //printf(" \n\r");
PrismaMegan 0:862d3839389c 82 }
PrismaMegan 0:862d3839389c 83
PrismaMegan 0:862d3839389c 84 void evaluasi(){
PrismaMegan 0:862d3839389c 85 //printf("\n3. Evaluasi\n\r");
PrismaMegan 0:862d3839389c 86 bool f;
PrismaMegan 0:862d3839389c 87 float h;
PrismaMegan 0:862d3839389c 88 for (m=0; m<nIndividu; m++){
PrismaMegan 0:862d3839389c 89 //printf("%d : ", m);
PrismaMegan 0:862d3839389c 90 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 91 kromEval[m][n] = kromKode[m][n];
PrismaMegan 0:862d3839389c 92 f = kromEval[m][n];
PrismaMegan 0:862d3839389c 93 //printf("%i",f);
PrismaMegan 0:862d3839389c 94 }
PrismaMegan 0:862d3839389c 95
PrismaMegan 0:862d3839389c 96 float arusOut1;
PrismaMegan 0:862d3839389c 97 arusOut1 = arusOut.read() *10;
PrismaMegan 0:862d3839389c 98 float tegOut1;
PrismaMegan 0:862d3839389c 99 tegOut1 = tegOut.read() *12;
PrismaMegan 0:862d3839389c 100 float pOut;
PrismaMegan 0:862d3839389c 101 pOut = arusOut1 *tegOut1;
PrismaMegan 0:862d3839389c 102 kromEval[m][nGen] = indeksGen[m][1];
PrismaMegan 0:862d3839389c 103 kromEval[m][nGen+1] = pOut;
PrismaMegan 0:862d3839389c 104 h = kromEval[m][nGen+1];
PrismaMegan 0:862d3839389c 105 //printf(",%.2f", h);
PrismaMegan 0:862d3839389c 106 //printf(" \n\r");
PrismaMegan 0:862d3839389c 107 }
PrismaMegan 0:862d3839389c 108 //printf(" \n\r");
PrismaMegan 0:862d3839389c 109 }
PrismaMegan 0:862d3839389c 110
PrismaMegan 0:862d3839389c 111 void maks(){
PrismaMegan 0:862d3839389c 112 int i;
PrismaMegan 0:862d3839389c 113 float maks = 0.00;
PrismaMegan 0:862d3839389c 114 int imaks = 0;
PrismaMegan 0:862d3839389c 115 float val;
PrismaMegan 0:862d3839389c 116 for (i=0; i<nIndividu; i++){
PrismaMegan 0:862d3839389c 117 val = kromUrut[i][nGen+1];
PrismaMegan 0:862d3839389c 118 if (val > maks){
PrismaMegan 0:862d3839389c 119 maks = val;
PrismaMegan 0:862d3839389c 120 imaks = i;
PrismaMegan 0:862d3839389c 121 }
PrismaMegan 0:862d3839389c 122 else{
PrismaMegan 0:862d3839389c 123 maks = maks;
PrismaMegan 0:862d3839389c 124 imaks = imaks;
PrismaMegan 0:862d3839389c 125 }
PrismaMegan 0:862d3839389c 126 }
PrismaMegan 0:862d3839389c 127 r[l] = imaks;
PrismaMegan 0:862d3839389c 128 //printf("%i, %.2f: ", imaks, maks);
PrismaMegan 0:862d3839389c 129 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 130 int ag = kromUrut[imaks][n];
PrismaMegan 0:862d3839389c 131 kromSel[l][n] = ag;
PrismaMegan 0:862d3839389c 132 kromUrut[imaks][nGen+1] = 0;
PrismaMegan 0:862d3839389c 133 //printf("%i",ag);
PrismaMegan 0:862d3839389c 134 }
PrismaMegan 0:862d3839389c 135 //printf(" \n\r");
PrismaMegan 0:862d3839389c 136 }
PrismaMegan 0:862d3839389c 137
PrismaMegan 0:862d3839389c 138 void urut(){
PrismaMegan 0:862d3839389c 139 //printf("\n4. Seleksi\n\r");
PrismaMegan 0:862d3839389c 140 for (m=0; m<nIndividu; m++){
PrismaMegan 0:862d3839389c 141 for (n=0; n<=(nGen+1); n++){
PrismaMegan 0:862d3839389c 142 kromUrut[m][n] = kromEval[m][n];
PrismaMegan 0:862d3839389c 143 }
PrismaMegan 0:862d3839389c 144 }
PrismaMegan 0:862d3839389c 145
PrismaMegan 0:862d3839389c 146 for (l=0; l<(nIndividu/2); l++){
PrismaMegan 0:862d3839389c 147 maks();
PrismaMegan 0:862d3839389c 148 }
PrismaMegan 0:862d3839389c 149 //printf(" \n\r");
PrismaMegan 0:862d3839389c 150 }
PrismaMegan 0:862d3839389c 151
PrismaMegan 0:862d3839389c 152 void silang(){
PrismaMegan 0:862d3839389c 153 //printf("\n5. Penyilangan\n\r");
PrismaMegan 0:862d3839389c 154 //printf("\nInduk\n\r");
PrismaMegan 0:862d3839389c 155
PrismaMegan 0:862d3839389c 156 for (m=0; m<nIndividu/2; m++){
PrismaMegan 0:862d3839389c 157 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 158 int sx = kromSel[m][n];
PrismaMegan 0:862d3839389c 159 //printf("%i",sx);
PrismaMegan 0:862d3839389c 160 kromSilInduk[m][n] = sx;
PrismaMegan 0:862d3839389c 161 }
PrismaMegan 0:862d3839389c 162 //printf(" \n\r");
PrismaMegan 0:862d3839389c 163 }
PrismaMegan 0:862d3839389c 164 //printf(" \n\r");
PrismaMegan 0:862d3839389c 165 //printf("\nAnak\n\r");
PrismaMegan 0:862d3839389c 166 int pSil = kSil *nGen;
PrismaMegan 0:862d3839389c 167 for (m=0; m<nIndividu/4; m++){
PrismaMegan 0:862d3839389c 168 for (int ma=0; ma<pSil; ma++){
PrismaMegan 0:862d3839389c 169 int ms1 = kromSilInduk[m*2][ma];
PrismaMegan 0:862d3839389c 170 kromSilAnak[m*2][ma] = ms1;
PrismaMegan 0:862d3839389c 171 int ms2 = kromSilInduk[(m*2)+1][ma];
PrismaMegan 0:862d3839389c 172 kromSilAnak[(m*2)+1][ma] = ms2;
PrismaMegan 0:862d3839389c 173 }
PrismaMegan 0:862d3839389c 174 for (int mb=pSil; mb<=nGen; mb++){
PrismaMegan 0:862d3839389c 175 int mb1 = kromSilInduk[(m*2)+1][mb];
PrismaMegan 0:862d3839389c 176 kromSilAnak[m*2][mb] = mb1;
PrismaMegan 0:862d3839389c 177 int mb2 = kromSilInduk[m*2][mb];
PrismaMegan 0:862d3839389c 178 kromSilAnak[(m*2)+1][mb] = mb2;
PrismaMegan 0:862d3839389c 179 }
PrismaMegan 0:862d3839389c 180 }
PrismaMegan 0:862d3839389c 181 for (int ma=0; ma<pSil; ma++){
PrismaMegan 0:862d3839389c 182 int ms1 = kromSilInduk[0][ma];
PrismaMegan 0:862d3839389c 183 kromSilAnak[0][ma] = ms1;
PrismaMegan 0:862d3839389c 184 int ms2 = kromSilInduk[1][ma];
PrismaMegan 0:862d3839389c 185 kromSilAnak[1][ma] = ms2;
PrismaMegan 0:862d3839389c 186 }
PrismaMegan 0:862d3839389c 187 for (int mb=pSil; mb<=nGen; mb++){
PrismaMegan 0:862d3839389c 188 int mb1 = kromSilInduk[1][mb];
PrismaMegan 0:862d3839389c 189 kromSilAnak[0][mb] = mb1;
PrismaMegan 0:862d3839389c 190 int mb2 = kromSilInduk[0][mb];
PrismaMegan 0:862d3839389c 191 kromSilAnak[1][mb] = mb2;
PrismaMegan 0:862d3839389c 192 }
PrismaMegan 0:862d3839389c 193
PrismaMegan 0:862d3839389c 194 for (m=0; m<nIndividu/2; m++){
PrismaMegan 0:862d3839389c 195 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 196 int cb1 = kromSilAnak[m][n];
PrismaMegan 0:862d3839389c 197 //printf("%i",cb1);
PrismaMegan 0:862d3839389c 198 }
PrismaMegan 0:862d3839389c 199 //printf(" \n\r");
PrismaMegan 0:862d3839389c 200 }
PrismaMegan 0:862d3839389c 201 //printf(" \n\r");
PrismaMegan 0:862d3839389c 202 }
PrismaMegan 0:862d3839389c 203
PrismaMegan 0:862d3839389c 204 void genArray(){
PrismaMegan 0:862d3839389c 205 for (int r=0; r<nGen; r++){
PrismaMegan 0:862d3839389c 206 arrayku[r] = r;
PrismaMegan 0:862d3839389c 207 }
PrismaMegan 0:862d3839389c 208 }
PrismaMegan 0:862d3839389c 209
PrismaMegan 0:862d3839389c 210 void pickRandom(){
PrismaMegan 0:862d3839389c 211 genArray();
PrismaMegan 0:862d3839389c 212 for (int i=0; i<(nGen-nMut); i++){
PrismaMegan 0:862d3839389c 213 int ame = (nGen-1)-i;
PrismaMegan 0:862d3839389c 214 int choosen = rand() % ame;
PrismaMegan 0:862d3839389c 215 arrayku[choosen] = 0;
PrismaMegan 0:862d3839389c 216
PrismaMegan 0:862d3839389c 217 for (int l=choosen; l<nGen; l++){
PrismaMegan 0:862d3839389c 218 int m = arrayku[l+1];
PrismaMegan 0:862d3839389c 219 arrayku[l] = m;
PrismaMegan 0:862d3839389c 220 }
PrismaMegan 0:862d3839389c 221
PrismaMegan 0:862d3839389c 222 }
PrismaMegan 0:862d3839389c 223
PrismaMegan 0:862d3839389c 224 //printf("Nomor gen termutasi: ");
PrismaMegan 0:862d3839389c 225 for (int q=0; q<nMut; q++){
PrismaMegan 0:862d3839389c 226 chGen[q] = arrayku[q];
PrismaMegan 0:862d3839389c 227 int p = chGen[q];
PrismaMegan 0:862d3839389c 228 //printf("%i,",p);
PrismaMegan 0:862d3839389c 229 }
PrismaMegan 0:862d3839389c 230 //printf(" \n\r");
PrismaMegan 0:862d3839389c 231 }
PrismaMegan 0:862d3839389c 232
PrismaMegan 0:862d3839389c 233 void mutasi(){
PrismaMegan 0:862d3839389c 234 //printf("\n6. Mutasi\n\r");
PrismaMegan 0:862d3839389c 235 pickRandom();
PrismaMegan 0:862d3839389c 236
PrismaMegan 0:862d3839389c 237 for (m=0; m<nIndividu/2; m++){
PrismaMegan 0:862d3839389c 238 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 239 int sy = kromSilInduk[m][n];
PrismaMegan 0:862d3839389c 240 kromMut[m][n] = sy;
PrismaMegan 0:862d3839389c 241 }
PrismaMegan 0:862d3839389c 242 }
PrismaMegan 0:862d3839389c 243 for (m=nIndividu/2; m<=nIndividu; m++){
PrismaMegan 0:862d3839389c 244 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 245 int sh = kromSilAnak[m - (nIndividu/2)][n];
PrismaMegan 0:862d3839389c 246 kromMut[m][n] = sh;
PrismaMegan 0:862d3839389c 247 }
PrismaMegan 0:862d3839389c 248 }
PrismaMegan 0:862d3839389c 249
PrismaMegan 0:862d3839389c 250 for (m=0; m<nIndividu; m++){
PrismaMegan 0:862d3839389c 251 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 252 }
PrismaMegan 0:862d3839389c 253 }
PrismaMegan 0:862d3839389c 254
PrismaMegan 0:862d3839389c 255 for (int s=0; s<nIndividu; s++){
PrismaMegan 0:862d3839389c 256 for (int t=0; t<nMut; t++){
PrismaMegan 0:862d3839389c 257 int u = chGen[t];
PrismaMegan 0:862d3839389c 258 if (kromMut[s][u]==1){
PrismaMegan 0:862d3839389c 259 kromMut[s][u] = 0;
PrismaMegan 0:862d3839389c 260 }
PrismaMegan 0:862d3839389c 261 else{
PrismaMegan 0:862d3839389c 262 kromMut[s][u] = 1;
PrismaMegan 0:862d3839389c 263 }
PrismaMegan 0:862d3839389c 264 }
PrismaMegan 0:862d3839389c 265 }
PrismaMegan 0:862d3839389c 266
PrismaMegan 0:862d3839389c 267 printf(" \n\r");
PrismaMegan 0:862d3839389c 268
PrismaMegan 0:862d3839389c 269 for (int v=0; v<nIndividu; v++){
PrismaMegan 0:862d3839389c 270 for (int x=0; x<nGen; x++){
PrismaMegan 0:862d3839389c 271 int wa = kromMut[v][x];
PrismaMegan 0:862d3839389c 272 //printf("%i",wa);
PrismaMegan 0:862d3839389c 273 }
PrismaMegan 0:862d3839389c 274 //printf(" \n\r");
PrismaMegan 0:862d3839389c 275 }
PrismaMegan 0:862d3839389c 276 }
PrismaMegan 0:862d3839389c 277
PrismaMegan 0:862d3839389c 278 void maksGen(){
PrismaMegan 0:862d3839389c 279 float maks = 0.00;
PrismaMegan 0:862d3839389c 280 int imaks = 0;
PrismaMegan 0:862d3839389c 281 float val;
PrismaMegan 0:862d3839389c 282 for (i=0; i<nGenerasi; i++){
PrismaMegan 0:862d3839389c 283 val = kromUngGen[i][nGen];
PrismaMegan 0:862d3839389c 284 if (val > maks){
PrismaMegan 0:862d3839389c 285 maks = val;
PrismaMegan 0:862d3839389c 286 imaks = i;
PrismaMegan 0:862d3839389c 287 }
PrismaMegan 0:862d3839389c 288 else{
PrismaMegan 0:862d3839389c 289 maks = maks;
PrismaMegan 0:862d3839389c 290 imaks = imaks;
PrismaMegan 0:862d3839389c 291 }
PrismaMegan 0:862d3839389c 292 }
PrismaMegan 0:862d3839389c 293 printf("Generasi ke- %i\n\r", imaks);
PrismaMegan 0:862d3839389c 294 printf("Nilai fitness : %.2f\n\r", maks);
PrismaMegan 0:862d3839389c 295 printf("Kromosom : ");
PrismaMegan 0:862d3839389c 296 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 297 int ag = kromUngGen[imaks][n];
PrismaMegan 0:862d3839389c 298 kromUng[n] = ag;
PrismaMegan 0:862d3839389c 299 kromUrut[imaks][nGen] = 0;
PrismaMegan 0:862d3839389c 300 printf("%i", ag);
PrismaMegan 0:862d3839389c 301 }
PrismaMegan 0:862d3839389c 302 printf(" \n\r");
PrismaMegan 0:862d3839389c 303 float binerTotal = 0.00;
PrismaMegan 0:862d3839389c 304 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 305 x = kromUng[n];
PrismaMegan 0:862d3839389c 306 binerTotal += x * pow(2,nGen1 - (n + 1));
PrismaMegan 0:862d3839389c 307 }
PrismaMegan 0:862d3839389c 308 float c = binerTotal /bawah;
PrismaMegan 0:862d3839389c 309 float vRep = (xmin + (xmax - xmin)) * c;
PrismaMegan 0:862d3839389c 310 printf("Nilai representasi : %.2f\n\r", vRep);
PrismaMegan 0:862d3839389c 311 }
PrismaMegan 0:862d3839389c 312
PrismaMegan 0:862d3839389c 313 void urutGen(){
PrismaMegan 0:862d3839389c 314 printf(" \n\r");
PrismaMegan 0:862d3839389c 315 printf("\nKromosom unggul tercapai pada : \n\r");
PrismaMegan 0:862d3839389c 316 for (m=0; m<nGenerasi; m++){
PrismaMegan 0:862d3839389c 317 for (n=0; n<=(nGen); n++){
PrismaMegan 0:862d3839389c 318 kromUrut[m][n] = kromUngGen[m][n];
PrismaMegan 0:862d3839389c 319 }
PrismaMegan 0:862d3839389c 320 }
PrismaMegan 0:862d3839389c 321 maksGen();
PrismaMegan 0:862d3839389c 322 }
PrismaMegan 0:862d3839389c 323
PrismaMegan 0:862d3839389c 324 int main()
PrismaMegan 0:862d3839389c 325 {
PrismaMegan 0:862d3839389c 326 printf("\n----------ALGORITMA GENETIKA - MPPT----------\n\r");
PrismaMegan 0:862d3839389c 327 float kromUngVal;
PrismaMegan 0:862d3839389c 328
PrismaMegan 0:862d3839389c 329 float suhuPv1;
PrismaMegan 0:862d3839389c 330 suhuPv1 = suhuPv.read();
PrismaMegan 0:862d3839389c 331 float suhuCore1;
PrismaMegan 0:862d3839389c 332 suhuCore1 = suhuCore.read();
PrismaMegan 0:862d3839389c 333 printf("\nSuhu PV : %.2f\n\r", suhuPv1);
PrismaMegan 0:862d3839389c 334 printf("Suhu Core : %.2f\n\r", suhuCore1);
PrismaMegan 0:862d3839389c 335
PrismaMegan 0:862d3839389c 336 bangkitGen();
PrismaMegan 0:862d3839389c 337 printf("\nKromosom unggul setiap generasi :\n\r");
PrismaMegan 0:862d3839389c 338 for (i=0; i<nGenerasi; i++){
PrismaMegan 0:862d3839389c 339 led = 1;
PrismaMegan 0:862d3839389c 340 koding();
PrismaMegan 0:862d3839389c 341 evaluasi();
PrismaMegan 0:862d3839389c 342 urut();
PrismaMegan 0:862d3839389c 343 silang();
PrismaMegan 0:862d3839389c 344 mutasi();
PrismaMegan 0:862d3839389c 345 led = 0;
PrismaMegan 0:862d3839389c 346
PrismaMegan 0:862d3839389c 347 for (m=0; m<nIndividu; m++){
PrismaMegan 0:862d3839389c 348 for (n=0; n<nGen; n++){
PrismaMegan 0:862d3839389c 349 kromInduk[m][n] = kromMut[m][n];
PrismaMegan 0:862d3839389c 350 }
PrismaMegan 0:862d3839389c 351 }
PrismaMegan 0:862d3839389c 352 koding();
PrismaMegan 0:862d3839389c 353 evaluasi();
PrismaMegan 0:862d3839389c 354 urut();
PrismaMegan 0:862d3839389c 355
PrismaMegan 0:862d3839389c 356 printf(" Generasi ke-%d : ", i);
PrismaMegan 0:862d3839389c 357 for (m=0; m<nGen; m++){
PrismaMegan 0:862d3839389c 358 kromUngGen[i][m] = kromSel[0][m];
PrismaMegan 0:862d3839389c 359 printf("%.0f",kromUngGen[i][m]);
PrismaMegan 0:862d3839389c 360 }
PrismaMegan 0:862d3839389c 361 kromUngVal = kromEval[r[0]][nGen+1];
PrismaMegan 0:862d3839389c 362 kromUngGen[i][nGen] = kromUngVal;
PrismaMegan 0:862d3839389c 363
PrismaMegan 0:862d3839389c 364 kromUngVal2 = kromUngGen[i][nGen];
PrismaMegan 0:862d3839389c 365 printf(" : %.2f", kromUngVal2);
PrismaMegan 0:862d3839389c 366 printf(" \r");
PrismaMegan 0:862d3839389c 367
PrismaMegan 0:862d3839389c 368 }
PrismaMegan 0:862d3839389c 369 urutGen();
PrismaMegan 0:862d3839389c 370 }