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

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

?? sga.cpp

?? 最近研究遺傳算法
?? CPP
字號:
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <time.h>

long* long2binary(long codelength,long ltochange);
int CreateChromN(long popsize, long lchrom, long* &plarray);
int ChromCross(double dPcross,long * plArray,long lPopsize, long lChrom);
int ChromMutation(double dpMutation,long* plArray,long lPopsize, long lChrom);
int RWS(long* plAdapt, long* plArray,long lPopsize, long lChrom);
//整數轉換為二進制
long* long2binary(long codelength,long ltochange)
{
   long* plResult=new long[codelength];
   if(plResult==NULL) return NULL;

   for(int i=0;i<codelength;i++)//從低位開始
   {
	  long aa=(long)pow(2,i);
	    if((ltochange&aa)==0)

	  plResult[codelength-1-i]=0; //但從高位開始存儲
	  else 
	  plResult[codelength-1-i]=1 ;
   }
   return plResult;
}
//隨機產生染色體
int CreateChromN(long popsize, long lchrom, long* &plarray)
{
	//隨機選擇編碼組
	long *plAr= new long[popsize*lchrom];
	if(plAr==NULL) return 0;

	long *plSelection= new long[popsize];
	if(plSelection==NULL) return 0;

	long n=(long)pow(2,lchrom)-1;//可能的染色體分組
	plSelection[0]=(int)(n*rand()/RAND_MAX);//取0到popsize之間的數
	int i=0; //i從0開始
	long tempSelection;
	while(i<popsize-1)//??
	{
        int hh=0;
		tempSelection=(long)(n*rand()/RAND_MAX);
		for(int j=0;j<i+1;j++)
		{
			if(tempSelection==plSelection[j]) 
			hh=hh+1;//計數,可以稍微提高效率,不比較完畢
		}
			if(hh==0) //沒有相同的數
				{
				i=i+1;	
				plSelection[i]=tempSelection;
					
				}


	}
	//然后將數轉化為標準二進制編碼,且存儲
	long* plBinary;
	for(i=0;i<popsize;i++)
	{
      plBinary=long2binary(lchrom,plSelection[i]);
	  for(int j=i*lchrom;j<(i+1)*lchrom;j++) 
		  plAr[j]=plBinary[j-i*lchrom];
	}
    plarray=plAr;

	return 1;
	//1 還是隨機選擇(固定二進制編碼,不用考慮優化編碼)*/

//2 隨機編碼?比較的工作量比較大
	//return 1;

}
//operator &(long aa)
//**隨機選擇過程可以做成一個單獨的函數
//染色體進行交配
int ChromCross(double dpCross,long *plArray,long lPopsize, long lChrom)
{
	//long plPop[20]={1,0,0,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,1,0};
    //已知初始種群,數組大小為N=lPopsize*lChrom
    //判斷數組是否含有非0,1值
	for(int jj=0;jj<lPopsize*lChrom;jj++)
	{
		if((plArray[jj]!=1)&(plArray[jj]!=0))
			return 0;
	}
	//交配的種群個數
    long lPop2Cross=(long)lPopsize*dpCross;
    //保證要交配的染色體個數為偶數
	//減1比較好,如果+1,奇數個種群交配率為100%出現錯誤情況
    if(lPop2Cross%2) lPop2Cross=lPop2Cross-1;
    //交配位,0到lChrom之間
    long lBit2Cross=(long)(lChrom-1)*rand()/RAND_MAX;
   //隨機選擇其中的染色體進行交配,等概率交配,不考慮適應值
  
  //方法是:隨機產生一數組(數的范圍在0-(lPopsize-1)之間),相鄰兩個進行交配
	 long* plSelection=new long[];
	 if(plSelection==NULL) return 0;

     plSelection[0]=(long)((lPopsize-1)*rand()/RAND_MAX);//取0到(lPopsize-1)之間的數
	int i=0; //i從0開始
	long tempSelection;
	while(i<lPop2Cross-1)//
	{
        int hh=0;
		tempSelection=(long)((lPopsize-1)*rand()/RAND_MAX);
		for(int j=0;j<i+1;j++)
		{
			if(tempSelection==plSelection[j]) 
			hh=hh+1;//計數,可以稍微提高效率,不比較完畢
		}
			if(hh==0) //沒有相同的數
				{
				i=i+1;	
				plSelection[i]=tempSelection;
					
				}
	}
	//plSelection[]存儲的是待交配的染色體的序號

	//交配
	for(int j=0;j<lPop2Cross;j=j+2)
	{
     
	 for(long h=lBit2Cross;h<lChrom;h++)
	 {
         
		 long lTempBit;// 要交換的位
		 lTempBit=plArray[plSelection[j]*lChrom+h];
         plArray[plSelection[j]*lChrom+h]=plArray[plSelection[j+1]*lChrom+h];
		 plArray[plSelection[j+1]*lChrom+h]=lTempBit;
	 }

	}

	/*for(j=0;j<20;j++)
	{
    plArray[j]=plPop[j];
	}*/

	return 1;
}
//染色體變異
int ChromMutation(double dpMutation,long* plArray,long lPopsize,long lChrom)
{
	
	 //判斷數組是否含有非0,1值
	for(int jj=0;jj<lPopsize*lChrom;jj++)
	{
		if((plArray[jj]!=1)&(plArray[jj]!=0))
			return 0;
	}
	
	//lPopsize:種群個數  lChrom:編碼長度
	 long lPoptoMutation=(long)lPopsize*dpMutation;
	 if(lPoptoMutation==0) return 1;
	 long lBittoMutation;
	 lBittoMutation=(long)(lChrom-1)*rand()/RAND_MAX;

	 long* plSelection=new long[];
     plSelection[0]=(long)((lPopsize-1)*rand()/RAND_MAX);//取0到(lPopsize-1)之間的數
	int i=0; //i從0開始
	long tempSelection;
	while(i<lPoptoMutation-1)//
	{
        int hh=0;
		tempSelection=(long)((lPopsize-1)*rand()/RAND_MAX);
		for(int j=0;j<i+1;j++)
		{
			if(tempSelection==plSelection[j]) 
			hh=hh+1;//計數,可以稍微提高效率,不比較完畢
		}
			if(hh==0) //沒有相同的數
				{
				i=i+1;	
				plSelection[i]=tempSelection;
					
				}
	}
	//plSelection[]存儲的是發生變異的染色體的索引
	for(i=0;i<lPoptoMutation;i++)
	{
		if(plArray[plSelection[i]*lChrom+lBittoMutation]==1)
            plArray[plSelection[i]*lChrom+lBittoMutation]=0;
		else
			plArray[plSelection[i]*lChrom+lBittoMutation]=1;
	}
     
/*	for(int j=0;j<20;j++)
	{
    plArray[j]=plPop[j];
	}*/
	 return 1;

}
//輪盤賭算法
//給定N個染色體的適應值,求出染色體編碼數組
int RWS(long* plAdapt, long* plArray,long lPopsize, long lChrom)
{
	//判斷數組是否含有非0,1值
	for(int jj=0;jj<lPopsize*lChrom;jj++)
	{
		if((plArray[jj]!=1)&(plArray[jj]!=0))
			return 0;
	}
	
    //存儲選擇概率
	double* plP=new double[];
	if(plP==NULL) return 0;
	
    double dSum=0.0;
	//求適應值的和
	for(int i=0;i<lPopsize;i++)
	{
		dSum=dSum+plAdapt[i];     
	}
	//求各選擇概率
	for(i=0;i<lPopsize;i++)
	{
		plP[i]=plAdapt[i]/dSum;
		
	}
	//算法理解,分別產生隨機數,選擇染色體,包括被重復選取
	//存儲被選取的染色體序號
	long* plSelect=new long[lPopsize];
	double dRand=0.0;
	double dS=0;
	int j=0;
	srand((unsigned)time(NULL));
	for(i=0;i<lPopsize;i++) //選取個體序列
	{
		dRand=static_cast<double>((rand()%100)*0.01);//精確到小數點后2位
	
		dS=0;
		for(j=0;j<lPopsize;j++) //染色體序列
		{
			if(dS>=dRand)
			{
				plSelect[i]=j;
			    break;
			}
			dS=dS+plP[j];
		}
	}

    long* plSelectedPop=new long[lPopsize*lChrom];// 大小同于給定的初始群體
	for(i=0;i<lPopsize;i++)
	{
		for(j=0;j<lChrom;j++)
		{
			plSelectedPop[i*lChrom+j]=plArray[plSelect[i]*lChrom+j];
		}
	}
    for(j=0;j<lPopsize*lChrom;j++)
	plArray[j]=plSelectedPop[j]; //需釋放
	delete []plSelectedPop;
	return 1;

}

