//时间:2010年3月1日9:39:57 //作者:冷却 //说明:一个非常简单的ANN,用于判断0~9的奇偶性 #include <ctime> #include <iostream> using namespace std; int domain = 5; int M[10] = {0}; //相当于神经元 //用于训练神经网络的数据 int data_train_1[10][2] = {{0,0},{1,1},{2,0},{3,1},{4,0},{5,1},{6,0},{7,1},{8,0},{9,1}}; //初始化权值 void iniM() { srand(time(0)); for ( int n=0; n<10; ++n ) { //M[n] = domain; M[n] = rand()%11; } } //通过神经元来判断奇偶性 int judge(int data) { if ( M[data] > domain ) return 1; //大于domain即表示为奇数。注:这完全是由自己规定的,但整体要保持一致。 else if ( M[data] < domain ) return 0; //小于domain即表示偶数。注:同上 else return -1; } //训练神经网络 void train( int (*data_train)[10][2] ) { int n=0; int err=0; do { err = 0; for ( n=0; n<10; ++n ) { if ( judge((*data_train)[n][0]) != (*data_train)[n][1] ) { ++err; if ( 0 == (*data_train)[n][1] ) { --M[n]; //减小权值。注:因为我规定小于domain为偶数,而现在由于把偶数识别成了奇数,所以要减小权值,这样下次识别正确的概率就高了。 } else if ( 1 == (*data_train)[