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

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

?? simplega.cpp

?? 遺傳算法(圖像處理)
?? CPP
字號:
// SimpleGA.cpp: implementation of the CSimpleGA class.
//
//////////////////////////////////////////////////////////////////////

#include "SimpleGA.h"
#include "ProjectHead.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CSimpleGA::CSimpleGA()
{
	m_lMutationTimes=0;	m_lMatingTimes=0;
	m_dSumFitness=0.0;m_dMaxFitness=0.0;m_iMaxLocation=0;
	m_count=0;
	m_nowp=0;
	m_position=0;
	last_maxfitness=0.0;

}

/********************************************************/
/*                MATING POOL INITIAL                   */
/*                交配池初始化函數                      */
/*********************************************************/
void CSimpleGA::Initial(int pop_size,double mutation_p,double crossing_p)
{
  int  i;
  m_iPopuSize=pop_size;
  m_dMutationP=mutation_p;m_dCrossingP=crossing_p;
  m_lpParents=(CGAUnite *)malloc(sizeof(CGAUnite)*m_iPopuSize);
  if(m_lpParents==NULL) 
  {
	  cout<<"內存空間分配失敗!"<<endl;
	  exit(0);
  }
  m_lpFilials=(CGAUnite *)malloc(sizeof(CGAUnite)*m_iPopuSize);
  if(m_lpFilials==NULL)
  {
	  cout<<"內存空間分配失敗!"<<endl;
	  free(m_lpParents);
	  exit(0);
  }
  for(i=0;i<m_iPopuSize;i++)
  {
	  m_lpParents[i].Initial();
	  m_lpParents[i].FitnessFunction();
	  m_lpFilials[i]=m_lpParents[i];
  }
  return;
}

/********************************************************/
/*                STATISTIC FUNCTION                   */
/*                交配池統計函數                        */
/*********************************************************/
CSimpleGA::Statistic()
{
 int i,max_l;
 double sum1,max_f;
 sum1=0.0;max_f=0.0;max_l=0;
 for(i=0;i<m_iPopuSize;i++)
 {
 	 sum1=sum1+m_lpParents[i].m_dFitness;
	 if(m_lpParents[i].m_dFitness>max_f) 
	 {

		 max_f=m_lpParents[i].m_dFitness;
		 max_l=i;
	 } 
 }
 m_dSumFitness=sum1;m_dMaxFitness=max_f;m_iMaxLocation=max_l;
 m_dAverageFitness=sum1/(double)m_iPopuSize;
 return 1;
}

/********************************************************/
/*                SELECTION FUNCTION                   */
/*                  個體選擇函數                        */
/*********************************************************/
int CSimpleGA::Selection()
{ 
  double rand1,partsum;
  int j;
  partsum=0.0;j=0;
  rand1=(double)rand()/(double)RAND_MAX;
  rand1=rand1*fabs(m_dSumFitness);
  while((partsum<rand1)&&(j<m_iPopuSize))
	{ partsum=partsum+fabs(m_lpParents[j].m_dFitness);j++;}
  return(j);
}
///////////////////////////////////////////////////////
//               FLIP FUNCTION                      //
//               FLIP 實驗函數                       //
///////////////////////////////////////////////////////