void main()
{
	
//	cout<<0.5*((int)(rand()/RAND_MAX))<<endl;
    cout<<pow(2,3)<<endl;

    printf("%d\n",8&1);
	printf("%d\n",8&2);
    printf("%d\n",8&4);
	printf("%d\n",8&8);
    printf("%d\n",8&16);
	long* hehe=long2binary(5,8);
	cout<<hehe[0]<<hehe[1]<<hehe[2]<<hehe[3]<<endl;//從高位到低位輸出

/*	int hehe[4];
	for(int i=0;i<4;i++)
	{
		if(8&&pow(2,i)==0) hehe[3-i]=0;
			else  hehe[4-i]=1;
	}
*/
	long* Result=new long[];
	CreateChromN(8, 5, Result); 
	for(int i=0;i<20;i++)
		cout<<Result[i]<<endl;
	 delete[] Result;
	 ////////////////////////
	//long* plResultofCross=new long[20];
     long plPop[20]={1,0,0,0,1,0,0,1,0,1,1,1,0,0,1,1,0,0,1,0};
	//交配算法調試
	 /*ChromCross(0.5,plPop,4,5);
     for(i=0;i<20;i++)
		cout<<(long)plPop[i]<<endl;*/
   
    	
	 ///////////////////////
	 //變異算法調試
	 //為驗證算法,pMutation取較大值,且要屏蔽交配算法,因交配算法修改了plPop
	/* ChromMutation(0.25,plPop,4,5);	 
     for(i=0;i<20;i++)
		cout<<(long)plPop[i]<<endl;
   */
	 //輪盤賭法驗證
	 
	 long lAdapt[4]={32,18,160,100};
     RWS(lAdapt,plPop,4,5);
     for(i=0;i<20;i++)
		cout<<(long)plPop[i]<<endl;
   ////
	  srand( (unsigned)time(NULL));
       double yyyy;
   /* Display 10 numbers. *////隨機數產生不對
     for( i = 0; i < 10;i++ )
	 {
	     yyyy=static_cast<double>((rand()%100)*0.01);
		 printf( "%.2f\n",yyyy);
	 }
	   
 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆欧美日韩一区| 亚洲一区在线看| 国产成人在线网站| 欧美国产精品中文字幕| 成人网在线播放| 国产精品久久久久久久久果冻传媒| 国产91丝袜在线播放九色| 亚洲欧美一区二区在线观看| 97se亚洲国产综合自在线观| 一区二区三区丝袜| 国产99一区视频免费| 一区二区三区精品在线观看| 欧美高清你懂得| 国产真实乱对白精彩久久| 国产精品嫩草99a| 在线精品亚洲一区二区不卡| 蜜桃在线一区二区三区| 国产精品久久夜| 欧美精品免费视频| 高清成人在线观看| 亚洲自拍偷拍综合| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 极品少妇xxxx偷拍精品少妇| 久久精品视频免费| 日本韩国精品在线| 精品一二三四区| 亚洲人成网站在线| 欧美大片国产精品| 91女神在线视频| 紧缚捆绑精品一区二区| 亚洲色图欧洲色图婷婷| 欧美一区二区三区白人| 风间由美一区二区三区在线观看 | 成人av电影在线观看| 天堂影院一区二区| 欧美国产亚洲另类动漫| 欧美日韩高清影院| 成人深夜视频在线观看| 偷拍与自拍一区| 国产精品三级久久久久三级| 91精品国产一区二区| 99综合电影在线视频| 精品一区二区在线免费观看| 亚洲制服丝袜在线| 中文子幕无线码一区tr| 日韩欧美一卡二卡| 欧美综合一区二区三区| 成人午夜av影视| 极品美女销魂一区二区三区免费| 亚洲激情五月婷婷| 国产视频一区在线观看| 欧美三级乱人伦电影| 99国产精品视频免费观看| 国产在线视频不卡二| 日本中文在线一区| 一区二区三区电影在线播| 久久久一区二区| 日韩一区二区三区av| 欧美专区日韩专区| 色欧美乱欧美15图片| 99在线热播精品免费| 国产999精品久久| 激情图片小说一区| 日本在线不卡视频| 亚洲在线免费播放| 亚洲欧美日韩一区二区三区在线观看 | 亚洲品质自拍视频网站| 亚洲国产成人午夜在线一区| 欧美大肚乱孕交hd孕妇| 日韩你懂的在线播放| 91麻豆精品国产无毒不卡在线观看| 91日韩在线专区| 97久久超碰精品国产| jlzzjlzz亚洲女人18| 99精品桃花视频在线观看| 成人一级黄色片| 国产91在线|亚洲| 成人国产免费视频| 99精品欧美一区二区蜜桃免费| 懂色一区二区三区免费观看| 国产成人99久久亚洲综合精品| 国产精品中文有码| 高清成人免费视频| 91丝袜呻吟高潮美腿白嫩在线观看| 成人精品免费视频| 色综合久久88色综合天天6| 91黄色在线观看| 欧美日韩综合色| 日韩一级二级三级| 久久欧美一区二区| 国产人成亚洲第一网站在线播放 | 亚洲精品一区二区三区蜜桃下载| 欧美成人video| 久久综合九色综合97婷婷女人 | 亚洲图片欧美一区| 日韩精品久久久久久| 麻豆久久久久久久| 成人一区二区三区| 在线视频国产一区| 欧美一级xxx| 国产色91在线| 亚洲精品免费在线观看| 五月激情综合网| 国产一区二区三区四区五区美女| 粉嫩av一区二区三区在线播放| 99精品久久只有精品| 欧美精品九九99久久| 欧美一二区视频| 欧美激情中文字幕| 亚洲成人激情综合网| 国产一区不卡在线| 日本韩国视频一区二区| 欧美成人女星排行榜| 亚洲欧美一区二区在线观看| 日韩黄色免费网站| 99国产精品久久久| 日韩一区二区三区高清免费看看| 国产精品美女久久久久久久| 一区二区久久久| 国产一区亚洲一区| 欧美四级电影网| 亚洲国产激情av| 蜜臀av性久久久久蜜臀aⅴ| 97精品超碰一区二区三区| 日韩欧美视频一区| 一区二区三区四区五区视频在线观看 | 精品日韩欧美在线| 亚洲美女视频一区| 国内精品第一页| 欧美日韩你懂的| 中文字幕一区视频| 极品少妇xxxx偷拍精品少妇| 欧美视频一区二区三区四区| 国产欧美日本一区二区三区| 免费观看一级特黄欧美大片| 99国产精品一区| 国产欧美一区二区在线观看| 日本女人一区二区三区| 欧美中文字幕一区二区三区| 国产精品久久久一本精品| 日本欧美久久久久免费播放网| 99国产精品久久久久久久久久久| 欧美mv日韩mv亚洲| 一区二区三区中文字幕在线观看| 国产精品一级片| 欧美成人一区二区三区片免费| 亚洲超丰满肉感bbw| 91社区在线播放| 国产精品蜜臀在线观看| 国产激情偷乱视频一区二区三区| 欧美一区二区视频在线观看2020| 亚洲精品欧美激情| 色婷婷综合久久久中文一区二区| 欧美国产精品久久| 国产精品乡下勾搭老头1| 欧美精品一区二区三区一线天视频| 午夜精品久久一牛影视| 在线观看视频91| 一区二区三区丝袜| 欧美性色综合网| 亚洲一区二区三区中文字幕| 色天天综合久久久久综合片| 亚洲精品五月天| 色综合久久久久综合体桃花网| 国产精品卡一卡二卡三| 99麻豆久久久国产精品免费| 国产精品欧美精品| 91丨九色丨蝌蚪丨老版| 一区在线播放视频| 色婷婷国产精品| 一区二区三区免费| 欧美综合视频在线观看| 亚洲最大成人综合| 欧美日韩一区二区电影| 肉丝袜脚交视频一区二区| 欧美一区二区成人| 九九精品视频在线看| 久久午夜色播影院免费高清| 国产一区在线观看麻豆| 国产精品久久一级| 欧美在线观看你懂的| 日韩二区在线观看| 日韩午夜在线播放| 国产精品77777| 亚洲欧洲国产日韩| 欧美人妖巨大在线| 久久99精品久久久久| 国产精品电影一区二区| 在线一区二区三区| 蜜桃视频第一区免费观看| 久久综合九色综合97_久久久| 成人一道本在线| 亚洲韩国一区二区三区| 精品国产精品网麻豆系列| 懂色av一区二区夜夜嗨| 亚洲综合色丁香婷婷六月图片| 欧美一区二区三区影视| 国产成人精品1024| 亚洲一区中文在线| 久久亚洲综合色一区二区三区|