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

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

?? genetic.cpp

?? 遺傳算法接口代碼,可根據實際問題調用里邊的函數。
?? CPP
字號:
// Genetic.cpp: implementation of the CGenetic class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"

#include "Genetic.h"
#include"math.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
/////張純禹  2001年   chunyu79@hotmail.com
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGenetic::CGenetic()
{pmutation=0.01;//變異概率
 pcross=0.9;//交叉概率
 maxgen=5000;//最大進化代數
 iVarNo=0;//染色體數目
 sumfitness=0.0;
 gen=0;
 IsSetScope=false;//還未設定個變量范圍
 IsStoped=false;
 for(int i=0;i<MAXBESTNUM;i++)
   bestchrom[i].fitness=0;
 iBestNum=0;
 dblCre=0.0;
 dblDifference=0.15;
 best.fitness=0.0;
 
 initM(MATCOM_VERSION);
 }

CGenetic::~CGenetic()
{exitM();
}

int CGenetic::rselect()
{double rand1,partsum;
 int j=0;
 partsum=0;
 rand1=rand()*sumfitness;
 do{
	 partsum=partsum+newpop[j].fitness;
	 j++;
 }while((partsum<rand1)&&(j<POPSIZE));
 return (j-1);
}

void CGenetic::generation()
{int i,r1,r2;
 CHROM tempChrom;
 //進行統計,計算newpop單個染色體的適應度,選出最優染色體
 statistic(newpop);
 //從1到POPSIZE循環,根據適應度選擇,進行交叉,組成oldpop
    for(i=0;i<POPSIZE;i+=2){
		r1=rselect();
		r2=rselect();
		cross(newpop[r1],newpop[r2],i);
	}

 //	oldpop,newpop進行調換
	for(i=0;i<POPSIZE;i++){
		tempChrom=newpop[i];
		newpop[i]=oldpop[i];
		oldpop[i]=tempChrom;
	}
 //從1到POPSIZE循環,對newpop進行變異
    for(i=0;i<POPSIZE;i++)
	    mutation(&newpop[i]);
}

bool CGenetic::begin()
{MSG msg;
 mData=zeros(1,bpnet->iInput);
 mResult=zeros(1,bpnet->iOutput);
for(int i=gen;i<maxgen;i++)
{if(IsStoped)
  break;
 if(bpnet->iOutput>1){
	::MessageBox(NULL,"目前只支持一個輸出量!","錯誤",MB_OK);
	return(false);
 }
 if(gen==0)
  init();//如果剛開始運算,初始化
 generation();
 gen++;
 //防止假死機
 ::PeekMessage(&msg,NULL,0,0,PM_REMOVE);
 ::DispatchMessage(&msg);
 msg.message=-1;
 ::DispatchMessage(&msg);//這樣可以消除屏閃
}

return(true);
}


void CGenetic::cross(CHROM chrom1, CHROM chrom2, int iPlace)
{double c;
 int i=0;
//以交叉概率進行交叉,并對交叉后的新染色體進行判別
//循環,直到產生合法的新染色體
 do{if(flip(pcross)){//交叉概率
	c=rand();
    for(i=0;i<iVarNo;i++){
	oldpop[iPlace].chrom[i]=c*chrom1.chrom[i]+(1-c)*chrom2.chrom[i];
	oldpop[iPlace+1].chrom[i]=(1-c)*chrom1.chrom[i]+c*chrom2.chrom[i];
	}
	}
	else//直接賦值,不再交叉
	{oldpop[iPlace]=chrom1;
	 oldpop[iPlace+1]=chrom2;
	}
}while(!identify(oldpop[iPlace])||!identify(oldpop[iPlace+1]));

}

bool CGenetic::flip(double possibility)
{double ppp;
ppp=rand();
if(ppp<=possibility)
 return (true);
else 
 return (false);
}

