⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainback.c

📁 GENETIC ALGORITHM FOR NEURAL NETWORKS ON TRANSPUTERS (Source code and Reference)
💻 C
字号:
/* Main file backpropagation */#include "defs.h"#include "sim.h"#include "ind.h"#include "back.h"extern char *optarg;extern int optind;char *OutOptStr() {return "l:f:i:r:\0";}char *OutUsage() {return	  "Output Parameters:\n"  "-l <frequency of log-output>:     auto\n"  "-f <show weights (0/1/2)>:        0\n"  "-i <show parameter info (0/1)>:   1\n"  "-r <show statistic (0/1/2)>:      1\0\n";}#define DEFLOG		AUTO#define DEFFIRST	0#define DEFINFO		1#define DEFSTAT		1/* set default values */int OptLog	=DEFLOG;int OptFirst	=DEFFIRST;int OptInfo	=DEFINFO;int OptStat	=DEFSTAT;int Iter;	/* current generation */int StartTime;int EndTime;#define SimTime()	(gettime()-StartTime)int handleOutOpt(char opt,char* arg){  switch(opt)  {    case 'l': OptLog  	=getint(arg,0,1000000000);	return 0;    case 'f': OptFirst	=getint(arg,0,2);		return 0;    case 'i': OptInfo 	=getint(arg,0,1);		return 0;    case 'r': OptStat 	=getint(arg,0,2);		return 0;    default: return 1;  };}int initOut(){  StartTime=gettime();  if(OptLog==AUTO)  {    if(MaxIter<=10)       OptLog=1;    else      OptLog=rounddec(500000/((1+Nin+Nout)*        (1+Nhid)*Ntrain));  };  return 0;}void errorexit(char *s){  printf("%s",s);  exit(1);}void printinfo(){  printf("Simulation Parameters:\n%s%s%s\n",	SimParamStr,NetParamStr,BackParamStr);}void printlog(){  printf("Iter%7d: t=%7ld, NetErr=%8.4f\n",Iter,SimTime(),NetErr);  if(OptFirst==2) printnet(); }void printstat(){  float t,i,e,u;  t=SimTime(); if(t==0.0) t=1.0;  i=Iter;  e=BackCalcs;  u=e*((Nin+1)*Nhid+(Nhid+1)*Nout);  printf("\n"    "Statistic               total      per sec.        time\n"    "----------------------------------------------------------\n"    "Iterations:        %10.0f%14.5f%12.6f s\n"    "evaluated Patterns:%10.0f%14.5f%12.6f ms\n"    "updated Weights:   %10.0f%14.0f%12.6f us\n",    i,i/t,t/i,e,e/t,1000*t/e,u,u/t,1000000*t/u);}int main(int argc,char **argv){  int opt;  char optstr[128]="\0";  strcat(optstr,SimOptStr());    strcat(optstr,NetOptStr());    strcat(optstr,BackOptStr());  strcat(optstr,OutOptStr());  while((opt=getopt(argc,argv,optstr)) != -1)  {    if(	handleSimOpt(opt,optarg) && 	handleNetOpt(opt,optarg) && 	handleBackOpt(opt,optarg) &&	handleOutOpt(opt,optarg) )      {	printf("%s\n%s\n%s\n%s",	  SimUsage(),NetUsage(),BackUsage(),OutUsage());	exit(1);      };  };  if(initSim()) errorexit("simulation init failed\n");  if(initNet()) errorexit("individual init failed\n");  if(initBack()) errorexit("backpropagation init failed\n");  if(initOut()) errorexit("output init failed\n");  if(OptInfo) printinfo();  for(Iter=1;Iter<=MaxIter;Iter++)  {    calcNetErr();    if(NetErr<=MaxErr)    {       printlog();      if(OptStat) printstat();      if(OptFirst==1) {printf("\n"); printnet();};      printf("\nprogram succeeded.\n");      exit(0);    };    if(Iter%OptLog==0 || Iter==1 || Iter==MaxIter) printlog();    updateNet();  };  if(OptStat==2) printstat();  printf("\ntime out - program failed.\n");  exit(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -