亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nn-1.cpp

?? 分別運用遺傳算法和神經(jīng)網(wǎng)絡求解函數(shù)的程序代碼
?? CPP
字號:
// Neural Networks
// Written by Microsoft Visual C++
// Copyright by UTLab at Tsinghua University

#include "math.h"
#include "stdlib.h"
#include "stdio.h"
#include "conio.h"
#include "UTLab.h"

#define N 4     // number of input neurons (decision variables)
#define H 10     // number of hidden neurons
#define O 1     // number of output neurons
#define D 3000  // number of training data
#define SIMU_PRINT_NUMBER 100

static double BOUND[N+O+1][2], WH[H+1][N+1], WO[O+1][H+1];
static void   Simu(double x[D+1][N+1], double y[D+1][O+1]);
static void   Input_Output(double x[N+1], double y[O+1]);
static void   Train(double original_x[D+1][N+1], double original_y[D+1][O+1],
			  double standard_x[D+1][N+1], double standard_y[D+1][O+1]);
static void   Standarlize(double original_x[D+1][N+1], double original_y[D+1][O+1],
			  double standard_x[D+1][N+1], double standard_y[D+1][O+1]);
static void   BPA(double standard_x[D+1][N+1], double standard_y[D+1][O+1]);
static void   Init_NN(void);
static void   NN(double x[N+1], double y[O+1]);

static void Input_Output(double x[N+1], double y[O+1])
{
   int i;
   double pi=3.1415926;

   for(i=1; i<=N; i++) x[i]=myu(0,2*pi);

   y[1]=sin(x[1])+sin(x[2])+sin(x[3])+sin(x[4]);
}


int main( void )
{
   double x[D+1][N+1], y[D+1][O+1], standard_x[D+1][N+1], standard_y[D+1][O+1];

   srand(100);
   Simu(x,y);
   Standarlize(x,y,standard_x,standard_y);
   Train(x,y,standard_x,standard_y);

  
   return 1;
}

