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

📄 neural.c~

📁 一个入侵检测小程序,用C编写,linux环境
💻 C~
字号:
//neural.c#include"neural.h"int ArtDetect(int *pp){    int a_s2[S2],w_p[S2];  int x;  for(i2=0;i2<S2;i2++)    {      a_s2[i2]=AS2;      w_p[i2]=0;    }  for(i2=0;i2<S2;i2++)    {      x=0;      for(i1=0;i1<S1;i1++)	{	  x+=SameOr(w21[i1][i2],pp[i1]);	}      w_p[i2]=HardLim(x-a_s2[i2]);    }  for(i2=0;i2<S2;i2++)    {      if(w_p[i2])	return 1;    }  return 1;		     }int ArtStudy(int *pp){  int a1[S1];  float a2[S2];  int a0,w0[S2];//w0[]: the w0[i] neural has been stop;a0:value of reset  int wj[S1];//the number j neural of the second layer is revived   float sum_a1,sum_p;  int on_art;//if all over  int whe_new;//whether is new input vector  int j,fir_a2,sec_a2,thi_a2;//behave the number of max a2   int whe_equ;//whether w21 changed  if(input_sum>=M_IN)    {      over_for=21;      pcap_close(hand);      return 1;    }  if(equ_sum>=M_EQU)    {      over_for=22;      pcap_close(hand);      return 1;    }  for(i1=0;i1<S1;i1++)    {      a1[i1]=pp[i1];#ifdef DEBUG3      printf("%d",a1[i1]);      if((i1+1)%32==0)	printf("\n");#endif    }  for(i2=0;i2<S2;i2++)    {      w0[i2]=0;//revive all the neurals     }  //step:1 over  for(i2=0;i2<S2;i2++)    a2[i2]=0;  for(i2=0;i2<S2;i2++)    {      for(i1=0;i1<S1;i1++)	{	  a2[i2]+=w12[i2][i1]*a1[i1];#ifdef DEBUG	  printf("%f\n",a2[i2]);#endif	}#ifdef DEBUG      printf("%f\n",a2[i2]);#endif    }  if(a2[0]>=a2[1])    {      fir_a2=0;      if(a2[0]>=a2[2])	{	  if(a2[1]>=a2[2])	    {	      sec_a2=1;	      thi_a2=2;	    }	  else	    {	      sec_a2=2;	      thi_a2=1;	    }	}      else	{	  fir_a2=2;	  sec_a2=0;	  thi_a2=1;	}    }  else    {      fir_a2=1;      if(a2[0]>=a2[2])	{	  sec_a2=0;	  thi_a2=2;	}      else	{	  thi_a2=0;	  if(a2[1]>=a2[2])	    {	      sec_a2=2;	    }	  else	    {	      fir_a2=2;	      sec_a2=1;	    }	}    }  /*old algorithm	  a2[fir_a2]=1;	  a2[sec_a2]=0;	  a2[thi_a2]=0;  */  j=fir_a2;  //step:2-1 over  whe_new=1;  on_art=1;  while(on_art)    {      if(!whe_new)	{	  //	  a2[fir_a2]=0;	  if(!w0[sec_a2])	    {	      //  a2[sec_a2]=1;	      // a2[thi_a2]=0;	      j=sec_a2;	    }	  else	    {	      if(!w0[thi_a2])		{		  //  a2[sec_a2]=0;		  //  a2[thi_a2]=1;		  j=thi_a2;		}	      else		{		  break;		}	    }	}      //step:2-2 over      /*old algorithm      for(i1=0;i1<S1;i1++)	{	  for(i2=0;i2<S2;i2++)	    {	      wj[i1]=w21[i1][i2]*a2[i2];	    }         }	          */      for(i1=0;i1<S1;i1++)	{	  wj[i1]=w21[i1][j];	}      //step:3 over      for(i1=0;i1<S1;i1++)	a1[i1]=pp[i1] && wj[i1];      //step:4 over      sum_a1=0;      sum_p=0;      for(i1=0;i1<S1;i1++)	{	  sum_a1+=a1[i1];	  sum_p+=pp[i1];	}      if((sum_a1/sum_p)<=RO)	a0=1;      else	a0=0;#ifdef DEBUG1      printf("a0=%d\n",a0);#endif      if(a0==1)	{	  w0[j]=1;	  whe_new=0;	}      else	{	  whe_equ=0;	  for(i1=0;i1<S1;i1++)	    {	      w12[j][i1]=(float) ZETA*a1[i1]/(ZETA+sum_a1-1);	      if(w21[i1][j]!=a1[i1])		whe_equ=1;	      w21[i1][j]=a1[i1];	    }	  on_art=0;	  input_sum++;	  if(!whe_equ)	    equ_sum++;#ifdef DEBUG3	  printf("equsum=%d,inputsum=%d\n",equ_sum,input_sum);#endif	}         }  //art over#ifdef DEBUG1  for(i1=0;i1<S1;i1++)    {      for(i2=0;i2<S2;i2++)	{	  printf("%d,",w21[i1][i2]);	}      printf("\n");    }  printf("w12\n");  for(i2=0;i2<S2;i2++)    {      for(i1=0;i1<S1;i1++)	{	  printf("%.3f,",w12[i2][i1]);	}      printf("\n");    }  printf("input_sum=%d\n",input_sum);#endif  return 0;}/*function same_or()*/int SameOr(int x,int y){  int z;  z=!( (x&&(!y)) || ((!x)&&y) );  return z;}/*function hardlim()*/int HardLim(int x){  if(x>0)    return 1;  else    return 0;}

⌨️ 快捷键说明

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