int CSimpleGA::Flip(double probability)
{   
	double probability_f;     
    // srand((unsigned)time(NULL));
	 probability_f=(double)rand()/(double)(RAND_MAX);
	 if ( probability_f<=probability) return(1);
	 else return(0);
}
///////////////////////////////////////////////////////
//               MUTATION FUNCTION                  //
//                     變異函數                      //
///////////////////////////////////////////////////////
int CSimpleGA::Mutation(unsigned int loca)
{    
	 int mutate;
     mutate=Flip(m_dMutationP);
     if(mutate==1)
	 {   
		 m_lMutationTimes=m_lMutationTimes+1;
		 if(loca==1) loca=0;
		 else loca=1;
	 }
     if(loca==1) return(1);
	else return(0);
}
///////////////////////////////////////////////////////
//                 MATING FUNCTION                  //
//                     雜交函數                      //
///////////////////////////////////////////////////////
int CSimpleGA::Mating(unsigned int *parent1_chain1,unsigned int *parent1_chain2,
				  	  unsigned int *parent2_chain1,unsigned int *parent2_chain2,
					  int k5)
{  
	int j;
    if(Flip(m_dCrossingP)==1)
	 {  
		m_lMatingTimes=m_lMatingTimes+1;
	    for(j=0;j<GEN_LENGTH;j++)
	    {
		m_lpFilials[k5].m_uGenChainA[j]=Mutation(parent1_chain1[j]);
		m_lpFilials[k5].m_uGenChainB[j]=Mutation(parent2_chain2[j]);
		m_lpFilials[k5+1].m_uGenChainA[j]=Mutation(parent2_chain1[j]);
		m_lpFilials[k5+1].m_uGenChainB[j]=Mutation(parent1_chain2[j]);
	     }
	 }
	else
	{
		for(j=0;j<GEN_LENGTH;j++)
		{ 
		 m_lpFilials[k5].m_uGenChainA[j]=Mutation(parent1_chain1[j]);
	     m_lpFilials[k5].m_uGenChainA[j]=Mutation(parent1_chain2[j]);
	     m_lpFilials[k5+1].m_uGenChainA[j]=Mutation(parent2_chain1[j]);
	     m_lpFilials[k5+1].m_uGenChainA[j]=Mutation(parent2_chain2[j]);
		}
    }
   return(1);
}
/********************************************************/
/*                GENERATION FUNCTION                   */
/*                  子代產生函數                        */
/*********************************************************/
void CSimpleGA::Generation(void)
{  
   unsigned int mate1,mate2;
   int j;
   j=0;
   while(j<m_iPopuSize)
   {  
	 mate1=Selection();
	 mate2=Selection();
	 Mating(m_lpParents[mate1].m_uGenChainA,
		    m_lpParents[mate1].m_uGenChainB,
		    m_lpParents[mate2].m_uGenChainA,
			m_lpParents[mate2].m_uGenChainB,j);
	 m_lpFilials[j].FitnessFunction();
	 m_lpFilials[j+1].FitnessFunction();
	 j=j+2;
    }
   return;
}

/********************************************************/
/*                NEXT GENERATION                       */
/*      下一代子代產生的準備函數:父代、子代一致函數    */
/*********************************************************/
void CSimpleGA::NextGeneration()
{
	int i;
	for(i=0;i<m_iPopuSize;i++) 
		m_lpParents[i]=m_lpFilials[i];
 return;
 }


void CSimpleGA::ReportGeneration(void)
{
	int i;
	//cout<<endl;
	m_position++;
	if(m_dMaxFitness>last_maxfitness)
	{
		m_count=0;
		m_nowp=m_position;
		last_maxfitness=m_dMaxFitness;
	}
	else
		m_count++;
	cout<< "現在穩定在:";
	cout<< m_nowp;
	cout<<endl;
//	cout<<"gen   chain1:  ";
//	for(i=GEN_LENGTH-1;i>=0;i--)
//	cout<<m_lpParents[m_iMaxLocation].m_uGenChainA[i];
//	cout<<endl;

//	cout<<"gen   chain2:  ";
//	for(i=GEN_LENGTH-1;i>=0;i--)
//	cout<<m_lpParents[m_iMaxLocation].m_uGenChainB[i];
//	cout<<endl;
    
//	cout<<"decode chain:  ";
//	for(i=GEN_LENGTH-1;i>=0;i--)
//	cout<<m_lpParents[m_iMaxLocation].m_uDecodeChain[i];
//	cout<<endl;
//
//	cout<<"Parameters Are:"<<endl;
//	for(i=N_PARAMETER-1;i>=0;i--)
//	cout<<"x["<<i<<"]="<<m_lpParents[m_iMaxLocation].m_dDecValue[i]<<endl;
//	cout<<"Max Population Location Is:  "<<m_iMaxLocation<<endl;
  //  cout<<"Max Fitness="<<m_lpParents[m_iMaxLocation].m_dFitness<<endl;
	cout<<"Max Fitness="<<m_dMaxFitness<<endl;
//	cout<<"Average Fitness= "<<m_dAverageFitness<<endl;
//	cout<<"Population MutationTimes Is:  "<<m_lMutationTimes<<endl;
//	cout<<"Population MatingTimes Is:  "<<m_lMatingTimes<<endl;
//	cout<<"Population Affinity Is:   "<<m_dAffinity<<endl;
//	cout<<"m_dCrossingP="<<m_dCrossingP<<"; "<<"m_dMutationP="<<m_dMutationP<<endl;
	return;	
}

