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

📄 k92setpc.txt

📁 这是用实验函数--Ackley函数来检验遗传算法的优越性
💻 TXT
📖 第 1 页 / 共 2 页
字号:
	}
*/
    for(i_ch=1;i_ch<i_length;i_ch++)       /*è??°??1--i_lengthμ??ùòò */
    for(j_ch=1;j_ch<=20;j_ch++)            /*·??úN_newgeneà? */
	{
		N_newgene[i_ch][j_ch]=N_addgene[i_ch][j_ch];
	}
	
/*	cout<<"??Dòoóμ?N_newgene:"<<endl;
	for(i=1;i<=i_length;i++)
    for(j=1;j<=20;j++)
	{
		cout<<N_newgene[i][j]<<" ";               
       if(j==20)
       cout<<endl;
	}
	*/
}


GA::Chose_super()
{   cout<<"N_supergene"<<endl;
	int i,j;
	for(i=1;i<=0.2*i_length;i++)
    for(j=1;j<=20;j++) 
	{
		N_supergene[i][j]=N_newgene[i][j];         /* 3???è?é?ì?*/
	/*	cout<<N_supergene[i][j]<<" ";
		if(j==20)
			cout<<endl;*/
	}
   
	for(i=1;i<=0.2*i_length;i++)
    for(j=1;j<=20;j++) 
	{
		N_newgene[i][j]=rand()%1000/100;         /*213??ùòò*/

	}
    cout<<"N_newgene&&N_offspringc:"<<endl; 
    for(i=1;i<=i_length;i++)
    for(j=1;j<=20;j++) 
	{
		N_offspringc[i][j]=N_newgene[i][j];    /* ?aá???DDN_2to3×a?ˉ */
/*	  cout<<N_offspringc[i][j]<<" ";
		if(j==20)
			cout<<endl;*/
	}
  

}


