-
大小: 2.37MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-01
- 語言: 其他
- 標簽: VC??神經(jīng)網(wǎng)絡??模擬退火??
資源簡介
將模擬退火算法應用于神經(jīng)網(wǎng)絡中,可解決神經(jīng)網(wǎng)絡算法易陷入局部極小和收斂速度慢的問題

代碼片段和文件信息
//?shengjingnet.cpp?:?定義控制臺應用程序的入口點。
#include?“stdafx.h“
#define?INput?7?????//輸入特征參數(shù)的種類
#define?OUTput?4?????//所分類別的個數(shù)
#define?TrainNum?40??//共多少個訓練數(shù)據(jù)
int?t=0;
double?EfrontTT0;
#define?M??pow(float(10)6)*4?//循環(huán)次數(shù)
#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;?//隱含層神經(jīng)元個數(shù)可調(diào)節(jié)公式,其中常數(shù)可以取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];??//將訓練數(shù)據(jù)輸入神經(jīng)網(wǎng)絡
}
//輸入訓練數(shù)據(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);
}
????//根據(jù)traindata中的數(shù)據(jù)訓練神經(jīng)網(wǎng)絡
????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個文件信息
評論
共有 條評論