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

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

?? binarynew.cpp

?? 利用遺傳算法求最小值
?? CPP
字號:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h"
#define POPSIZE 50          //群體規模
//#define MAXIMIZATION 1
//#define MINIMIZATION 2
//#define Cmax 100
//#define Cmin 0
#define NVARS 3                 //變量個數 
#define LENGTH1 8               
#define LENGTH2 8
#define LENGTH3 8               //各個變量的二進制位數
//#define LENGTH4 3
//#define LENGTH5 3
//#define LENGTH6 3
#define CHROMLENGTH LENGTH1+LENGTH2+LENGTH3//+LENGTH4+LENGTH5+LENGTH6
//int FunctionMode=MAXIMIZATION;
int PopSize=50;                //群體規模
int MaxGeneration=1000;         //運行的最大代數
double Pc=0.5;                  //雜交概率
double Pm=0.15;                  //變異概率
//double upper[NVARS];
//double lower[NVARS];
struct individual
{
	char chrom[CHROMLENGTH+1];
	double value;
	double fitness;
};
int generation;
int best_index;
int worst_index;
//FILE *galog; 
struct individual bestindividual;
struct individual worstindividual;
struct individual currentbest;
struct individual population[POPSIZE];
void GenerateInitialPopulation(void);
void GenerateNextPopulation(int generation);
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(int generation);     //交叉操作
void MutationOperator(int generation);    //變異操作
void OutputTextReport(void);
int random(int n);
void main()
{   
	FILE *infile;
//	int i;
	long temp1,temp2,temp3;
	double x1,x2,x3,s=0;
//		A[13]={0.176,0.4548,0.699,0.903,1,1.3,1.477,1.699,1.903,2,2.3,2.699,3},
//		B[13]={1.6,1.68,1.724,1.748,1.756,1.778,1.785,1.796,1.82,1.833,1.875,1.944,2};
/*		A[13]={0.3,0.477,0.699,0.9,1,1.3,1.6,1.699,1.9,2,2.3,2.477,3},
		B[13]={1.3,1.38,1.462,1.505,1.544,1.6,1.653,1.672,1.699,1.724,1.785,1.845,2};
*/
        if((infile=fopen("gadata.txt","w"))==NULL)
		{
          printf("\nCannot open input file!\n");
          exit(1);
		}

	generation=0;
    GenerateInitialPopulation();
    EvaluatePopulation();
	while(generation<MaxGeneration)
	{
		generation++;
        GenerateNextPopulation(generation);
        EvaluatePopulation();
        PerformEvolution();
//		printf("%4d %10.4f\n",generation,currentbest.fitness);
//        OutputTextReport();
//	}
	temp1=DecodeChromosome(currentbest.chrom,0,LENGTH1);
	temp2=DecodeChromosome(currentbest.chrom,LENGTH1,LENGTH2);
    temp3=DecodeChromosome(currentbest.chrom,LENGTH1+LENGTH2,LENGTH3);
   // temp4=DecodeChromosome(currentbest.chrom,LENGTH1+LENGTH2+LENGTH3,LENGTH4);
    //temp5=DecodeChromosome(currentbest.chrom,LENGTH1+LENGTH2+LENGTH3+LENGTH4,LENGTH5);
   // temp6=DecodeChromosome(currentbest.chrom,LENGTH1+LENGTH2+LENGTH3+LENGTH4+LENGTH5,LENGTH6);
	x1=-5.12+10.24*temp1/(pow(2,LENGTH1)-1);
    x2=-5.12+10.24*temp2/(pow(2,LENGTH2)-1);
	x3=-5.12+10.24*temp3/(pow(2,LENGTH3)-1);
    //x4=lower[3]+(upper[3]-lower[3])*temp4/(pow(2,LENGTH4)-1);
	//x5=lower[4]+(upper[4]-lower[4])*temp5/(pow(2,LENGTH5)-1);
    //x6=lower[5]+(upper[5]-lower[5])*temp6/(pow(2,LENGTH6)-1);
    //fprintf(galog,"\n\nSimulation completed\n");
    printf("%d %f %f %f %10.4f\n",generation,x1,x2,x3,currentbest.fitness);
	fprintf(infile,"%d %f %f %f %10.4f\n",generation,x1,x2,x3,currentbest.fitness);
	}
 //   printf("\n best fitness=%f\n",currentbest.fitness);
    fclose(infile);
//    getch();
}
void GenerateInitialPopulation(void)
{
	int i,j;
//	randomize();
	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';
	}
}
void GenerateNextPopulation(int generation)
{
     SelectionOperator();
     CrossoverOperator(generation);
     MutationOperator(generation);
}
void EvaluatePopulation(void)
{
     CalculateObjectValue();
//     CalculateFitnessValue();
     FindBestAndWorstIndividual();
}