GA::F_itness()                            /* êêó|?èoˉêy  */
{   int i,j;
 
    int i_parent;
 cout<<endl<<"F_itness()"<<endl; 
	Sum_energy=0;
	for(i=1;i<=i_length;i++)
	{   /*cout<<"Energy="<<Energy[i]<<"  "; 
	      if(i%5==0)
			  cout<<endl;
        */
		Sum_energy=Sum_energy+fabs(Energy[i]);
	}
/*	cout<<endl;*/
/*	cout<<endl<<"Sum_energy="<<Sum_energy<<"  ";  */
	for(i=1;i<=i_length;i++)
	{   Fitness[i]=(Energy[i])/(Sum_energy);
	
	/*	cout<<"Fitness="<<Fitness[i]<<"  ";*/
    }

   /* Sum_fitness=0;                                
/*	for(i=1;i<=i_length;i++)
	{   
		Sum_fitness=Sum_fitness+fabs(Fitness[i]);
	}
	cout<<"Sum_fitness="<<Sum_fitness<<"  ";
*/
/*	cout<<endl;*/
    q_fitness[0]=0;
	for(i=1;i<=i_length;i++)
	{
		q_fitness[i]=q_fitness[i-1]+Fitness[i];      /* ????à??y???ê*/
	  /* cout<<"q_fitness="<<q_fitness[i]<<endl;*/
	}
	
	for(i=1;i<=i_length;i++)
	{
		q_random[i]=rand()%100/100.0;
        
	}
    for(i=1;i<=i_length;i++)
	{
		/* cout<<"q_random="<<q_random[i]<<endl;*/
	}

    i_parent=1;
	for(i=1;i<=i_length;i++)
    for(i_qmax=1;i_qmax<=i_length;i_qmax++)
	{                                                  /* ??×a????*/
		if(q_random[i]<=q_fitness[i_qmax]) 
		{   /*cout<<"q_random="<<q_random[i]<<endl;*/
			for(j=1;j<=20;j++)
			{
				N_parent[i_parent][j]=N_newgene[i][j];
			}
		 i_parent++;
			
		}

	}

}



 GA::crossover()                     /*??2?*/
 { /* cout<<endl;*/
    
/*	cout<<endl<<"crossover()"<<endl;*/
	int a;
	
	int i=1,j,m;
	ic=1,nlose=1;
	is=1;

	while(i<=i_length)                             /* ?ú4????èo?D???????? */
	{ 
		N_random=rand()%10001/10000.0;    /* ?ú[0,1]????2úéú???úêy */
		P_cr=N_random;                      

		if(P_cr<0.8)                         /* ò?0.7μ????ê???????? */
		{  /* cout<<"μú"<<i<<"DD±?????"<<endl;
			cout<<"P_cr="<<P_cr<<endl;*/
			for(j=1;j<=20;j++)
			{                            /* ??·?o?ì??tμ?????·??úD?μ?êy×é */
				N_select[ic][j]=N_parent[i][j];   
			    
			/*	cout<<N_select[ic][j]<<" ";     
		        if(j==20)                    /* ??·?o?ì??tμ?????ê?3? */
            /*    cout<<endl;          */
			}                            
            ic++;
		}	

		else
		{   
			nochose[nlose]=i;    /* ??2?·?o?ì??tμ?????μ?DDo?·??úD?μ?êy×é */  
	        nlose++;
		/*	cout<<"μú"<<i<<"DD??±?????"<<endl;  */
		}
		 
		i++;
  	}
    /*  cout<<"i="<<i<<endl; */
  /*  cout<<"12??2?μ?DDêy ic="<<ic-1<<endl;*/
	

    a=rand()%1900/100;                          /* ?ú[0,19]????2úéú???úêy */
	N_crosspoint=a;                             /* ??μ?????£¨D?óú20£? */
    cout<<"??2?μ? N_crosspoint="<<N_crosspoint<<endl;

	for(i=1;i<ic-1;i++)
	for(j=N_crosspoint;j<=20;j++)
	{
        N_offspringc[i+1][j]= N_select[i][j];
        
		N_offspringc[i][j]= N_select[i+1][j];   
	                                            /*?ú??2?μ?óò±?μ?è?é?ì???2?*/
	}

    for(i=1;i<ic-1;i++)
	for(j=1;j<N_crosspoint;j++)
	{
        N_offspringc[i][j]= N_select[i][j];      /*?ú??2?μ?×ó±?μ?è?é?ì?±£á?*/
        
		N_offspringc[i+1][j]= N_select[i+1][j];   
	                                            
	}
  /*  cout<<"??2?oóμ?è?é?ì?"<<endl;
	for(i=1;i<=ic-1;i++)
    for(j=1;j<=20;j++)
	{
		cout<<N_offspringc[i][j]<<" ";           /*ê?3?????oóμ?è?é?ì?*/
/*	   if(j==20)
	   cout<<endl;
	}
*/
     j=1;
    for(i=ic;i<=i_length;i++)  
	{
		for(m=1;m<=20;m++)                     /*??????2?μ?????μ?21·??úD?μ?êy×é */
		{   
			N_offspringc[i][m]=N_parent[nochose[j]][m];
		}
		j++;
	}
/*	cout<<endl<<"N_offspringc[][]="<<endl;
		
	for(i=1;i<=i_length;i++)
    for(j=1;j<=20;j++)
		{
			cout<<N_offspringc[i][j]<<" ";
			if(j==20)
			  cout<<endl;
		}
*/
}


