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

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

?? guotao.cpp

?? 郭濤算法 熟悉的朋友應該知道 演化計算相關
?? CPP
字號:
// GuoTao.cpp: implementation of the CGuoTao class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GuoTao.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CGuoTao::CGuoTao():m_PopSize(60),m_Precision(1e-10)
                  ,m_MaxGeneration(5800),m_ParentNum(8)  //雜交個體數目
{
	m_VaryNum = CIndividual::VaryNum;
	m_ConFuncNum = CIndividual::ConFuncNum;
	m_LowerBound=new double[m_VaryNum];
	m_UpperBound=new double[m_VaryNum];
	m_Population=new CIndividual[m_PopSize];
	m_MateParam = new double[m_ParentNum];

	m_EvalutionNum = 0;

	m_MaxOrMin = -1;
}

CGuoTao::~CGuoTao()
{
	delete []m_LowerBound;
	delete []m_UpperBound;
	delete []m_Population;
	delete []m_MateParam;
}

//-----------------random number generator-----------------
double CGuoTao::RandDoubleValue(double low,double high)
{
	double  val;
	val=((double)(rand()%1000)/1000.0)*(high-low)+low;
	
	return val;
}

int CGuoTao::RandIntValue(int Nmem)
{
	int newval;
	newval=(int)(((rand()%1000)/1000.0)*Nmem);
	
	return newval;
}

void CGuoTao::InitPopulation()
{
	int i,j;
	double temp;				//臨時保存產生的隨機實數

	//---------------------自變量約束---------------------
for (i=0;i<m_VaryNum;i++)  //變量個數
{//可以改為從文件讀取數據
	m_LowerBound[i]=0;   //各變量下界值
	m_UpperBound[i]=10;//個體中變量的取值范圍
}
	//---------------------自變量約束---------------------

	srand(GetTickCount());		//包含在windows.h中

	temp = 0.0;
	for(i=0;i<m_VaryNum;i++)
	{
		for (j=0;j<m_PopSize;j++)
		{
			temp = RandDoubleValue(m_LowerBound[i],m_UpperBound[i]);
			m_Population[j].XVary[i] = temp;	 //XVary[i]:保存個體自變量值
			m_Population[j].Dev[i]=3.0;
		}
	}
}

void CGuoTao::CalculateFitness(CIndividual &Individual)
{
	double *x;	//臨時存儲函數中的變量

	x=new double[m_VaryNum];

	for (int i=0;i<m_VaryNum;i++)
	{
		x[i]=0.0;
	}

	for (i=0;i<m_VaryNum;i++)
	{
		x[i]=Individual.XVary[i];
	}

	double temp1 = 0.0;
	double temp2 = 0.0;
	//------------------計算目標函數適應度值------------------
Individual.value = 0.0;
temp1 = 0.0;
temp2 = 1.0;
double temp3 = 0.0;
for (i=0;i<m_VaryNum;i++)
{
	 temp1 += pow(cos(x[i]),4);
	 temp2 *= pow(cos(x[i]),2);
	 temp3 += (i+1)*x[i]*x[i];
}
Individual.value = (temp1-2*temp2)/sqrt(temp3);
	//------------------計算目標函數適應度值------------------

	Individual.fitness = m_MaxOrMin * Individual.value;	//value to fitness
	
	m_EvalutionNum++;

	delete []x;
}

void CGuoTao::CalculateConFitness(CIndividual &Individual)
{
	double *x;	//臨時存儲函數中的變量

	x=new double[m_VaryNum];

	for (int i=0;i<m_VaryNum;i++)
	{
		x[i]=0.0;
	}

	for (i=0;i<m_VaryNum;i++)
	{
		x[i]=Individual.XVary[i];
	}
	
	double temp1 = 0.0;
	double temp2 = 0.0;
	//------------------計算約束函數適應度值------------------
//Individual.con[0] = 100-pow(x[0]-5,2)-pow(x[1]-5,2);
temp1 = 1.0;
temp2 = 0.0;
for (i=0;i<m_VaryNum;i++)
{
	 temp1 *= x[i];
	 temp2 += x[i];
}
Individual.con[0] = 0.75-temp1;
Individual.con[1] = temp1-0.75*m_VaryNum;
	//------------------計算約束函數適應度值------------------

	Individual.conFitness = 0.0;
	for (i=0;i<m_ConFuncNum;i++)
	{
		if (Individual.con[i] <= 0.0)
		{
			Individual.con[i] = 0.0;
		}
		Individual.conFitness += Individual.con[i];
	}

	//判斷個體是否在可行區域
	if (Individual.conFitness > 0)
	{
		Individual.feasible = 0;
	}
	else
		Individual.feasible = 1;

	delete []x;
}

