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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? a.cpp

?? 用C撰寫遺傳基因法
?? CPP
字號:
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
//The Definition of Constant

#define POPSIZE 100//population size

//The Definition of User Data
//(For different problem,there are some difference.)

int PopSize=100; //population size
int MaxGeneration=200; //max.number of generation
double Pc=0.6; //probalility of crossover
double Pm=0.001; //probalility of mutation

//The definition of Data Structure


struct individual //data structure of individual 
{
	char chrom[34];//a string of code representing individual

	int value[11]; //object value of this individual
	double fitness; //fitness value of this individual 
};

//The definition of Global Variables 
int CHROMLENGTH=33;
int	LENGTH=3;
int generation; //number of generation
int best_index; //index of best individual
int worst_index;//index of worst individual

struct individual bestindividual;
//best individual of current generation
struct individual worstindividual; 
//worst individual of current generation
struct individual currentbest ; //best individual by now 
struct individual population [POPSIZE]; //population
//Declaration of Prototype

void GenerateInitialPopulation (void);
void GenerateNextPopulation (void );
void EvaluatePopulation (void);
long DecodeChromosome (char*,int,int);
void CalculateObjectValue(void);
void CalculateFitnessValue(void);
void FindBestAndWorstIndividual(void);
void PerformEvolution(void);
void SelectionOperator(void);
void CrossoverOperator(void);
void MutationOperator(void);
void OutputTextReport(void);

//main program

void main(void)
{
	generation=0;
	GenerateInitialPopulation();
	EvaluatePopulation();
	while(generation<MaxGeneration)
	{
		generation++;
		GenerateNextPopulation();
		EvaluatePopulation();
		PerformEvolution();
		OutputTextReport();
	}
	cout<<"d11="<<currentbest.value[10]<<" ";
	cout<<"d10="<<currentbest.value[9]<<" ";	
	cout<<"d9="<<currentbest.value[8]<<" ";
	cout<<"d8="<<currentbest.value[7]<<" ";
	cout<<"d7="<<currentbest.value[6]<<" ";
	cout<<"d6="<<currentbest.value[5]<<" ";
	cout<<"d5="<<currentbest.value[4]<<" ";
	cout<<"d4="<<currentbest.value[3]<<" ";
	cout<<"d3="<<currentbest.value[2]<<" ";
	cout<<"d2="<<currentbest.value[1]<<" ";
	cout<<"d1="<<currentbest.value[0]<<" ";
}
 
//Function:Generate the first population.
//Variable:None

void GenerateInitialPopulation(void)
{
	int i,j;

	//randomize();
	srand(time(0));
	for (i=0;i<PopSize; i++)
	{
		for(j=0;j<CHROMLENGTH;j++)
	{
			population[i].chrom[j]=(rand()%10<5)?'0':'1';
		}
		population[i].chrom[CHROMLENGTH]='\0';
	}
}

//Function; Initialize the next generation.
//Variable:None.

void GenerateNextPopulation(void)
{
	SelectionOperator();
	CrossoverOperator();
	MutationOperator();
}

//Function:Evaluate population according to certain formula.
//Variable; None.

void EvaluatePopulation(void)
{
	CalculateObjectValue(); //Calculate object value
	CalculateFitnessValue();//calculate fitness value
	FindBestAndWorstIndividual();//find the best and worst individual
}

//Function:To decode a binary chromosome into a decimal integer.
//Varible:None.
//Note; The returned value may be plus,of minus.
//For different coding method,this value may 
//be changed int "undigned int".
long DecodeChromosome(char *string ,int point,int length)
{
	int i;
	long decimal=0L;
	char*pointer;

	for(i=0,pointer=string+point;i<length;i++,pointer++)
	{if(*pointer-'0')
	decimal +=(long)pow(2,i);
	}
	return (decimal);

}

//Function :to calculate objectvalue
//Variable: None.
void CalculateObjectValue(void)
{
	int i;
	int temp[32];
	//Rosebrock function 
	for (i=0; i<PopSize; i++)
	{
		for (int j=0;j<11;j++)//初始化
		{population[i].value[j]=0;}

		for (int k=0;k<11;k++) //解瑪
		{temp[k]=DecodeChromosome(population[i].chrom,k*LENGTH,LENGTH);}

		for (int m=0;m<11;m++)//賦值
		{if(temp[m]=0) temp[m]=20;
         if(temp[m]=1) temp[m]=25;
         if(temp[m]=2) temp[m]=32;
         if(temp[m]=3) temp[m]=40;
         if(temp[m]=4) temp[m]=50;
         if(temp[m]=5) temp[m]=65;
         if(temp[m]=6) temp[m]=80;
         if(temp[m]=7) temp[m]=100;
		}

		for(int l=0;l<11;l++) //賦值 
		{population[i].value[l]=temp[l];}

	}
}