void CSimpleGA::FreeSpace()
{
		free(m_lpParents);
	    free(m_lpFilials);
		return;
}

CSimpleGA::~CSimpleGA()
{
}

void CSimpleGA::CalcuAffinity()
{
	double sum1,sum2;
	int i,j,k;
	sum2=0.0;
   for(i=0;i<m_iPopuSize;i++)
   {   sum1=0.0;
	   for(j=0;j<m_iPopuSize;j++)
		{
		   if(i!=j)
		   {
				for(k=0;k<GEN_LENGTH;k++)
				{
					if(m_lpParents[i].m_uDecodeChain[k]!=m_lpParents[j].m_uDecodeChain[k])
					sum1=sum1+1.0;
				}
		   }
	   }
	   sum2=sum2+sum1/(double)GEN_LENGTH/(double)m_iPopuSize;
   }
   m_dAffinity=sum2/(double)m_iPopuSize;
   return;
}

int CSimpleGA::SaveDate(LPCTSTR filename,char if_rewrite)
{
	FILE *fp;
	if(if_rewrite=='r')
		fp=fopen(filename,"w+b");
	else
	{
		fp=fopen(filename,"r+b");
		if(fp==NULL) fp=fopen(filename,"w+");
	}
	if(fp==NULL) return -1;
	fseek(fp,0,SEEK_END);
	fwrite(&m_dMaxFitness,sizeof(double),1,fp);
	fwrite(&m_dAverageFitness,sizeof(double),1,fp);
	fwrite(&m_dAffinity,sizeof(double),1,fp);
	fclose(fp);
	return 1;
}

