欢迎来到天天文库
浏览记录
ID:54944735
大小:14.50 KB
页数:3页
时间:2020-04-24
《感知器算法(c语言版).doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include#include#defineC1voidmain(){inti,j,k,N1,N2,x[20][2],s[3],d[20],array[20][4],w[4];//s[]用于记录各点坐标乘积;array[]用于存放将输入点变换后的点printf("感知器算法(两类别问题)");printf("请输入第1类坐标点数N1:");scanf("%d",&N1);printf("请输入第1类各点的坐标:");for(i=0;i2、f("%d%d",&x[i][0],&x[i][1]);}printf("请输入第2类坐标点数N2:");scanf("%d",&N2);printf("请输入第2类各点的坐标:");for(i=0;i3、++)//打印输出输入的点坐标;{printf("输入的第2类坐标点为");printf("{%d,%d}",x[i+N1][0],x[i+N2][1]);}*/printf("输入的第1类点为:");for(j=0;j4、<(N1+N2);j++){array[j][0]=2;array[j][1]=(-1)*x[j][0];array[j][2]=(-1)*x[j][1];array[j][3]=-1;printf("(%d,%d,%d)",array[j][1],array[j][2],array[j][3]);}printf("取参数C为:%d",C);printf("初始向量为:");w[0]=1;w[1]=0;w[2]=0;w[3]=0;printf("{%d,%d,%d}",w[1],w[2],w[3]);do{for(i=0;i<(N1+N2)5、;i++){for(j=0;j<3;j++)s[j]=array[i][j+1]*w[j+1];d[i]=s[0]+s[1]+s[2];if(d[i]<=0){for(k=0;k<3;k++)w[k+1]=C*array[i][k+1]+w[k+1];}}for(j=(N1+N2-1);j>=0;j--)k=(d[j]<=0)6、7、(d[j+1]<=0);}while(k);//while((d[0]<=0)8、9、(d[1]<=0)10、11、(d[2]<=0)12、13、(d[3]<=0));printf("优化后的向量w=:(");for(k=0;k<3;k++)prin14、tf("%d",w[k+1]);printf(")");}//程序缺点:不能动态分配内存大小,导致内存使用浪费;
2、f("%d%d",&x[i][0],&x[i][1]);}printf("请输入第2类坐标点数N2:");scanf("%d",&N2);printf("请输入第2类各点的坐标:");for(i=0;i3、++)//打印输出输入的点坐标;{printf("输入的第2类坐标点为");printf("{%d,%d}",x[i+N1][0],x[i+N2][1]);}*/printf("输入的第1类点为:");for(j=0;j4、<(N1+N2);j++){array[j][0]=2;array[j][1]=(-1)*x[j][0];array[j][2]=(-1)*x[j][1];array[j][3]=-1;printf("(%d,%d,%d)",array[j][1],array[j][2],array[j][3]);}printf("取参数C为:%d",C);printf("初始向量为:");w[0]=1;w[1]=0;w[2]=0;w[3]=0;printf("{%d,%d,%d}",w[1],w[2],w[3]);do{for(i=0;i<(N1+N2)5、;i++){for(j=0;j<3;j++)s[j]=array[i][j+1]*w[j+1];d[i]=s[0]+s[1]+s[2];if(d[i]<=0){for(k=0;k<3;k++)w[k+1]=C*array[i][k+1]+w[k+1];}}for(j=(N1+N2-1);j>=0;j--)k=(d[j]<=0)6、7、(d[j+1]<=0);}while(k);//while((d[0]<=0)8、9、(d[1]<=0)10、11、(d[2]<=0)12、13、(d[3]<=0));printf("优化后的向量w=:(");for(k=0;k<3;k++)prin14、tf("%d",w[k+1]);printf(")");}//程序缺点:不能动态分配内存大小,导致内存使用浪费;
3、++)//打印输出输入的点坐标;{printf("输入的第2类坐标点为");printf("{%d,%d}",x[i+N1][0],x[i+N2][1]);}*/printf("输入的第1类点为:");for(j=0;j4、<(N1+N2);j++){array[j][0]=2;array[j][1]=(-1)*x[j][0];array[j][2]=(-1)*x[j][1];array[j][3]=-1;printf("(%d,%d,%d)",array[j][1],array[j][2],array[j][3]);}printf("取参数C为:%d",C);printf("初始向量为:");w[0]=1;w[1]=0;w[2]=0;w[3]=0;printf("{%d,%d,%d}",w[1],w[2],w[3]);do{for(i=0;i<(N1+N2)5、;i++){for(j=0;j<3;j++)s[j]=array[i][j+1]*w[j+1];d[i]=s[0]+s[1]+s[2];if(d[i]<=0){for(k=0;k<3;k++)w[k+1]=C*array[i][k+1]+w[k+1];}}for(j=(N1+N2-1);j>=0;j--)k=(d[j]<=0)6、7、(d[j+1]<=0);}while(k);//while((d[0]<=0)8、9、(d[1]<=0)10、11、(d[2]<=0)12、13、(d[3]<=0));printf("优化后的向量w=:(");for(k=0;k<3;k++)prin14、tf("%d",w[k+1]);printf(")");}//程序缺点:不能动态分配内存大小,导致内存使用浪费;
4、<(N1+N2);j++){array[j][0]=2;array[j][1]=(-1)*x[j][0];array[j][2]=(-1)*x[j][1];array[j][3]=-1;printf("(%d,%d,%d)",array[j][1],array[j][2],array[j][3]);}printf("取参数C为:%d",C);printf("初始向量为:");w[0]=1;w[1]=0;w[2]=0;w[3]=0;printf("{%d,%d,%d}",w[1],w[2],w[3]);do{for(i=0;i<(N1+N2)
5、;i++){for(j=0;j<3;j++)s[j]=array[i][j+1]*w[j+1];d[i]=s[0]+s[1]+s[2];if(d[i]<=0){for(k=0;k<3;k++)w[k+1]=C*array[i][k+1]+w[k+1];}}for(j=(N1+N2-1);j>=0;j--)k=(d[j]<=0)
6、
7、(d[j+1]<=0);}while(k);//while((d[0]<=0)
8、
9、(d[1]<=0)
10、
11、(d[2]<=0)
12、
13、(d[3]<=0));printf("优化后的向量w=:(");for(k=0;k<3;k++)prin
14、tf("%d",w[k+1]);printf(")");}//程序缺点:不能动态分配内存大小,导致内存使用浪费;
此文档下载收益归作者所有