//Function:To calculate fitness value.
//Variable:None.

void CalculateFitnessValue(void)
{
	int i,a,b,t;
	int A[11]={0};
	double temp1=0;
	double k0,k1,k2,k3,k4,k5,k6,k7,k8,k9,k10;
	
	for (i=0;i<PopSize; i++)
	{
		for(a=1;a<11;a++)
			for(b=10;b>=a;b--)
			{if(population[i].value[b-1]>population[i].value[b])
			{
				t=population[i].value[b-1];
				population[i].value[b-1]=t;
			}
			}

			for (int j=0;j<11;j++)
			{A[j]=population[i].value[j];}

			k0=A[0];k1=A[1];k2=A[2];k3=A[3];k4=A[4];k5=A[5];k6=A[6];k7=A[7];k8=A[8];k9=A[9];k10=A[10];
			
			temp1=0.00197*(100*(pow((double)k0,1.53)+pow((double)k3,1.53)+pow((double)k1,1.53)+pow((double)k4,1.53)+
				pow((double)k2,1.53)+pow((double)k5,1.53))+50*(pow((double)k7,1.53)+pow((double)k8,1.53))+160*pow((double)k6,1.53)+
				110*pow((double)k9,1.53)+90*pow((double)k10,1.53))+391/pow((double)150,1.852)*(pow((double)11,1.852*(100/pow((double)k0,4.871)+
				100/pow((double)k3,4.872)+160/pow((double)k6,4.871)+100/pow((double)k1,4.871)+100/pow((double)k4,4.871)+50/pow((double)k7,4.871)+
				100/pow((double)k2,4.871)+100/pow((double)k5,4.871)+50/pow((double)k8,4.871))+110*pow((double)22,1.852)/pow((double)k9,1.852)+
				90*pow((double)33,1.852)/pow((double)k10,4.871)));

			if ((pow((double)33,1.75)/pow((double)k10,4.75)*90+pow((double)22,1.75)/pow((double)k9,4.75)*110+pow((double)11,1.75)/pow((double)k6,4.75)*160+
				pow((double)11,1.75)/pow((double)k3,4.75)*100+pow((double)11,1.75)/pow((double)k0,4.75)*100)<=9.4&&(pow((double)33,1.75)/pow((double)k10,4.75)*90+
				pow((double)22,1.75)/pow((double)k9,4.75)*110+pow((double)11,1.75)/pow((double)k7,4.75)*50+pow((double)11,1.75)/pow((double)k4,4.75)*100+
				pow((double)11,1.75)/pow((double)k1,4.75)*100)<=11.4&&(pow((double)33,1.75)/pow((double)k10,4.75)*90+pow((double)11,1.75)/pow((double)k8,4.75)*50+
				pow((double)11,1.75)/pow((double)k5,4.75)*100+pow((double)11,1.75)*100)<=13.2)

				population[i].fitness=10000-temp1;
			else
				population[i].fitness=0;
	}
}

//Function :to find out the best individual so far current generation.
//Varialbe:None.

void FindBestAndWorstIndividual(void)
{
	int i;
	//find out the best and worst individual of this generation
	bestindividual=population[0];
	worstindividual=population[0];

	for (i=1;i<PopSize; i++){
		if (population[i].fitness>bestindividual.fitness){
			bestindividual=population[i];
			best_index=i;

			for (int j=0;j<11;j++)
			{bestindividual.value[j]=population[i].value[j];}
		}
		else if (population[i].fitness<worstindividual.fitness){
			worstindividual=population[i];
			worst_index=i;
			for (int k=0;k<11;k++)
			{worstindividual.value[k]=population[i].value[k];}
		}
	}

	//find out the best individual so far 
	if (generation==0){//initialize the best individual
		currentbest=bestindividual;
	}
	else{
		if(bestindividual.fitness>=currentbest.fitness){
			currentbest=bestindividual;
		}
	}
}


//function:to perform evolution operation based on elitise
//model.Elitist model is to replace the worst individual of this generation by the current best one.
//Variable:None

void PerformEvolution(void)
{
	if (bestindividual.fitness>currentbest.fitness){
		currentbest=population[best_index];
	}
	else{
		population[worst_index]=currentbest;
	}
}

//Function: to reproduce a chromosone by proportional selection,
//Variable:None.