int CSimpleGA::SaveCount(LPCTSTR filename,int count)
{
	FILE *fp;
	fp=fopen(filename,"w+b");
	if(fp==NULL) return -1;
	fwrite(&count,sizeof(int),1,fp);
	fclose(fp);
	return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区精品| 欧美刺激午夜性久久久久久久| 欧美三级视频在线| 国产欧美一区二区精品仙草咪| 亚洲444eee在线观看| 风间由美性色一区二区三区| 制服.丝袜.亚洲.中文.综合| 成人欧美一区二区三区黑人麻豆 | 亚洲线精品一区二区三区八戒| 久99久精品视频免费观看| 在线视频一区二区三| 久久精品亚洲国产奇米99| 美女一区二区三区在线观看| 欧美视频中文字幕| 最新高清无码专区| 成人精品一区二区三区四区| www国产精品av| 久久精品国产第一区二区三区| 欧美久久一二区| 亚洲国产三级在线| 在线观看视频一区二区欧美日韩 | 日韩视频一区二区在线观看| 亚洲影院在线观看| 欧美在线三级电影| 亚洲品质自拍视频网站| 99精品热视频| 中文字幕一区在线观看| 成人免费视频国产在线观看| 久久精品日韩一区二区三区| 国产一区三区三区| 精品国内二区三区| 激情久久久久久久久久久久久久久久| 91精品国产综合久久香蕉麻豆| 三级欧美韩日大片在线看| 欧美老女人在线| 日韩黄色免费电影| 日韩精品中文字幕一区二区三区| 久久 天天综合| 久久久久久9999| 波多野结衣亚洲一区| 亚洲视频一区在线观看| 日本久久精品电影| 日日夜夜精品视频免费| 欧美电影免费观看高清完整版| 激情六月婷婷久久| 亚洲欧洲日韩一区二区三区| 一本高清dvd不卡在线观看| 亚洲福利一二三区| 日韩精品一区二区三区视频| 国产成人夜色高潮福利影视| 国产精品大尺度| 在线观看日韩国产| 免费成人性网站| 久久精品亚洲麻豆av一区二区 | 国产精品福利在线播放| 欧洲视频一区二区| 日本sm残虐另类| 欧美激情综合在线| 欧美在线视频日韩| 国产精品自拍av| 亚洲婷婷综合色高清在线| 6080午夜不卡| 懂色av一区二区三区免费观看 | 欧美精品乱码久久久久久按摩| 免费观看在线色综合| 欧美三级电影网| 精品午夜久久福利影院| 亚洲图片你懂的| 精品久久久久久久久久久久包黑料 | 欧洲精品在线观看| 蜜桃传媒麻豆第一区在线观看| 国产精品理论片| 日韩三级视频在线看| 99久免费精品视频在线观看 | 欧美三级资源在线| 国产乱一区二区| 午夜婷婷国产麻豆精品| 中文成人av在线| 欧美一级免费大片| 日本高清不卡一区| 国产乱色国产精品免费视频| 视频一区二区中文字幕| 国产精品成人在线观看| 精品福利av导航| 欧美丰满嫩嫩电影| 91麻豆精品秘密| 国产成人自拍在线| 精品一区二区三区免费观看 | 国产精品91xxx| 日韩福利电影在线观看| 亚洲日韩欧美一区二区在线| 国产无人区一区二区三区| 欧美日韩国产在线播放网站| 99久久国产综合精品女不卡| 国产东北露脸精品视频| 久久精品国产**网站演员| 天天综合色天天综合| 亚洲亚洲精品在线观看| 中文字幕一区二区三区在线观看| 久久综合久久鬼色中文字| 6080yy午夜一二三区久久| 欧美在线免费播放| 99精品热视频| 91在线观看地址| av在线一区二区三区| av亚洲精华国产精华精华 | 18成人在线观看| 国产精品电影院| 亚洲品质自拍视频网站| 国产精品国产三级国产普通话蜜臀 | 国产精品青草久久| 国产精品日产欧美久久久久| 中文字幕免费在线观看视频一区| 久久久国产精品午夜一区ai换脸| 国产午夜精品久久久久久免费视 | 成人精品国产免费网站| 国产**成人网毛片九色 | 视频精品一区二区| 日韩av电影天堂| 精品一区中文字幕| 国产精品资源网站| 国产a精品视频| 一本色道综合亚洲| 欧美三级资源在线| 日韩一二三区视频| 久久久天堂av| 亚洲欧洲日韩在线| 亚洲va欧美va人人爽| 日本亚洲免费观看| 国产馆精品极品| 91免费在线播放| 6080亚洲精品一区二区| 精品精品国产高清a毛片牛牛| 久久久国产精品午夜一区ai换脸| 国产精品不卡一区| 性感美女极品91精品| 韩国一区二区在线观看| 成人黄色软件下载| 欧美日韩一区二区在线视频| 精品国产第一区二区三区观看体验 | 亚洲午夜电影在线| 美女网站一区二区| 成人黄色电影在线| 欧美日韩www| 国产午夜一区二区三区| 亚洲一区二区在线观看视频| 韩国三级在线一区| av一区二区不卡| 日韩欧美综合一区| 亚洲三级免费电影| 久久激五月天综合精品| 国产成人综合在线| 4438x亚洲最大成人网| 日本一区二区三区视频视频| 亚洲超丰满肉感bbw| 国产福利一区在线| 欧美性色aⅴ视频一区日韩精品| 日韩午夜精品电影| 亚洲啪啪综合av一区二区三区| 美女性感视频久久| 欧美体内she精高潮| 欧美国产日产图区| 天天影视色香欲综合网老头| 成人av网址在线观看| 欧美一级黄色片| 亚洲精品中文在线影院| 国产麻豆视频一区| 欧美成人伊人久久综合网| 一区二区三区中文在线| 风间由美性色一区二区三区| 欧美成人午夜电影| 首页国产丝袜综合| 日本乱人伦一区| **性色生活片久久毛片| 国产一区二区三区精品视频| 欧美一区二区精品在线| 一区二区三区四区亚洲| 成人在线视频首页| 欧美精品一区二区高清在线观看| 亚洲一区二区不卡免费| 91视频一区二区三区| 国产视频亚洲色图| 狠狠色2019综合网| 精品日韩在线观看| 免费不卡在线观看| 欧美另类videos死尸| 一区二区三区日韩| 91老师国产黑色丝袜在线| 国产日韩综合av| 国产成人免费视频精品含羞草妖精| 日韩欧美中文字幕精品| 琪琪一区二区三区| 91麻豆精品国产91久久久资源速度| 亚洲午夜久久久| 欧美亚洲动漫精品| 亚洲一二三级电影| 欧美嫩在线观看| 五月激情综合色| 欧美日韩美少妇| 日本视频免费一区|