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 10000 13 14 #define ETA 1.50 15 #define EPSILON 1.00 16 #define WD 2.00 17 #define MIN_ERR 0.00001 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 extern double sigmoid(); 46 47 main(argc,argv) 48 int argc; 49 char **argv; 50 { 51 int i,j,ite,ctg; 52 double err,sum; 53 srand((int)time((long *)0)); 54 55 /* ExOR Problem */ 56 i_lay[0][0]=OFF; i_lay[0][1]=OFF; i_lay[0][2]=ON; teach[0][0]=OFF; 57 i_lay[1][0]=ON; i_lay[1][1]=OFF; i_lay[1][2]=ON; teach[1][0]=ON; 58 i_lay[2][0]=OFF; i_lay[2][1]=ON; i_lay[2][2]=ON; teach[2][0]=ON; 59 i_lay[3][0]=ON; i_lay[3][1]=ON; i_lay[3][2]=ON; teach[3][0]=OFF; 60 61 h_lay[HIDDEN]=ON; 62 63 for(j=0;jSMAX) return(MAX); 131 else if(sm