static void BPA(double x[D+1][N+1],double y[D+1][O+1])
{	
	
	double E0 = 0.001;
    double EE0 = 0.001;
	double TOLERANCE=0.0001;// *((N+1+O)*H+O);
	int    i,j,k,step=0;
	double ALPHA=0.05;
	double BETA=4./3;
	double ETA=0.5;
	double MU=1.;
	double DETA_WH[H+1][N+1],DETA_WO[O+1][H+1];
	double E_WO[O+1],E_WH[H+1],h[H+1],NN_y[O+1];
	double e[O+1],lambda,E,EE,TD,temp;
	
	Init_NN();
    for( i=1; i<=H; i++ )
		for( j=0; j<=N; j++ )
			DETA_WH[i][j] = 0.;
	for( i=1; i<=O; i++ )
		for( j=0; j<=H; j++ )
			DETA_WO[i][j] = 0.;

	lambda=1.;
	do
	{	step++; 
	    E=0.;
		TD=0.;
		EE=0.;
		for( k=1; k<=D; k++)
		{	/*calculate the output of the hidden neurons*/
			h[0]=1.;
			for( i=1; i<=H; i++ )
			{	h[i] = WH[i][0];
				for( j=1; j<=N; j++ )
					h[i] += WH[i][j] * x[k][j];
				h[i] = tanh(h[i]);
			}

			/*calculate the output of the outlayer neurons*/
			for( i=1; i<=O; i++ )
			{	NN_y[i] = WO[i][0];
				for( j=1; j<=H; j++)
					NN_y[i] += WO[i][j] * h[j];
			}

			/*adjust the weights of WO:*/
			for( i=1; i<=O; i++ )
			{	e[i] = y[k][i] - NN_y[i];
				E_WO[i] = lambda*e[i] + (1-lambda)*tanh(BETA*e[i]);
				for( j=0; j<=H; j++ )
				{	DETA_WO[i][j] = ETA*DETA_WO[i][j] + ALPHA*E_WO[i]*h[j];
					TD += fabs(DETA_WO[i][j]);
					WO[i][j] += DETA_WO[i][j];
				}
			}

			/*adjust the weights of WH:*/
			for( j=1; j<=H; j++ )
			{	for( i=1,temp=0.; i<=O; i++ )
					temp += E_WO[i] * WO[i][j];
				E_WH[j] = ( 1-h[j]*h[j])*temp;
				DETA_WH[j][0] = ETA*DETA_WH[j][0] +ALPHA*E_WH[j];
				TD += fabs(DETA_WH[j][0]);
				WH[j][0] += DETA_WH[j][0];
				for( i=1; i<=N; i++ )
				{   DETA_WH[j][i]= ETA*DETA_WH[j][i] +ALPHA*E_WH[j]*x[k][i];
					TD += fabs(DETA_WH[j][i]);
					WH[j][i] += DETA_WH[j][i];
				}
			}

			/*calculate the total errors*/
			for( i=1; i<=H; i++ )
			{	h[i] = WH[i][0];
				for( j=1; j<=N; j++ )
					h[i] += WH[i][j]*x[k][j];
				h[i] = tanh(h[i]);
			}
			for( i=1; i<=O; i++ )
			{	NN_y[i] = WO[i][0];
				for( j=1; j<=H; j++)
					NN_y[i] += WO[i][j] * h[j];
			}
			for( i=1; i<=O; i++ )
			{	e[i] = y[k][i] - NN_y[i];
				EE += fabs(e[i])/D;
				E += 0.5*e[i]*e[i];
			}
		}
		lambda = exp( -MU/(E*E));
		TD=TD/D;
		if(step%100==0) printf("\nBPA_%d  (Std)Sum-squared-E=%f  Average-E=%f  Gradient=%f;",step,E,EE,TD);
	} while ( step<2000 && TD>TOLERANCE && E>E0 && EE>EE0);
	printf("\nBPA_%d  (Std)Sum-squared-E=%f  Average-E=%f  Gradient=%f;",step,E,EE,TD);
}

static void Simu(double x[D+1][N+1], double y[D+1][O+1])
{
   int	i, j;
   double xx[N+1], yy[O+1];
   float read;
   FILE  *fp;

   if((fp=fopen("TRAIN.dat","r"))==NULL) {
     mark:
     fp=fopen("TRAIN.dat","w");
     for(i=1; i<=D; i++) {
       Input_Output(xx, yy);
       if(i%SIMU_PRINT_NUMBER==0) 
		  printf("\n%d input-output Data have been generated",i);
       for(j=1; j<=N; j++) {
          x[i][j]=xx[j];
          fprintf(fp,"%3.6f ",xx[j]);
       }
       for(j=1; j<=O; j++) {
          y[i][j]=yy[j];
          fprintf(fp,"%3.6f ",yy[j]);
       }
	   fprintf(fp,"\n");
     }
     fclose(fp);
   }
   else {
     printf("The training data <<TRAIN.dat>> already exists. Renew it? (y/n)");
     if(getche()=='y') goto mark;
     for(i=1; i<=D; i++) {
        for(j=1; j<=N; j++) {
          fscanf(fp,"%f",&read);
          x[i][j]=read;
        }
        for(j=1; j<=O; j++) {
          fscanf(fp,"%f",&read);
          y[i][j]=read;
        } 
     }
   }
   fclose(fp);
}