void CGenetic::mutation(CHROM *chrome)
{double m=10;
 int i=0;
 CHROM temp1,temp2;
 if(flip(pmutation)){ //以變異概率進行變異
	 do{ for(i=0;i<iVarNo;i++)
		   temp2.chrom[i]=chrome->chrom[i];
         for(i=0;i<iVarNo;i++)
			 temp1.chrom[i]=randxy(varminmax[i][0]-varminmax[i][1],varminmax[i][1]-varminmax[i][0])/10;
          for(i=0;i<iVarNo;i++)
			  temp2.chrom[i]+=m*temp1.chrom[i];
		  if(!identify(temp2))
			  m=(double)m/(double)(2.0);
	 }while(!identify(temp2));
 }
 else{
	 for(i=0;i<iVarNo;i++)
		   temp2.chrom[i]=chrome->chrom[i];
 }
 for(i=0;i<iVarNo;i++)
	 chrome->chrom[i]=temp2.chrom[i];
}

void CGenetic::statistic(CHROM pop[])
{int i;
 sumfitness=0;
 //循環,計算單個染色體的適應度,以及sumfitness
 for(i=0;i<POPSIZE;i++){
   pop[i].fitness=CalFitness(pop[i]);
   sumfitness+=pop[i].fitness;}
 //選出符合條件的染色體
 for(i=0;i<POPSIZE;i++){
	if(pop[i].fitness>=dblCre&&IsNew(pop[i]))
		bestchrom[iBestNum++]=pop[i];
	if(pop[i].fitness>best.fitness)
		best=pop[i];//紀錄最佳染色體
}

}

void CGenetic::init()
{//對種群進行隨機初始化
int i,j; 
srand( (unsigned)time( NULL ) );

if(iVarNo!=0&&IsSetScope)
{for(i=0;i<POPSIZE;i++){
	for(j=0;j<iVarNo;j++){//在最值間隨機賦值
		newpop[i].chrom[j]=randxy(varminmax[j][0],varminmax[j][1]);
        oldpop[i].chrom[j]=newpop[i].chrom[j];
	}
}
}
 else
 {if(iVarNo==0)::MessageBox(NULL,"變量數不能為0!","錯誤...",MB_OK);	
  else if(!IsSetScope) ::MessageBox(NULL,"還未設置變量范圍","錯誤...",MB_OK);
 }
}



double CGenetic::randxy(double x, double y)
{ return (x+(y-x)*rand());

}

void CGenetic::setscope(double scope[MAXVARNO][2], int iNo)
{int i;
for(i=0;i<iNo;i++)
{varminmax[i][0]=scope[i][0];//最小值
 varminmax[i][1]=scope[i][1];//最大值
}
IsSetScope=true; 

}

double CGenetic::CalFitness(CHROM chrome)
{ double dblResult;
 int i;
 for(i=0;i<iVarNo;i++)
	 mData.r(i+1)=chrome.chrom[i];
 mResult=bpnet->simulate(mData); 
 dblResult=mResult.r(1);
 return(dblResult); 
}



bool CGenetic::identify(CHROM chrome)
{int i=0;
 bool IsOk=true;;
 for(i=0;i<iVarNo;i++){
	 if(chrome.chrom[i]>varminmax[i][1]||chrome.chrom[i]<varminmax[i][0])
	 {IsOk=false;
	 break;}
 }
 return (IsOk);
}



double CGenetic::difference(CHROM ch1, CHROM ch2)
{double differ,temp1=0.0,temp2=0.0,temp3=0.0,dblTemp1,dblTemp2;
 int i; 
 for(i=0;i<iVarNo;i++){
	 dblTemp1=ch1.chrom[i]/(varminmax[i][1]-varminmax[i][0]);
	 dblTemp2=ch2.chrom[i]/(varminmax[i][1]-varminmax[i][0]);
	 temp1=temp1+fabs(dblTemp1-dblTemp2)*fabs(dblTemp1-dblTemp2);
     temp2+=dblTemp1*dblTemp1;
	 temp3+=dblTemp2*dblTemp2;
	}
 temp2=(temp2>temp3)?temp2:temp3;//取較大者
 differ=sqrt(temp1)/sqrt(temp2);
 return (differ);
}

