终于搞定了,输出结果完全正确,运行训练次数竟然有几万次!汗!(适合普通BP算法和改进型BP[带缓冲项]算法)//训练样本大概是这些(每组前三个为in样本数据后面为out结果)://////////////////(期望:)//()-----------------------------------------分割线-----------------------------------------#include""#include""#include""#include""#include""#defineN8/*学****样本个数(测试样本个数)*/#defineIN3/*输入层神经元数目*/#defineHN2/*隐层神经元数目*/#defineON1/*输出层神经元数目*/floatP[IN];/*单个样本输入数据*/floatT[ON];/*单个样本教师数据*/floatW[HN][IN];/*输入层至隐层权值*/floatV[ON][HN];/*隐层至输出层权值*/floatX[HN];/*隐层的输入*/floatY[ON];/*输出层的输入*/floatH[HN];/*隐层的输出*/floatO[ON];/*输出层的输出*/floatYU_HN[HN];/*隐层的阈值*/floatYU_ON[ON];/*输出层的阈值*/floaterr_m[N];/*第m个样本的总误差*/floata;/*输出层至隐层学****效率*/floatb;/*隐层至输入层学****效率*/floatalpha; /*/动量因子,改进型bp算法使用*/floatd_err[ON];/*δk*/floate_err[HN];/*δj*/FILE*fp;/*定义一个放学****样本的结构*/struct{floatinput[IN];floatteach[ON]; }Study_Data[N];/*定义一个放测试样本的结构*/struct{floatinput[IN];floatexpect[ON]; }Test_Data[N];/*改进型bp算法用来保存每次计算的权值*/floatold_W[HN][IN];floatold_V[ON][HN];intStart_Show(){clrscr();printf("\n ***********************\n");printf(" * etouse *\n");printf(" * thisprogramof *\n");printf(" * calculatingtheBP*\n");printf(" * model! *\n");printf(" * Happyeveryday! *\n");printf(" ***********************\n");printf("\n\nBeforestarting,pleasereadthefollowscarefully:\n\n");printf(" TheprogramofBPcanstudyitselffornomorethan200000times.\nAndsurpassingthenumber,theprogramwillbeendedbyitselfin\npreventingrunninginfinitelybecauseoferror!\n");printf("\n\n\n");printf("Nowpressanykeytostart...\n");getch();clrscr();}intEnd_Show(){printf("\n\n---------------------------------------------------\n");printf("essfully!\n\nPressanykeytoexit!\n\n");printf("\n ***********************\n");printf("
BP算法C语言实现 来自淘豆网www.taodocs.com转载请标明出处.