long DecodeChromosome(char *string,int point, int length)
{
	int i;
	long decimal=0L,temp;
	char *pointer;
	temp=1;
	for(i=0,pointer=string+point+length-1;i<length;i++,pointer--)
	{
		decimal+=(*pointer-'0')*temp;
		temp*=2;
	}
	return(decimal);
}
void CalculateObjectValue(void)
{   
	FILE *infile;
	int i;
	long temp1,temp2,temp3;
	double x1,x2,x3,s=0;
//		A[13]={0.176,0.4548,0.699,0.903,1,1.3,1.477,1.699,1.903,2,2.3,2.699,3},
//		B[13]={1.6,1.68,1.724,1.748,1.756,1.778,1.785,1.796,1.82,1.833,1.875,1.944,2};
/*		A[13]={0.3,0.477,0.699,0.9,1,1.3,1.6,1.699,1.9,2,2.3,2.477,3},
		B[13]={1.3,1.38,1.462,1.505,1.544,1.6,1.653,1.672,1.699,1.724,1.785,1.845,2};
*/
        if((infile=fopen("data.txt","w"))==NULL)
		{
          printf("\nCannot open input file!\n");
          exit(1);
		}
		
for(i=0;i<PopSize;i++)
	{	
		temp1=DecodeChromosome(population[i].chrom,0,LENGTH1);
		temp2=DecodeChromosome(population[i].chrom,LENGTH1,LENGTH2);
		temp3=DecodeChromosome(population[i].chrom,LENGTH1+LENGTH2,LENGTH3);
		//temp4=DecodeChromosome(population[i].chrom,LENGTH1+LENGTH2+LENGTH3,LENGTH4);
		//temp5=DecodeChromosome(population[i].chrom,LENGTH1+LENGTH2+LENGTH3+LENGTH4,LENGTH5);
		//temp6=DecodeChromosome(population[i].chrom,LENGTH1+LENGTH2+LENGTH3+LENGTH4+LENGTH5,LENGTH6);
		x1=-5.12+10.24*temp1/(pow(2,LENGTH1)-1);
        x2=-5.12+10.24*temp2/(pow(2,LENGTH2)-1);
	    x3=-5.12+10.24*temp3/(pow(2,LENGTH3)-1);
        //x4=lower[3]+(upper[3]-lower[3])*temp4/(pow(2,LENGTH4)-1);
	    //x5=lower[4]+(upper[4]-lower[4])*temp5/(pow(2,LENGTH5)-1);
       // x6=lower[5]+(upper[5]-lower[5])*temp6/(pow(2,LENGTH6)-1);
       //s=x1*x1+x2+x3+x4+x5+x6;
	   s=x1*x1+x2*x2+x3*x3;
	   population[i].fitness=1/(s+1);
//	   printf("%f %f %f\n",x1,x2,x3);
	   fprintf(infile,"%f %f %f %10.4f\n",x1,x2,x3,population[i].fitness);
      }
	fclose(infile);
}
/*
void CalculateFitnessValue(void)
{
	int i;
	double temp;
	for(i=0;i<PopSize;i++)
	{
		if(FunctionMode==MAXIMIZATION)
		{
			if((population[i].value+Cmin>0.0))
			{
				temp=Cmin+population[i].value;
			}
			else
				temp=0;
		}
		else
			if(FunctionMode==MINIMIZATION)
			{
				if(population[i].value<Cmax)
					temp=Cmax-population[i].value;
				else
					temp=0;
			}
     population[i].fitness=temp;
	}
}
*/
void FindBestAndWorstIndividual(void)
{

	int i;
    double sum=0.0;
                     //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;
		}
		else 
			if(population[i].fitness<worstindividual.fitness)
			{
				worstindividual=population[i];
                worst_index=i;
			}
			sum+=population[i].fitness;
	}
//find out the best individual so far 
	if (generation==0)
	{//initialize the best individual
		currentbest=bestindividual;
	}
	else
	{
		if(bestindividual.fitness>currentbest.fitness)
		{
			currentbest=bestindividual;
		}
	}
}
void PerformEvolution(void)
{
	if (bestindividual.fitness>currentbest.fitness)
	{
		currentbest=population[best_index];
	}
}
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++)
	{
		sum+=population[i].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];
	}
}