void SelectionOperator(void)
{
	int i,index;
	double p,sum=0.0;
	double cfitness[POPSIZE];//cumulative fitness value

	struct individual newpopulation[POPSIZE];
	
	//calculate relative fitness
	for(i=0;i<PopSize; i++){
		cfitness[i]=population[i].fitness/sum;
	}

	//calculate cumulative fitness
	for(i=1;i<PopSize; i++){
		cfitness[i]=cfitness[i-1]+cfitness[i];
	}

	//selection operation
	for (i=0;i<PopSize;i++){
		p=rand()%1000/1000.0;
		index=0;
		while (p>cfitness[index]){
			index++;
		}
		newpopulation[i]=population[index];
	}
	for(i=0;i<PopSize; i++){
		population[i]=newpopulation[i];
	}
}

//Function :Crossover two chromosone by means
// of one-point crossover;
//variable:None.

void CrossoverOperator(void)
{
	int i,j;
	int index[POPSIZE];
	int point,temp;
	double p;
	char ch;

	//make a pair of individual randomly
	for (i=0;i<PopSize;i++){
		index[i]=i;
	}
	for (i=0;i<PopSize;i++){
		point=rand()%(PopSize-i);
		temp=index[i];
		index[i]=index[point+i];
		index[point+i]=temp;
	}

	//one-point crossover operation
	for (i=0;i<PopSize-1;i+=2){
		p=rand()%1000/1000.0;
		if (p<Pc){
			point=rand()%(CHROMLENGTH-1)+1;
			for (j=point; j<CHROMLENGTH;j++){
				ch=population[index[i]].chrom[j];
				population[index[i]].chrom[j]=population[index[i+1]].chrom[j];
				population[index[i+1]].chrom[j]=ch;
			}
		}
	}
}

//Function:mutation of a chromosome.
//Variable:None.

void MutationOperator(void)
{
	int i,j;
	double p;
	//bit mutation
	for (i=0;i<PopSize;i++){
		for(j=0;j<CHROMLENGTH;j++){
			p=rand()%1000/1000.0;
			if (p<Pm){
				population[i].chrom[j]=(population[i].chrom[j]=='0')?'1':'0';
			}
		}
	}
}

//Function :output the results of current population.
//Variable :None,