bool CGenetic::IsNew(CHROM ch)
{int i;
 bool IsDifferent;
 IsDifferent=true;
 for(i=0;i<iBestNum;i++)
	 if((difference(ch,bestchrom[i])<dblDifference)&&(angle(ch,bestchrom[i])<dblAngle))
	 {IsDifferent=false;
      break;
	 }
return (IsDifferent);

}

double CGenetic::angle(CHROM ch1, CHROM ch2)
{double pi,temp1=0.0,temp2=0.0,temp3=0.0,dblCos=0.0,angle;
 int i=0;
 double dblTemp1,dblTemp2;
 for(i=0;i<iVarNo;i++)
 {dblTemp1=ch1.chrom[i]/(varminmax[i][1]-varminmax[i][0]);
  dblTemp2=ch2.chrom[i]/(varminmax[i][1]-varminmax[i][0]);
  temp1+=dblTemp1*dblTemp2;
  temp2+=dblTemp1*dblTemp1;
  temp3+=dblTemp2*dblTemp2;
 }
 temp2=sqrt(temp2);
 temp3=sqrt(temp3);
 dblCos=temp1/(temp2*temp3);
 pi=acos(-1.0);
 angle=acos(dblCos);
 angle=(angle/pi)*180.0;//轉化為角度
 return (angle);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频你懂的| 在线观看免费亚洲| 麻豆freexxxx性91精品| 天天综合日日夜夜精品| 日韩中文字幕一区二区三区| 青青草国产成人av片免费| 美女脱光内衣内裤视频久久影院| 欧美aaaaa成人免费观看视频| 免费看日韩精品| 国产激情视频一区二区在线观看| 国产成人午夜精品5599| 99视频一区二区三区| 色综合 综合色| 日韩一区二区电影在线| 久久女同性恋中文字幕| 日本一区二区免费在线| 亚洲天堂免费看| 日韩不卡一区二区三区| 国产在线精品免费av| 粉嫩绯色av一区二区在线观看| 不卡av在线网| 欧美色手机在线观看| 日韩午夜在线观看| 国产日韩高清在线| 亚洲成av人**亚洲成av**| 国产一区在线看| 91视频国产资源| 欧美一卡二卡在线| 久久久91精品国产一区二区精品| 亚洲色图欧洲色图| 乱一区二区av| 91福利视频网站| 久久久www免费人成精品| 亚洲精品欧美在线| 国产精品一区三区| 欧美美女bb生活片| 成人欧美一区二区三区黑人麻豆| 亚洲成a人v欧美综合天堂下载| 国产一区二区在线看| 欧美视频精品在线观看| 国产三级精品三级| 蜜臀av性久久久久蜜臀av麻豆 | 午夜国产精品一区| 丁香啪啪综合成人亚洲小说| 欧美日本视频在线| 综合av第一页| 国产一区视频在线看| 欧美人与性动xxxx| 中文字幕高清一区| 国产精品中文字幕日韩精品| 欧美日韩一区 二区 三区 久久精品| 久久蜜桃av一区精品变态类天堂| 亚洲成a人v欧美综合天堂| 99r国产精品| 国产欧美精品区一区二区三区 | 亚洲福利视频导航| 成人激情免费电影网址| 欧美大片拔萝卜| 午夜不卡av在线| 在线视频欧美精品| 最新国产の精品合集bt伙计| 国产精品自在在线| 精品国产免费久久| 蓝色福利精品导航| 欧美一区二区美女| 日本最新不卡在线| 91麻豆精品国产自产在线| 亚洲电影在线播放| 欧美日韩一区二区在线观看视频| 亚洲图片另类小说| av不卡免费电影| 亚洲免费在线观看| 色妞www精品视频| 亚洲精品免费在线播放| 色丁香久综合在线久综合在线观看| 国产精品久久久久久久裸模 | 一本色道a无线码一区v| 亚洲欧洲一区二区三区| 成人高清伦理免费影院在线观看| 欧美国产97人人爽人人喊| 成人午夜精品在线| 亚洲精品国产精品乱码不99| 一本色道久久综合亚洲精品按摩| 一区二区三区视频在线观看| 欧美在线不卡视频| 日韩激情在线观看| 精品久久久久久久一区二区蜜臀| 久久99久久99精品免视看婷婷 | 欧美日韩在线播放三区四区| 五月婷婷激情综合| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美挠脚心视频网站| 日韩高清在线不卡| 国产清纯在线一区二区www| 97久久精品人人做人人爽50路| 亚洲美女免费视频| 欧美一区二区三区免费大片| 国产一区欧美日韩| 亚洲手机成人高清视频| 欧美猛男男办公室激情| 久久99精品久久久| 中文字幕中文在线不卡住| 欧美日韩一区二区三区免费看| 免费在线观看成人| 欧美激情一区二区在线| 欧美自拍偷拍午夜视频| 国产原创一区二区三区| 亚洲色图制服诱惑| 精品久久久久久久久久久院品网| 成人高清视频免费观看| 日韩国产欧美在线播放| 国产精品乱码久久久久久| 欧美天堂亚洲电影院在线播放| 国产综合一区二区| 一区二区在线免费| www国产亚洲精品久久麻豆| 一本久久a久久免费精品不卡| 久久99久久99| 亚洲午夜久久久久久久久电影院 | 亚洲免费观看高清完整版在线观看熊 | 国产精品免费视频一区| 欧美一区二区三区免费| 91久久精品一区二区| 国产成人av电影在线| 久久国产剧场电影| 亚洲二区在线视频| 国产精品国产馆在线真实露脸 | 色域天天综合网| 国产成人在线视频免费播放| 蜜臀av一区二区| 日韩精品欧美成人高清一区二区| 亚洲图片欧美激情| 国产精品看片你懂得| 欧美不卡一二三| 91精品国产综合久久久久久久 | 国产一区二区在线看| 日本vs亚洲vs韩国一区三区二区| 亚洲欧美日韩国产综合在线 | 亚洲福利视频一区| 亚洲精品免费看| 国产精品欧美极品| 国产欧美日本一区视频| 2020国产精品久久精品美国| 欧美xfplay| 精品国产sm最大网站免费看| 9191成人精品久久| 51精品秘密在线观看| 欧美精选午夜久久久乱码6080| 欧美在线观看视频一区二区| 91麻豆精品在线观看| 91日韩在线专区| 色老汉一区二区三区| 色爱区综合激月婷婷| 91久久线看在观草草青青| 欧美综合亚洲图片综合区| 91福利社在线观看| 欧美系列一区二区| 欧美一区二区免费观在线| 欧美va亚洲va香蕉在线| 精品伦理精品一区| 国产色综合一区| 国产精品伦理在线| 一区二区三区四区精品在线视频| 亚洲在线视频网站| 奇米精品一区二区三区在线观看一| 麻豆freexxxx性91精品| 国产一区二区主播在线| 99久久精品免费精品国产| 色婷婷狠狠综合| 欧美老肥妇做.爰bbww视频| 日韩欧美一二区| 国产日本一区二区| 亚洲男同性恋视频| 日本亚洲三级在线| 国产精品一区二区三区网站| av不卡一区二区三区| 欧美日本一区二区三区| 欧美一级黄色片| 国产精品久久久久aaaa| 午夜av一区二区| 国产成人在线观看| 欧美性生活一区| 精品国产凹凸成av人网站| 日韩一区中文字幕| 久久爱www久久做| 91片黄在线观看| 精品国产一区二区精华| 亚洲人成小说网站色在线 | 97国产精品videossex| 宅男噜噜噜66一区二区66| 久久久久久电影| 亚洲高清免费观看高清完整版在线观看| 麻豆成人综合网| 欧美视频一区二区在线观看| 久久久国产综合精品女国产盗摄| 亚洲一二三四区| 成人激情免费网站| 久久婷婷综合激情| 日本欧美大码aⅴ在线播放| 92国产精品观看|