void CGuoTao::CalculatePopFitness()
{
	for (int i=0;i<m_PopSize;i++)
	{
		CalculateFitness(m_Population[i]);
		if( m_ConFuncNum != 0)
		{
			CalculateConFitness(m_Population[i]);
		}
	}
}

bool CGuoTao::Better(CIndividual &Individual1,CIndividual &Individual2)
{
	if (Individual1.conFitness < Individual2.conFitness)
	{
		return true;
	}
	else if (Individual1.conFitness > Individual2.conFitness)
	{
		return false;
	}
	else if((Individual1.conFitness == Individual2.conFitness)
		&& (Individual1.fitness < Individual2.fitness))
	{
		return true;
	}
	else
	{
		return false;
	}
}

void CGuoTao::FindBestAndWorst()
{
	int i;

	//找出最好個體
	m_BestIndex=0;
	for (i=1;i<m_PopSize;i++)
	{
		if(Better(m_Population[i],m_Population[m_BestIndex]))
		{
			m_BestIndex=i;
		}
	}
	m_BestIndividual=m_Population[m_BestIndex];

	//找出最壞個體
	m_WorstIndex=0;
	for (i=1;i<m_PopSize;i++)
	{
		if(Better(m_Population[m_WorstIndex],m_Population[i]))
		{
			m_WorstIndex=i;
		}
	}
	m_WorstIndividual=m_Population[m_WorstIndex];
}

void CGuoTao::FindBestFitnessIndv()
{
	int i;
	int index = 0;

	for (i=0;i<m_PopSize;i++)
	{
		if (m_Population[i].fitness < m_Population[index].fitness)
		{
			index = i;
		}
	}
	m_IndvFitness = m_Population[index];
}

void CGuoTao::FindBestConFitnessIndv()
{
	int i;
	int index = 0;

	for (i=0;i<m_PopSize;i++)
	{
		if (m_Population[i].conFitness < m_Population[index].conFitness)
		{
			index = i;
		}
	}
	m_IndvConfitness = m_Population[index];
}

void CGuoTao::Cteate_a()
{
	double sumA,tmpMin,tmpMax,MaxA,MinA;
	
	MinA=-0.5;
    MaxA=1.5;
    for (int i=0;i<m_ParentNum;i++)
	{
		m_MateParam[i] = 0.0;
	}

	sumA=0.0;
	for(i=0;i<=m_ParentNum-2;i++)
	{
		double mt1;
		mt1=m_ParentNum-i+1;
		tmpMin=1-sumA-MaxA*mt1;
		tmpMax=1-sumA-MinA*mt1;
		if(tmpMin<MinA)
			tmpMin=MinA;
		if(tmpMax>MaxA)
			tmpMax=MaxA;
		 m_MateParam[i]=RandDoubleValue(tmpMin,tmpMax);
		 sumA=sumA+m_MateParam[i];
	}
	m_MateParam[m_ParentNum-1]=1-sumA;
}

void CGuoTao::GuoTao()
{
	int i,j;
	int *MatePool;
    double low,up;
	
	MatePool = new int[m_ParentNum];

    for(i=0;i<m_ParentNum;i++)
	{
		MatePool[i]=i;
	}

	//generate the mate pool
	i =0;
	while ( i < m_ParentNum )
	{
		MatePool[i] = RandIntValue(m_PopSize-i);
		j = 0;
		while ( j < i )
		{
			while ( MatePool[i] == MatePool[j])
			{
				MatePool[i] = RandIntValue(m_PopSize-i);
			}
			j++;
		}
		i++;
	}
	MatePool[m_ParentNum-1] = m_BestIndex;

	//generate the mate parameter
	Cteate_a();

	//generate the offspring using the multi-parent crossover
	for(i=0;i<m_VaryNum;i++)
	{
		//Cteate_a();
		m_tmpIndividual.XVary[i] = 0.0;
		for(j=0;j<m_ParentNum;j++)
		{
			m_tmpIndividual.XVary[i] += m_MateParam[j]*m_Population[MatePool[j]].XVary[i];
		}
		
	    low = m_LowerBound[i];
		up  = m_UpperBound[i];

		if (m_tmpIndividual.XVary[i] < low)
		{
			m_tmpIndividual.XVary[i] = low+RandDoubleValue(0,1)*(up-low);
		}
		if (m_tmpIndividual.XVary[i] > up)
		{
			m_tmpIndividual.XVary[i] = up-RandDoubleValue(0,1)*(up-low);
		}
	}

	//calculate the fitness of the offspring
	CalculateFitness(m_tmpIndividual);
	if (m_ConFuncNum != 0)
	{
		CalculateConFitness(m_tmpIndividual);
	}
}

