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 30000 13 14 #define ETA 1.20 15 #define EPSILON 1.00 16 #define WD 4.00 17 #define MIN_ERR 0.000000001 18 19 #define ON 0.9 20 #define OFF 0.1 21 #define SMAX 15 22 #define SMIN -15 23 #define MAX 0.99995 24 #define MIN 0.00005 25 26 #ifdef _Cdecl 27 #define drand() ((double)(rand()+1)/RAND_MAX-0.5) 28 #else 29 #define drand() ((double)(rand()+1)/RAND_MAX-0.5) 30 #endif 31 32 #define sq(x) (x)*(x) 33 34 double i_lay[CTG][INPUT+1], 35 h_lay[HIDDEN+1], 36 o_lay[OUTPUT], 37 teach[CTG][OUTPUT]; 38 39 double ih_w[INPUT+1][HIDDEN], 40 ho_w[HIDDEN+1][OUTPUT]; 41 42 double h_del[HIDDEN], 43 o_del[OUTPUT]; 44 45 double ih_lw[INPUT+1][HIDDEN], 46 ho_lw[HIDDEN+1][OUTPUT]; 47 48 //extern double sigmoid(); 49 double sigmoid(double s); 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); 147 else if(sm