GA::mutate()
{        
/*	cout<<endl;*/
/*	cout<<"mutate()"<<endl;*/

	int a,m;
	m=0;
/*	cout<<"±?òìμ??ùòòêy??£o"<<endl; */
	for(im=1;im<=i_length;im++)
    for(jm=1;jm<=20;jm++)
	{   
		N_random=rand()%10001/10000.0;
		P_mp[im][jm]=N_random;     /*2úéú[0,1]?????ù?è·?2?μ????úêyDòáD*/
        
		if(P_mp[im][jm]<0.15)        /*ò?20%μ????ê·¢éú±?òì*/ 
		{   m++;
		/*	cout<<"μú"<<im<<"DD "; 
            cout<<"μú"<<jm<<"áD?ùòòòa±?ì??? ";  
        */
	/**/	a=rand()%800/100;
			N_mutate=a;     /*2úéú[0,8]????·?2?μ????úêy×÷?aì???òò×ó*/
           /* cout<<"ì????ùòò£o"<<a<<endl;
	/**/	
			if(N_mutate==N_offspringc[im][jm])
			{
				N_mutate++;         /*è?1?ì???òò×óoí?-à′?àí?£??ò±??ˉ*/ 
			}
           
			N_offspringc[im][jm]=N_mutate;  /*ì???òò×óì???μ??-à′òò×ó*/ 
                               
		}
      
		
	}
/*	cout<<m<<" ";*/
    cout<<endl;
/*	cout<<"±?òìoóμ?è?é?ì?£o"<<endl;
	for(im=1;im<=i_length;im++)
    for(jm=1;jm<=20;jm++)
	{
		cout<<N_offspringc[im][jm]<<" ";
		if(jm==20)
			cout<<endl;
    }
*/
}


GA::N_2to3()
{    
/*	cout<<endl<<"2to3(?t??êy×é×a?ˉ?aèy??êy×é)"<<endl;  */
    int i,j,k;
	int  m=1;
		           
	for(i=1;i<=i_length;i++)
    for(j=1;j<=4;j++)
    for(k=1;k<=5;k++)
	{
		if(m<=20)
		{
				                                   /* ?t??êy×é×a?ˉ?aèy??êy×é*/
            N_renewgene[i][j][k]=N_offspringc[i][m];
            N_gene[i][j][k]=N_renewgene[i][j][k];
			m++;
			if(m>20)
			m=1;
		}
	 
	}
  
}
GA::N_add2to3()
{
	int i,j,k;
	int  m=1;
		           
	for(i=1;i<=1.2*i_length;i++)
    for(j=1;j<=4;j++)
    for(k=1;k<=5;k++)
	{
		if(m<=20)
		{
				                                   /* ?t??êy×é×a?ˉ?aèy??êy×é*/
            N_renewgene[i][j][k]=N_addgene[i][m];
            N_gene[i][j][k]=N_renewgene[i][j][k];
			m++;
			if(m>20)
			m=1;
		}
	 
	}

}
GA::F_irst()
{
	    N_changetointeger();
	    t_changetoindex();
        N_3to2();
        E_nergy();
		Makeorder();
		Chose_super();
        N_2to3();
        N_changetointeger();
	    t_changetoindex();

		E_nergy();
	    F_itness();

        crossover();		
	    mutate();
        Addgene();
	    N_2to3();

}

GA::C_ircle()
{   
    F_irst();

	int count;
    int total;
	
	cout<<"ê?è?μü′ú′?êy£o";
    cin>>total;
    for(count=2;count<=total;count++)
   	{
		cout<<endl<<endl<<"μú"<<count<<"′?μü′ú:";
        cout<<endl<<"****************";
		
		N_add2to3();
		N_changetointeger1();
        t_changetoindex1();
        
        E_nergy1();
        Makeorder1();
        Chose_super();

        N_2to3();
        N_changetointeger();
	    t_changetoindex();
        E_nergy();

	    F_itness();	
		
        crossover();
		mutate();
        Addgene();
	    N_2to3();
	
	cout<<endl;
        cout<<"*********************************"<<endl;
	}

}

main()
{    
   GA gene1;

  /* gene1.F_irst();*/
  gene1.C_ircle();
 
   cout<<endl;

return(0);

}

⌨️ 快捷键说明

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