void CrossoverOperator(int generation)
{
	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=random(PopSize-i);
		temp=index[i];
		index[i]=index[point+i];
		index[point+i]=temp;
	}
//one-point crossover operation
	if(generation%2==1)
		for(i=0;i<PopSize-1;i+=2)
		{
			p=rand()%1000/1000.0;
			if(p<Pc)
			{
				point=random(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;
				}
			}
		}
	else
		for(i=0;i<PopSize;i++)
		{
			p=rand()%1000/1000.0;
			if(p<Pc)
			{
				point=random(CHROMLENGTH-1)+1;
				for (j=point;j<CHROMLENGTH;j++)
				{
					population[i].chrom[j]=currentbest.chrom[j];
				}
			}
		}

} 



void MutationOperator(int generation)
{
	int i,j;
	double p;
//bit mutation
	if(generation%2==1)//
		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';
				}
			}
		}
	else
		for(i=0;i<PopSize;i++)
		{
			j=0;
			while(population[i].chrom[j]==currentbest.chrom[j])
				j++;
			for(;j<CHROMLENGTH;j++)
			{
				p=rand()%1000/1000.0;
				if(p<Pm)
				{
					population[i].chrom[j]=currentbest.chrom[j];
				}
			}
		}
}

/*
void OutputTextReport(void)
{

	int i;
	double sum;   //temporary sum
    double average;   // average of population objest value

//calculate average object value
    sum=0.0;
    for(i=0;i<PopSize;i++)
	{
		sum+=population[i].value;
	}
	average=sum/PopSize;

//print results of this population
	printf("gen=%d,avg=%f,best=%f,",generation,average,currentbest.value);
	printf("chromosome=");
	for(i=0;i<CHROMLENGTH;i++)
	{
		printf("%c",currentbest.chrom[i]);
	}
	printf("\n");
}
*/
int random(int n)
{
	return rand()%n;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品高清视频在线观看| 国产成人一区在线| 丰满白嫩尤物一区二区| 精品视频1区2区| 国产精品久久看| 蜜桃视频在线观看一区| 日本高清不卡视频| 国产欧美日本一区视频| 久久精品理论片| 欧美精品视频www在线观看| 亚洲国产精品高清| 韩国成人精品a∨在线观看| 欧美日韩电影在线播放| 亚洲日本成人在线观看| 成人在线一区二区三区| 国产天堂亚洲国产碰碰| 久久国产精品色| 88在线观看91蜜桃国自产| 亚洲精品福利视频网站| av成人免费在线| 国产日韩欧美激情| 国产一区免费电影| 精品久久久久香蕉网| 麻豆高清免费国产一区| 欧美精品在线观看一区二区| 亚洲亚洲精品在线观看| 色丁香久综合在线久综合在线观看| 中文字幕一区二区三区四区不卡| 国产精品一区二区在线看| 国产日韩欧美一区二区三区综合| 国产真实乱对白精彩久久| 久久综合视频网| 国产99精品视频| 欧美一区二区三区精品| 亚洲成人免费在线| 99这里只有久久精品视频| 中文字幕一区视频| 色伊人久久综合中文字幕| 亚洲欧美日韩一区二区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 91香蕉国产在线观看软件| 日本一区二区成人| 色天使久久综合网天天| 亚洲mv大片欧洲mv大片精品| 欧美日韩国产片| 久久爱另类一区二区小说| 国产日韩欧美一区二区三区乱码| 亚洲精品一区二区三区香蕉| 天堂精品中文字幕在线| 日韩一级欧美一级| 国产在线视视频有精品| 国产精品久久久久久久久免费桃花| 国产99一区视频免费| 亚洲精品成a人| 91精品国产综合久久精品性色| 久久99精品久久久久| 国产清纯白嫩初高生在线观看91| 91网站视频在线观看| 亚洲国产精品综合小说图片区| 91精品国产综合久久久蜜臀粉嫩| 久久99久久99小草精品免视看| 国产清纯美女被跳蛋高潮一区二区久久w| 成人动漫av在线| 免费在线看成人av| 国产精品麻豆久久久| 欧美丝袜丝nylons| 国产精品一区专区| 亚洲午夜在线电影| 国产欧美日韩卡一| 91精品国产综合久久精品 | 精品国产伦一区二区三区观看方式 | 亚洲精品视频在线观看网站| 6080午夜不卡| 成人av在线资源网站| 亚洲成av人综合在线观看| 国产亚洲精品免费| 91精品国产综合久久婷婷香蕉| 成人综合婷婷国产精品久久免费| 亚洲第一激情av| 成人欧美一区二区三区| 日韩免费福利电影在线观看| 91小视频免费观看| 久久精品国产网站| 亚洲一区二区精品久久av| 国产欧美精品在线观看| 日韩三级视频中文字幕| 在线观看日韩一区| 99国产精品久久久久久久久久| 麻豆国产一区二区| 天天综合色天天| 亚洲一区二区在线观看视频 | 成人av综合一区| 久久精品国产精品亚洲精品| 亚洲图片自拍偷拍| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩手机在线导航| 欧美色视频在线| 91蜜桃在线免费视频| 国产成都精品91一区二区三| 日本va欧美va瓶| 亚洲超碰精品一区二区| 一区二区三区免费网站| 中文字幕日韩av资源站| 日本一区二区三区免费乱视频| 日韩欧美一区在线| 欧美日韩高清在线| 欧美精品久久99久久在免费线| 色88888久久久久久影院野外 | 国产麻豆欧美日韩一区| 麻豆精品新av中文字幕| 蜜桃视频在线一区| 免费久久99精品国产| 七七婷婷婷婷精品国产| 性感美女久久精品| 亚洲午夜激情网站| 亚洲一区二区在线视频| 五月天激情综合网| 日韩和欧美一区二区三区| 日韩福利视频导航| 久久av资源网| 国产黄色成人av| 99久久国产综合精品麻豆| 一本到不卡精品视频在线观看| 91久久精品一区二区| 久久综合九色综合97婷婷女人| 欧美va亚洲va在线观看蝴蝶网| 精品久久人人做人人爽| 欧美极品少妇xxxxⅹ高跟鞋| 中文字幕一区二区三区视频| 亚洲综合在线视频| 性做久久久久久久免费看| 久久精品国产亚洲aⅴ| 国产乱码精品一区二区三| 成人黄色在线看| 欧美日韩精品欧美日韩精品 | 欧美日韩国产高清一区二区| 欧美日韩一区二区三区四区五区| 91精品国产综合久久国产大片| 久久色中文字幕| 国产精品毛片高清在线完整版| 一区二区三区四区不卡视频| 日韩在线一二三区| 国产99久久久精品| 91国偷自产一区二区三区观看 | 欧美日韩日日摸| ww亚洲ww在线观看国产| 亚洲欧美另类小说视频| 天使萌一区二区三区免费观看| 国模冰冰炮一区二区| 91在线观看美女| 日韩女优电影在线观看| 亚洲欧美一区二区在线观看| 婷婷久久综合九色综合伊人色| 国产91精品久久久久久久网曝门| 欧美视频一区二| 久久久久久麻豆| 亚洲电影第三页| av男人天堂一区| 精品国产欧美一区二区| 亚洲免费av观看| 国产剧情一区二区三区| 欧美精品九九99久久| 中文字幕视频一区| 激情另类小说区图片区视频区| 色综合天天性综合| 久久久一区二区| 日韩—二三区免费观看av| 91在线视频免费91| 国产亚洲综合在线| 午夜精品久久久久| 99v久久综合狠狠综合久久| 日韩欧美资源站| 亚洲国产aⅴ成人精品无吗| 粉嫩欧美一区二区三区高清影视 | 国产精品蜜臀av| 久久精品99国产精品日本| 欧美三级视频在线播放| 自拍偷拍国产精品| 国产99一区视频免费 | 欧美丰满少妇xxxbbb| 亚洲精品成人在线| 99re热这里只有精品免费视频 | 亚洲高清免费一级二级三级| av电影在线观看完整版一区二区| 精品捆绑美女sm三区| 美美哒免费高清在线观看视频一区二区| 91久久香蕉国产日韩欧美9色| 日韩码欧中文字| 波多野结衣一区二区三区 | 99国产精品久| 国产精品久久久久久久久快鸭 | 亚洲综合色区另类av| 99r精品视频| 亚洲视频免费在线观看| 91一区二区三区在线观看| 国产精品免费久久久久| 成人av手机在线观看| 中文字幕乱码亚洲精品一区| 国产91色综合久久免费分享| 国产亚洲一区字幕|