资源简介
将模拟退火算法应用于神经网络中,可解决神经网络算法易陷入局部极小和收敛速度慢的问题

代码片段和文件信息
// shengjingnet.cpp : 定义控制台应用程序的入口点。
#include “stdafx.h“
#define INput 7 //输入特征参数的种类
#define OUTput 4 //所分类别的个数
#define TrainNum 40 //共多少个训练数据
int t=0;
double EfrontTT0;
#define M pow(float(10)6)*4 //循环次数
#include “backprop.h“
double **traindata;
int class_num[TrainNum];
void Data_Get()
{
traindata=alloc_2d_dbl(TrainNumINput);
char str[1000];
int i=0j;
FILE *f;
char* pNext;
f=fopen(“TrainData.txt““r“);
if(f==NULL)
{
printf(“Errorfile don‘t open\n“);
}
while(!feof(f))
{
fgets(str1000f);
class_num[i]=atoi(str);
pNext=str;
for(j=0;j {
pNext=strchr(pNext+1‘‘);
traindata[i][j]=atof(pNext+1);
}
i++;
}
fclose(f);
}
void Data_Deal(double maxt[INput]double mint[INput])
{
int ij;
for(i=0;i {
maxt[i]=mint[i]=traindata[0][i];
for(j=0;j {
if(maxt[i] {
maxt[i]=traindata[j][i];
}
if(mint[i]>traindata[j][i])
{
mint[i]=traindata[j][i];
}
}
for(j=0;j {
//traindata[j][i]=(traindata[j][i]-mint[i])/(maxt[i]-mint[i]);
traindata[j][i]=2*(traindata[j][i]-mint[i])/(maxt[i]-mint[i])-1;
}
}
}
void output_result(BPNN *newl)
{
double *Nout;
int i;
Nout = (double *) malloc ((unsigned) ((OUTput+1) * sizeof (double)));
if (Nout == NULL) {
printf(“ALLOC_1D_DBL: Couldn‘t allocate array of doubles\n“);
}
int ONE=0ZERO=0;
int NUM;
for(i=1;i<=OUTput;i++)
{
if(newl->output_units[i]<0.5)
{
Nout[i]=0;
}
if(newl->output_units[i]>0.5)
{
Nout[i]=1;
}
if(newl->output_units[i]==0.5)
{
Nout[i]=-1;
}
}
for(i=1;i<=OUTput;i++)
{
if(Nout[i]==1)
{
ONE=ONE+1;
NUM=i;
}
if(Nout[i]==0)
{
ZERO=ZERO+1;
}
if(Nout[i]==-1)
{
printf(“无法判别其所属类别“);
break;
}
}
if(ONE==1 && ZERO>=1)
{
printf(“判断其属于第 %d 类\n“NUM);
}
else
{
printf(“无法判别其所属的类别\n“);
}
free(Nout);
Nout=NULL;
for(i=1;i<=OUTput;i++)
{
printf(“输出为:%3f \n“newl->output_units[i]);
}
}
int _tmain(int argc _TCHAR* argv[])
{
BPNN *net;
BPNN *news;
bpnn_initialize(0);
int ijn;
int hid_num;
double maxs[INput];
double mins[INput];
//hid_num=sqrtf(INput+OUTput)+1; //隐含层神经元个数可调节公式,其中常数可以取1到10之间
hid_num=sqrtf(0.43*INput*OUTput+0.12*OUTput*OUTput+2.54*INput+0.77*OUTput+0.35+0.51);
net=bpnn_create(INputhid_numOUTput);
news = bpnn_internal_create(INputhid_numOUTput);
Data_Get();
Data_Deal(maxsmins);
for(j=0;j {
net->input_units[j+1]=traindata[0][j]; //将训练数据输入神经网络
}
//输入训练数据应该所属的类别
n=class_num[0];
for(j=1;j<=OUTput;j++)
{
if(j==n)
{
net->target[j]=1;
}
else
{
net->target[j]=0;
}
}
if(t==0)
{
simulated_annealing_Init(net);
}
//根据traindata中的数据训练神经网络
while(1)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 88576 2013-06-06 15:59 SA_BPnet_train\Debug\shengjingnet.exe
文件 1242756 2013-06-06 15:59 SA_BPnet_train\Debug\shengjingnet.ilk
文件 1010688 2013-06-06 15:59 SA_BPnet_train\Debug\shengjingnet.pdb
文件 2359296 2013-06-07 09:37 SA_BPnet_train\ipch\shengjingnet-920f2d2f\shengjingnet-53889310.ipch
文件 11877 2013-06-07 09:45 SA_BPnet_train\shengjingnet\backprop.h
文件 1530 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\cl.command.1.tlog
文件 8498 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\CL.read.1.tlog
文件 882 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\CL.write.1.tlog
文件 2 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 2 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 2 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 2 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 2 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 2 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 2500 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 4810 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 944 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\li
文件 420 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\mt.command.1.tlog
文件 350 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\mt.read.1.tlog
文件 350 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\mt.write.1.tlog
文件 590 2013-06-06 11:14 SA_BPnet_train\shengjingnet\Debug\rc.command.1.tlog
文件 322 2013-06-06 11:14 SA_BPnet_train\shengjingnet\Debug\rc.read.1.tlog
文件 330 2013-06-06 11:14 SA_BPnet_train\shengjingnet\Debug\rc.write.1.tlog
文件 406 2013-06-06 11:14 SA_BPnet_train\shengjingnet\Debug\shengjingnet.exe.em
文件 472 2013-06-06 11:14 SA_BPnet_train\shengjingnet\Debug\shengjingnet.exe.em
文件 381 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\shengjingnet.exe.intermediate.manifest
文件 58 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\shengjingnet.lastbuildstate
文件 3308 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\shengjingnet.log
文件 204742 2013-06-06 15:59 SA_BPnet_train\shengjingnet\Debug\shengjingnet.obj
文件 1179648 2013-06-06 11:14 SA_BPnet_train\shengjingnet\Debug\shengjingnet.pch
............此处省略39个文件信息
- 上一篇:FPGA课程设计-硬件乐曲演奏Verilog HDL
- 下一篇:5G网络规划探讨
相关资源
- bp神经网络源代码,可直接运行
- 连续hopfield神经网络解决TSP问题
- Windows异步套接字网络编程
- VC 获得文件属性 获取文件的创建时
- 基于MVC模式的会员管理系统
- 改进的BP神经网络算法
- silicon lab公司的收音IC SI47XX全套开发工
- 读者写者问题(读者优先,写者优先
- MFC程序-碰撞的小球
- vc 柱形图 CBarChart
- 用vc 写的导线测量,针对刚学测绘的
- 用VC 编写的仿QQ聊天室程序源代码
- 栅栏填充算法源码(VC)
- 简单的房屋租赁系统
- .net网站服装销售系统(MVC)
-
ob
jectARX给Auto CAD加工具条 - 基于bp神经网络的表情识别
- blowfish的vc2008工程.rar
- 画图程序MFC/VC/VC CRectTracker 串行化
- capon波束形成算法-VC实现
- 读取串口数据并画实时曲线的VC 程序
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- keil vcom windows 7 64bit 驱动
- vc URL编解码类
- vc编写中国象棋详细源码注释并附有视
- VC 围棋源代码
评论
共有 条评论