void OutputTextReport(void)
{
	int i;
	printf("gen=%d",generation);
	for (i=0;i<CHROMLENGTH;i++)
	{
		cout<<currentbest.chrom[i];
	}
	printf("\n");
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕日韩一区二区| 在线亚洲+欧美+日本专区| 日韩你懂的在线观看| 午夜欧美视频在线观看| 91精品国产黑色紧身裤美女| 日本vs亚洲vs韩国一区三区| 精品国产一二三区| 国产福利一区二区| 亚洲裸体在线观看| 日韩一区二区三区电影在线观看 | 久久久99免费| 处破女av一区二区| 一个色在线综合| 欧美久久久久久蜜桃| 国模套图日韩精品一区二区| 国产精品久久久99| 欧美精品久久久久久久多人混战 | 国产校园另类小说区| 99riav一区二区三区| 亚洲成人免费av| 日韩免费视频一区| 97久久久精品综合88久久| 亚洲一区在线电影| 久久久久久久久免费| 91麻豆国产福利在线观看| 日韩电影免费一区| 国产精品毛片无遮挡高清| 欧美日韩国产高清一区| 国产精品综合在线视频| 一区二区三区在线不卡| 久久综合九色综合97_久久久| 99久久婷婷国产精品综合| 三级在线观看一区二区| 综合分类小说区另类春色亚洲小说欧美| 欧美精品v国产精品v日韩精品| 国产精一区二区三区| 亚洲成人先锋电影| 中文成人av在线| 51精品视频一区二区三区| 成人激情av网| 久久99国产精品久久99果冻传媒| 自拍偷拍欧美激情| 久久久国产精品麻豆| 欧美日韩五月天| 成人国产精品免费观看动漫| 日本视频一区二区三区| 最新日韩在线视频| 久久蜜桃av一区二区天堂 | 在线播放国产精品二区一二区四区 | 91精品国产91综合久久蜜臀| 成人免费精品视频| 国产自产视频一区二区三区| 天天综合日日夜夜精品| 亚洲美腿欧美偷拍| 国产精品福利一区二区| 久久综合网色—综合色88| 欧美精品自拍偷拍动漫精品| 91麻豆.com| 成人av动漫网站| 国产成a人亚洲精| 国产精品一区二区在线播放 | 日韩成人午夜精品| 一区二区三区加勒比av| 亚洲色图欧美偷拍| 国产精品成人网| 国产精品网友自拍| 国产三级一区二区三区| 久久婷婷综合激情| xnxx国产精品| 久久蜜桃一区二区| 国产亚洲精品久| 中文字幕高清不卡| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美一区二区在线视频| 日韩精品中文字幕一区二区三区 | 成人h版在线观看| 国产成a人无v码亚洲福利| 国精产品一区一区三区mba视频| 日韩电影免费一区| 乱中年女人伦av一区二区| 免费精品视频最新在线| 九色porny丨国产精品| 日韩av一区二区三区四区| 日韩在线卡一卡二| 免费三级欧美电影| 麻豆免费精品视频| 国产精品1区二区.| 成人app下载| 欧美在线短视频| 欧美日韩一级黄| 日韩一区二区视频| 久久久国产精品麻豆| 国产精品视频一二三区| 综合欧美亚洲日本| 亚洲成人免费电影| 久久国产福利国产秒拍| 国产精选一区二区三区| 成人午夜免费视频| 色婷婷一区二区| 91精品婷婷国产综合久久性色 | 国产一区二区在线观看免费| 国产美女在线精品| a亚洲天堂av| 在线免费视频一区二区| 欧美精选午夜久久久乱码6080| 666欧美在线视频| 久久久久久麻豆| 亚洲色图在线播放| 视频在线在亚洲| 国产成人av一区二区三区在线 | 亚洲一区二区精品3399| 免费成人美女在线观看.| 国产精品一区三区| 色激情天天射综合网| 91精品免费观看| 国产欧美日韩不卡免费| 亚洲激情校园春色| 国产在线精品一区二区不卡了| 97超碰欧美中文字幕| 91精品国产欧美日韩| 国产精品久久精品日日| 蜜臀久久99精品久久久画质超高清 | 国产在线精品不卡| 日本韩国欧美在线| 精品国产乱码91久久久久久网站| 亚洲欧美一区二区视频| 麻豆精品国产传媒mv男同 | 粉嫩13p一区二区三区| 欧美日韩和欧美的一区二区| 久久嫩草精品久久久精品一| 最新国产成人在线观看| 狠狠色狠狠色综合系列| 欧美日韩高清一区二区三区| 久久亚洲一级片| 日韩电影免费在线看| 色综合久久六月婷婷中文字幕| 久久综合九色综合97婷婷| 亚洲国产一区二区视频| 成人99免费视频| 久久综合久久99| 麻豆免费看一区二区三区| 欧美色网一区二区| 亚洲少妇最新在线视频| 国内成+人亚洲+欧美+综合在线| 欧美三级日韩在线| 中文字幕日韩一区| 成人永久免费视频| 精品成人一区二区| 男人的天堂久久精品| 欧洲精品视频在线观看| 国产精品国产三级国产普通话蜜臀 | 日本乱人伦aⅴ精品| 国产日产精品1区| 国产欧美日韩久久| 国产乱人伦偷精品视频不卡| 99re在线视频这里只有精品| 欧美mv日韩mv国产网站| 日韩av在线发布| 欧美日韩一区二区三区不卡| 夜夜嗨av一区二区三区中文字幕| 91美女蜜桃在线| 中文字幕在线一区二区三区| 大白屁股一区二区视频| 国产亚洲精品aa午夜观看| 国产一区二区三区在线观看免费视频 | 亚洲一卡二卡三卡四卡无卡久久| 91在线云播放| 亚洲精品成人在线| 在线视频欧美精品| 亚洲大片精品永久免费| 3atv一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 欧美高清视频一二三区| 欧美aⅴ一区二区三区视频| 日韩亚洲欧美中文三级| 韩国成人精品a∨在线观看| 久久久久久久精| 成人午夜在线免费| 亚洲人成网站色在线观看| 欧美中文字幕一二三区视频| 一区二区三区av电影| 欧美天堂一区二区三区| 日韩电影免费一区| 久久一夜天堂av一区二区三区| 国产成人a级片| 一区二区三区加勒比av| 欧美一区二区三区不卡| 国内成+人亚洲+欧美+综合在线| 欧美韩国一区二区| 色噜噜狠狠一区二区三区果冻| 婷婷一区二区三区| 精品sm在线观看| 波波电影院一区二区三区| 亚洲亚洲人成综合网络| 精品国产乱码久久久久久闺蜜| 成人综合日日夜夜| 午夜一区二区三区在线观看| 日韩欧美亚洲一区二区| 成人av电影在线| 日韩二区三区在线观看|