static void Train(double x[D+1][N+1], double y[D+1][O+1],double standard_x[D+1][N+1], double standard_y[D+1][O+1])
{
   int i, j, k;
   double E1, E2, a, xx[N+1], yy[O+1];
   float read;
   FILE *fp;

   if((fp=fopen("WEIGHT.dat","r"))==NULL) {
        mark:
        BPA(standard_x,standard_y);
        E1=0;
        E2=0;
        for(i=1; i<=D; i++) {
           for(j=1; j<=N; j++) xx[j]=x[i][j];
           NN(xx,yy);
           a=0;
           for(j=1; j<=O; j++) a += (yy[j]-y[i][j])*(yy[j]-y[i][j]);
           E1=E1+a;
           E2=E2+sqrt(a);
        }
        E1=E1/2;
        E2=E2/D;
        printf("\n\nSum-Squared Error = %3.4f",E1);
        printf("\nAverage Error = %3.4f\n\n",E2);
        for(i=1; i<=18; i++){
           k=(int)myu(1,D);
           for(j=1; j<=N; j++) xx[j]=x[k][j];
           NN(xx,yy);
           printf("Sample %2d: y=(",i);
		   for(j=1; j<=O; j++) {
			   if(j<O) printf("%3.4f,",y[k][j]);
			   else printf("%3.4f",y[k][j]);
		   }
		   printf(") Dif.=(");
           for(j=1; j<=O; j++) {
			   if(j<O) printf("%3.4f,",yy[j]-y[k][j]);
			   else printf("%3.4f",yy[j]-y[k][j]);
		   }
           printf(")\n");
        }
        printf("\nAre you satisfactory?(y/n)");
        if(getche()=='n') goto mark;
		printf("\n");

        fp=fopen("WEIGHT.dat","w");
        for(i=1; i<=H; i++) {
           for(j=0; j<=N; j++) fprintf(fp,"%3.4f ",WH[i][j]);
           fprintf(fp,"\n");
        }
        for(i=1; i<=O; i++) {
          for(j=0; j<=H; j++) fprintf(fp,"%3.4f ",WO[i][j]);
          fprintf(fp,"\n");
        }
        fclose(fp);

   }
   else {
     printf("\nThe weight data <<WEIGHT.dat>> already exists. Renew it? (y/n)");
     if(getche()=='y') goto mark;
     for(i=1; i<=H; i++)
        for(j=0; j<=N; j++) {
 	     fscanf(fp, "%f", &read);
        WH[i][j]=read;
     }
	  for(i=1; i<=O; i++)
		  for(j=0; j<=H; j++) {
			  fscanf(fp,"%f", &read);
           WO[i][j]=read;
        }
     fclose(fp);
   }
}



static void Standarlize(double x[D+1][N+1],double y[D+1][O+1],double xx[D+1][N+1],double yy[D+1][O+1])
{  
	int i,k;
	for(i=1; i<=N; i++) {
		BOUND[i][0]=x[1][i];
		BOUND[i][1]=x[1][i];
	}
	for( i=1; i<=O; i++ ) {
		BOUND[N+i][0]=y[1][i];
		BOUND[N+i][1]=y[1][i];
	}
	for( k=2; k<=D; k++ ) {
		for( i=1; i<=N; i++ )
		{   if(BOUND[i][0]>x[k][i])	
				BOUND[i][0]=x[k][i];
			if(BOUND[i][1]<x[k][i])	
				BOUND[i][1]=x[k][i];
		}
		for( i=1; i<=O; i++ )
		{   if(BOUND[N+i][0]>y[k][i])	
				BOUND[N+i][0]=y[k][i];
			if(BOUND[N+i][1]<y[k][i])	
				BOUND[N+i][1]=y[k][i];
		}
	}
	for( i=1; i<=N+O; i++ )
		BOUND[i][1]=BOUND[i][1] - BOUND[i][0];
	for( k=1; k<=D; k++ )
	{	for( i=1; i<=N; i++ )
			xx[k][i]=(x[k][i]-BOUND[i][0])/BOUND[i][1];
		for( i=1; i<=O; i++ )
			yy[k][i]=(y[k][i]-BOUND[N+i][0])/BOUND[N+i][1];
	}
}

