2.5 单层感知器 逻辑“或”运算学习算法C++程序

学习算法如下:

1.设置变量和参量:

X(n)=[1,x1(n),x2(n),...,xm(n)]T,为输入向量,或称训练样本。

W(n)=[b(n),w1(n),w2(n),...,wm(n)]T,为权值向量。

……

……见人工神经网络原理及仿真实例 第2版 高隽 25页。

#include<iostream>
using namespace std;
#define N 100 //迭代次数

int main()
{
	long i,x[4][3]={{1,0,0},{1,0,1},{1,1,0},{1,1,1}};
	double w[N][3],m,y,r=0.8,d[4]={0,1,1,1};//目标函数d改为0001即为“与”
	int n=0;
	for(i=0;i<3;i++){
		w[0][i] = 0.5;
	}
	while(n<N-1){
		m = w[n][0]+w[n][1]*x[n%4][1]+w[n][2]*x[n%4][2];
		if(m<0) y=0;
		else	y=1;
		for(i=0;i<3;i++){
			w[n+1][i] = w[n][i]+r*(d[n%4]-y)*x[n%4][i];//改权值
		}
		n++;
	}
	for(i=0;i<3;i++){cout<<w[n][i]<<endl;}
	system("pause");
	
}

  

posted on 2012-03-05 22:14  Samuel Yang  阅读(933)  评论(0编辑  收藏  举报