1 #include 2 #include 3 #include 4 #include 5 6 #define LAYER 3 7 #define INPUT 2 8 #define HIDDEN 2 9 #define OUTPUT 1 10 #define CTG 4 11 12 #define ITERATIONS 100000 13 14 #define ETA 1.50 15 #define EPSILON 1.00 16 #define ALPHA 0.90 17 #define WD 2.00 18 #define MIN_ERR 0.0001 19 20 #define ON 0.9 21 #define OFF 0.1 22 #define SMAX 15 23 #define SMIN -15 24 #define MAX 0.99995 25 #define MIN 0.00005 26 27 #ifdef _Cdecl 28 #define drand() ((double)(rand()+1)/RAND_MAX-0.5) 29 #else 30 #define drand() ((double)(rand()+1)/RAND_MAX-0.5) 31 #endif 32 33 #define sq(x) (x)*(x) 34 35 double i_lay[CTG][INPUT+1], 36 h_lay[HIDDEN+1], 37 o_lay[OUTPUT], 38 teach[CTG][OUTPUT]; 39 40 double ih_w[INPUT+1][HIDDEN], 41 ho_w[HIDDEN+1][OUTPUT]; 42 43 double h_del[HIDDEN+1], 44 o_del[OUTPUT]; 45 46 double ih_dw[INPUT+1][HIDDEN], 47 ho_dw[HIDDEN+1][OUTPUT]; 48 49 extern double sigmoid(); 50 51 main(argc,argv) 52 int argc; 53 char **argv; 54 { 55 int i,j,ite,ctg; 56 double err,sum; 57 srand((int)time((long *)0)); 58 59 /* ExOR Problem */ 60 i_lay[0][0]=OFF; i_lay[0][1]=OFF; i_lay[0][2]=ON; teach[0][0]=OFF; 61 i_lay[1][0]=ON; i_lay[1][1]=OFF; i_lay[1][2]=ON; teach[1][0]=ON; 62 i_lay[2][0]=OFF; i_lay[2][1]=ON; i_lay[2][2]=ON; teach[2][0]=ON; 63 i_lay[3][0]=ON; i_lay[3][1]=ON; i_lay[3][2]=ON; teach[3][0]=OFF; 64 65 h_lay[HIDDEN]=ON; 66 67 for(j=0;jSMAX) return(MAX); 141 else if(sm