void CGuoTao::Display(int generation)
{
	if(generation%1==0)  //while(generation<m_MaxGeneration)?
	{
		//當前最好個體輸出到屏幕
		cout<<setw(5)<<generation;
		cout<<setw(8)<<m_EvalutionNum;

		//顯示約束函數的值
		if (m_ConFuncNum != 0)
		{
			cout<<setw(15)<<m_BestIndividual.conFitness;
 
		}
		cout.precision(10);					//設置輸出精度
		cout<<setw(20)<<m_BestIndividual.value<<endl;
	}
}

void CGuoTao::Report(int generation,ofstream &ResultFile)
{
	if(generation%1==0)
	{
		//當前最好個體輸出到文件
		ResultFile<<setw(5)<<generation;
		ResultFile<<setw(8)<<m_EvalutionNum;
		ResultFile.precision(10);			//設置輸出精度
		ResultFile<<setw(20)<<m_BestIndividual.value<<endl;
	}
}

void CGuoTao::RunGT()
{
	ofstream ResultFile("result.txt");
	ResultFile<<setw(5)<<"Gene";
	ResultFile<<setw(8)<<"Num";
	ResultFile.precision(10);
	ResultFile<<setw(20)<<"Value"<<endl;

	srand((unsigned)time(0));

	InitPopulation();
	CalculatePopFitness();
	FindBestAndWorst();

	int generation = 0;		//當前演化代數
	while ((generation < m_MaxGeneration) && 
		(fabs(m_BestIndividual.fitness - m_WorstIndividual.fitness) > m_Precision))
	{
		generation++;
		if (generation > m_MaxGeneration)
		{
			break;
		}
		if (fabs(m_BestIndividual.fitness - m_WorstIndividual.fitness) < m_Precision)
		{
			break;
		}

		for (int i=0;i<m_PopSize;i++)  //popsize:群體大小
		{
			GuoTao();

			if (Better(m_tmpIndividual,m_WorstIndividual))
			{
				m_Population[m_WorstIndex] = m_tmpIndividual;
			}
			if (Better(m_tmpIndividual,m_BestIndividual))
			{
				m_Population[m_BestIndex] = m_tmpIndividual;
			}

			FindBestAndWorst();
		}
	
//		GuoTao();
//
//		if (Better(m_tmpIndividual,m_WorstIndividual))
//		{
//			m_Population[m_WorstIndex] = m_tmpIndividual;
//		}
//		if (Better(m_tmpIndividual,m_BestIndividual))
//		{
//			m_Population[m_BestIndex] = m_tmpIndividual;
//		}
//
//		FindBestAndWorst();

		Display(generation);
		Report(generation,ResultFile);
	}
		
	ResultFile.close();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品亚洲人成在线| 欧美r级电影在线观看| 欧美日韩国产首页| 欧美精品一区二区高清在线观看| 国产精品成人一区二区艾草| 蜜臀av在线播放一区二区三区| 国产+成+人+亚洲欧洲自线| 欧美视频完全免费看| 欧美国产精品中文字幕| 午夜婷婷国产麻豆精品| 波多野结衣精品在线| 精品国产网站在线观看| 亚洲va韩国va欧美va| 99天天综合性| 亚洲国产精品传媒在线观看| 毛片av一区二区| 欧美另类高清zo欧美| 一区二区三区精密机械公司| 国产aⅴ综合色| 久久久一区二区| 久久精品国产一区二区三区免费看| 91黄色激情网站| 中文字幕一区二区三区在线观看| 国产黄色精品视频| 欧美精品一区二区三区在线播放| 偷拍与自拍一区| 欧美视频一区二区三区四区| 亚洲一本大道在线| 欧美主播一区二区三区美女| 亚洲激情第一区| 91丨九色丨黑人外教| 1024成人网| 色呦呦网站一区| 亚洲男人的天堂一区二区| 97aⅴ精品视频一二三区| 最新日韩在线视频| 色综合天天做天天爱| 亚洲精品乱码久久久久久| 91日韩精品一区| 一区二区三区日韩欧美| 欧美午夜寂寞影院| 五月婷婷久久丁香| 欧美一区二区在线看| 免费观看久久久4p| 精品国产乱码久久久久久影片| 国产在线精品国自产拍免费| 久久久国产精品午夜一区ai换脸| 国产酒店精品激情| 国产精品传媒入口麻豆| 欧日韩精品视频| 日韩经典中文字幕一区| 欧美mv日韩mv国产网站app| 国产精品一区三区| 亚洲天堂精品在线观看| 欧美日本一道本| 国内精品写真在线观看| 18欧美亚洲精品| 欧美精品久久久久久久多人混战| 久久精品国产亚洲高清剧情介绍| 久久精品日韩一区二区三区| 99久久免费精品| 天天做天天摸天天爽国产一区| www欧美成人18+| 91伊人久久大香线蕉| 亚洲国产精品麻豆| 久久网这里都是精品| 色综合久久久久综合99| 日本美女一区二区三区视频| 欧美精彩视频一区二区三区| 在线免费观看成人短视频| 麻豆精品在线观看| **欧美大码日韩| 337p日本欧洲亚洲大胆精品 | 久久婷婷色综合| 91在线观看免费视频| 久久精品国产亚洲a| 国产精品国产馆在线真实露脸| 欧美日韩日日夜夜| 不卡的av电影在线观看| 日韩福利电影在线观看| 亚洲视频免费看| 精品理论电影在线观看| 在线看国产一区二区| 国产馆精品极品| 日日摸夜夜添夜夜添精品视频| 精品播放一区二区| 欧美日韩另类国产亚洲欧美一级| 国产成a人无v码亚洲福利| 视频一区视频二区中文字幕| 中文字幕亚洲综合久久菠萝蜜| 3d动漫精品啪啪1区2区免费 | 蜜臀av性久久久久蜜臀av麻豆| 国产精品国产馆在线真实露脸| 日韩欧美不卡一区| 日本精品免费观看高清观看| 成人精品视频一区| 国产在线国偷精品免费看| 天天操天天色综合| 亚洲一区二区影院| 中文字幕佐山爱一区二区免费| 2024国产精品| 欧美岛国在线观看| 日韩一区二区免费高清| 欧美日韩五月天| 在线观看视频一区| 色综合色狠狠综合色| thepron国产精品| 高潮精品一区videoshd| 国产老肥熟一区二区三区| 韩国三级电影一区二区| 久久精品二区亚洲w码| 热久久一区二区| 国产精品 欧美精品| 激情伊人五月天久久综合| 全部av―极品视觉盛宴亚洲| 亚洲aⅴ怡春院| 午夜欧美电影在线观看| 亚洲成人精品一区二区| 亚洲成人动漫在线观看| 亚洲国产一二三| 日韩专区中文字幕一区二区| 日韩国产在线一| 欧美a级一区二区| 九九九精品视频| 国产成人精品一区二区三区网站观看 | 97精品久久久午夜一区二区三区| 粉嫩13p一区二区三区| 成人国产在线观看| 91免费看`日韩一区二区| 色综合激情久久| 欧美久久婷婷综合色| 日韩一二在线观看| 久久精品视频在线看| 18欧美亚洲精品| 亚洲成人自拍偷拍| 久久99最新地址| 成+人+亚洲+综合天堂| 一本大道av伊人久久综合| 欧美日韩精品一区二区三区| 欧美一区二区三区色| 久久蜜桃av一区二区天堂| 国产精品久久久久久久久快鸭| 亚洲精品视频一区| 日韩国产欧美在线观看| 激情文学综合网| 99re亚洲国产精品| 欧美丰满一区二区免费视频| 2017欧美狠狠色| 亚洲猫色日本管| 玖玖九九国产精品| av中文字幕亚洲| 91精品国产色综合久久不卡电影 | 五月天精品一区二区三区| 卡一卡二国产精品| 91美女在线视频| 欧美激情中文字幕一区二区| 亚洲自拍偷拍欧美| 国产在线日韩欧美| 91精彩视频在线| 国产日韩欧美激情| 午夜a成v人精品| 99re8在线精品视频免费播放| 欧美日韩高清在线| 中文一区在线播放| 免费在线观看视频一区| 91一区二区在线| 久久久久青草大香线综合精品| 亚洲黄色录像片| 国产·精品毛片| 日韩欧美成人午夜| 亚洲午夜羞羞片| 99精品久久99久久久久| xf在线a精品一区二区视频网站| 亚洲无人区一区| 99久久夜色精品国产网站| 久久精品欧美日韩精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 色综合久久88色综合天天| 国产精品色呦呦| 韩国av一区二区| 91麻豆精品国产91久久久更新时间| 综合自拍亚洲综合图不卡区| 国产激情视频一区二区三区欧美| 91麻豆精品国产91久久久久| 一区二区三区日韩在线观看| 成人开心网精品视频| 久久精品欧美日韩精品 | 亚洲成人在线免费| 色综合色狠狠天天综合色| 国产精品毛片久久久久久久| 国产一区二区精品久久99| 日韩一区二区免费在线电影| 日韩经典中文字幕一区| 欧美日韩三级一区二区| 亚洲第一福利一区| 欧美亚洲综合另类| 亚洲最快最全在线视频| 欧美亚一区二区| 亚洲自拍偷拍网站| 欧美日韩亚洲综合在线|