static void NN( double x[], double y[] )
{	
	double h[H+1];
	int i,j;
	for( i=1; i<=H; i++ )
	{	h[i] = WH[i][0];
		for( j=1; j<=N; j++ )
			h[i] += WH[i][j] * (x[j]-BOUND[j][0])/BOUND[j][1];
		h[i] = tanh( h[i] );
	}
	for( i=1; i<=O; i++ )
	{	y[i] = WO[i][0];
		for( j=1; j<=H; j++)
			y[i] += WO[i][j] * h[j];
		y[i] = y[i]*BOUND[N+i][1] + BOUND[N+i][0];
	}
}

static void Init_NN(void)
{
   int i, j;
   for(i=1; i<=H; i++)
      for(j=0; j<=N; j++)
         WH[i][j]= myu(-0.3,0.3);
   for(i=1; i<=O; i++)
      for(j=0; j<=H; j++)
         WO[i][j]= myu(-0.3,0.3);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区在线视频| 亚洲精品国久久99热| 中文字幕巨乱亚洲| 午夜影视日本亚洲欧洲精品| 国产一区二区三区四区在线观看| 91麻豆文化传媒在线观看| 韩国三级中文字幕hd久久精品| 亚洲欧美日韩一区二区| 毛片av一区二区| 91久久一区二区| 久久品道一品道久久精品| 亚洲国产成人精品视频| av在线不卡电影| 久久久久国色av免费看影院| 日日夜夜精品视频免费| 色婷婷亚洲精品| 国产三级一区二区| 免费久久精品视频| 欧美大片免费久久精品三p| 夜夜嗨av一区二区三区网页| 亚洲成人免费影院| 日韩欧美一级二级三级 | 91一区二区在线观看| 亚洲精品中文字幕乱码三区| 欧美日韩午夜在线| 国产一区二区调教| 亚洲免费在线视频一区 二区| 欧美色图免费看| 国产乱一区二区| 亚洲精品菠萝久久久久久久| 91麻豆精品国产91久久久使用方法| 狠狠色综合色综合网络| 亚洲欧美日韩一区| 欧美成人精品高清在线播放| 91免费国产在线观看| 蜜臀精品一区二区三区在线观看 | 久久综合视频网| 色噜噜夜夜夜综合网| 蜜桃视频一区二区| 亚洲欧美一区二区不卡| 亚洲精品一区二区三区香蕉| 99久久伊人网影院| 久久精品国产第一区二区三区| 国产精品久久久久影院色老大| 4438x成人网最大色成网站| 丁香激情综合国产| 日韩精品电影在线| 亚洲美女精品一区| 久久九九全国免费| 欧美一级二级三级乱码| 日本精品视频一区二区三区| 国产成人免费在线视频| 三级一区在线视频先锋| 亚洲精品视频观看| 国产精品视频观看| 欧美va亚洲va在线观看蝴蝶网| 色拍拍在线精品视频8848| 国产精品小仙女| 蜜臀av性久久久久蜜臀aⅴ | 成人国产电影网| 久久99国产精品久久99果冻传媒| 亚洲国产视频网站| 亚洲三级久久久| 国产精品视频免费看| 久久影音资源网| 欧美tickling网站挠脚心| 欧美日韩另类国产亚洲欧美一级| 91免费看片在线观看| 成人夜色视频网站在线观看| 国精产品一区一区三区mba桃花| 日韩国产欧美在线播放| 亚洲h在线观看| 亚洲国产欧美日韩另类综合| 亚洲美女少妇撒尿| 综合久久综合久久| 国产精品传媒在线| 国产精品你懂的在线| 久久久91精品国产一区二区精品| 久久综合九色综合97婷婷| 精品久久一二三区| 精品国产污污免费网站入口| 欧美一区二区三区男人的天堂| 欧美日韩精品福利| 51午夜精品国产| 欧美一级久久久| 日韩免费视频一区| 久久综合狠狠综合久久综合88 | 日韩精品综合一本久道在线视频| 欧美日本一区二区| 欧美一级高清大全免费观看| 欧美成人艳星乳罩| 久久久亚洲国产美女国产盗摄| 精品国产一区二区三区四区四 | 久久久影视传媒| 国产日韩欧美在线一区| 欧美韩日一区二区三区四区| 国产精品每日更新在线播放网址| 国产精品国产三级国产aⅴ入口| 国产午夜精品一区二区三区视频| 日本一区二区三区高清不卡| 中文字幕一区二区三区在线播放| 亚洲人成精品久久久久久| 一区二区高清在线| 免费看精品久久片| 国产精品亚洲人在线观看| 99久久精品国产导航| 欧美日韩国产电影| 久久综合资源网| 亚洲欧洲成人自拍| 亚州成人在线电影| 久久99国产乱子伦精品免费| 成人a级免费电影| 欧美性猛交xxxx黑人交| 日韩欧美一区电影| 亚洲日本在线a| 免费久久精品视频| 成人不卡免费av| 911国产精品| 国产精品久久一卡二卡| 三级精品在线观看| 成人综合婷婷国产精品久久| 在线观看成人小视频| 欧美一级久久久久久久大片| 国产精品久久久久久户外露出| 午夜精品久久久| 国产成人精品三级| 欧美三级韩国三级日本一级| 国产视频一区在线播放| 亚洲成人av电影| 成人黄色片在线观看| 欧美日本不卡视频| 国产精品不卡在线观看| 秋霞成人午夜伦在线观看| 成人免费毛片aaaaa**| 91.com在线观看| 亚洲视频免费看| 国产一区二区精品久久99| 欧美日韩高清在线播放| 成人免费一区二区三区视频 | 成人综合日日夜夜| 日韩欧美中文字幕一区| 亚洲综合在线观看视频| www.性欧美| 久久久久国色av免费看影院| 秋霞午夜鲁丝一区二区老狼| 在线观看视频一区二区欧美日韩| 国产欧美一区二区精品忘忧草| 看国产成人h片视频| 欧美日韩精品一区二区三区蜜桃| 国产精品久久久99| 成人综合在线网站| 国产欧美综合在线| 蜜桃精品视频在线| 日韩欧美国产一二三区| 中文字幕国产一区| 日韩成人一级大片| 成人av在线电影| 国产亚洲美州欧州综合国| 亚洲风情在线资源站| 国产成人精品亚洲午夜麻豆| 欧美丰满高潮xxxx喷水动漫 | 日韩一区二区在线观看| 国产精品乱人伦中文| 另类调教123区| 欧美色窝79yyyycom| 2020日本不卡一区二区视频| 亚洲一区二区美女| 成人永久看片免费视频天堂| 日韩免费在线观看| 亚洲男人电影天堂| 国产麻豆视频一区二区| 激情综合五月婷婷| 欧美视频中文字幕| 亚欧色一区w666天堂| 91亚洲精品乱码久久久久久蜜桃| 欧美tickling挠脚心丨vk| 亚洲成人777| 在线观看免费视频综合| 国产精品麻豆一区二区| 国产精品乡下勾搭老头1| 精品国产乱码久久久久久闺蜜| 国产欧美精品在线观看| 成人免费视频网站在线观看| 精品美女一区二区三区| 日本欧美一区二区三区| 欧美日韩dvd在线观看| 免费成人在线影院| 欧美一区永久视频免费观看| 五月天激情小说综合| 在线看国产一区二区| 午夜精品久久久久久久99樱桃| 欧美日韩国产一级二级| 香蕉久久一区二区不卡无毒影院| 豆国产96在线|亚洲| 一区二区三区中文字幕| 欧美性淫爽ww久久久久无| 免费亚洲电影在线| 欧美日韩国产天堂| 日韩不卡一二三区| 日韩丝袜美女视频|