for(int i = 0; i < 16; i++)
{
for(int j = 0; j < 60; j++)
{
weights[i][j] = -1 + rand() / ( RAND_MAX / ( 1 + 1 ) + 0.1 );
}
}
//---- test strings for fitness --------------------------
for(int i = 0; i < 16; i++)
{
toterr = 0;
for (pat = 1; pat < 4; pat++)
{
patpixselect();
cout << endl << "pattern: " << pat << endl;
cout << endl << patpix[0] << endl;
getch();
OUTA = 1/(1 + pow(e, -((weights[i][0] * patpix[0]) + (weights[i][1] * patpix[1])
+ (weights[i][2] * patpix[2] ) + (weights[i][3] * patpix[3]) + (weights[i][4] * patpix[4])
+ ( weights[i][5] * patpix[5]) + (weights[i][6] * patpix[6]) + (weights[i][7] * patpix[7])
+ (weights[i][8] * patpix[8]))));
cout << "OUTA " << OUTA << endl;
OUTB = 1/(1 + pow(e, -((weights[i][9] * patpix[0]) + (weights[i][10] * patpix[1])
+ (weights[i][11] * patpix[2] ) + (weights[i][12] * patpix[3]) + (weights[i][13] * patpix[4])
+ ( weights[i][14] * patpix[5]) + (weights[i][15] * patpix[6]) + (weights[i][16] * patpix[7])
+ (weights[i][17] * patpix[8]))));
cout << "OUTB " << OUTB << endl;
OUTC = 1/(1 + pow(e, -((weights[i][18] * patpix[0]) + (weights[i][19] * patpix[1])
+ (weights[i][20] * patpix[2] ) + (weights[i][21] * patpix[3]) + (weights[i][22] * patpix[4])
+ ( weights[i][23] * patpix[5]) + (weights[i][24] * patpix[6]) + (weights[i][25] * patpix[7])
+ (weights[i][26] * patpix[8]))));
cout << "OUTC " << OUTC << endl;
OUTD = 1/(1 + pow(e, -((weights[i][27] * patpix[0]) + (weights[i][28] * patpix[1])
+ (weights[i][29] * patpix[2] ) + (weights[i][30] * patpix[3]) + (weights[i][31] * patpix[4])
+ ( weights[i][32] * patpix[5]) + (weights[i][33] * patpix[6]) + (weights[i][34] * patpix[7])
+ (weights[i][35] * patpix[8]))));
cout << "OUTD " << OUTD << endl;
OUTE = 1/(1 + pow(e, -((weights[i][36] * patpix[0]) + (weights[i][37] * patpix[1])
+ (weights[i][38] * patpix[2] ) + (weights[i][39] * patpix[3]) + (weights[i][40] * patpix[4])
+ ( weights[i][41] * patpix[5]) + (weights[i][42] * patpix[6]) + (weights[i][43] * patpix[7])
+ (weights[i][44] * patpix[8]))));
cout << "OUTE " << OUTE << endl;
OUTX = 1/(1 + pow(e, -((weights[i][45] * OUTA) + (weights[i][46] * OUTB)
+ (weights[i][47] * OUTC ) + (weights[i][48] * OUTD) + (weights[i][49] * OUTE))));
cout << "OUTX " << OUTX << endl;
OUTY = 1/(1 + pow(e, -((weights[i][50] * OUTA) + (weights[i][51] * OUTB)
+ (weights[i][52] * OUTC ) + (weights[i][53] * OUTD) + (weights[i][54] * OUTE))));
cout << "OUTY " << OUTY << endl;
OUTZ = 1/(1 + pow(e, -((weights[i][55] * OUTA) + (weights[i][56] * OUTB)
+ (weights[i][57] * OUTC ) + (weights[i][58] * OUTD) + (weights[i][59] * OUTE))));
cout << "OUTZ " << OUTZ << endl;
// ------------- calculate errors -(fitness)--------------------------------------------------
cout << endl << endl << "target 1 is " << target1 << endl
<< "target 2 is " << target2 << endl << "target3 is " << target3;
ERRX = (OUTX)*(1 - OUTX)*(target1 - OUTX ); // error of out put x
ERRX = pow(ERRX,2);
ERRX = sqrt(ERRX);
ERRY = (OUTY)*(1 - OUTY)*(target2 - OUTY ); // err of output Y
ERRY = pow(ERRY,2);
ERRY = sqrt(ERRY);
ERRZ = (OUTZ)*(1 - OUTZ)*(target3 - OUTZ ); // err of output z
ERRZ = pow(ERRZ,2);
ERRZ = sqrt(ERRZ);
err = ( ERRX + ERRY + ERRZ ); // total error of 1 pattern for 1 string
cout << endl << "total error for 1 pattern for 1 string " << err << endl;
toterr += err; // --- error for all patterns for 1 string
cout << endl << "total error for all patterns for 1 string " << toterr << endl;
}
error[i] = toterr; // put each error for each string in array to match with each string.
cout << endl << "total error for string " << i << " is " << error[i] << endl ;
}
getch();
return 0;