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

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

?? ga.cpp

?? 遺傳算法用例 有數(shù)據(jù) 改進(jìn)模型
?? CPP
字號(hào):
/**********************************************************************/
/*This is a simple genetic algorithm implementation where the         */
/*evaluation function takes positive values only and the              */
/*fitness of an individual is the same as the value of the            */
/*object function                                                     */
/**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

/*Change any of these parameters to match your needs*/
#define POPSIZE 60      /*population size*/
#define MAXGENS 1000      /*max. number of generations*/
#define NVARS 5            /*no. of problem variables*/
#define PXOVER 0.85         /*probability of crossover*/
#define PMUTATION 0.105     /*probability of mutation*/
#define TRUE 1               
#define FALSE 0            
#define MN 20  

int generation;           /*current generation no.*/
int cur_best;             /*best individual */
double algham[MN][MN];
FILE *galog;              //an output file
FILE *galog1; 
FILE *galog2; 
struct genotype           //genotype (GT),a member of the population
{
  double gene[NVARS];     //a string of variables
  double fitness;         //GT's fitness
  double upper[NVARS];    //GT's variables upper bound
  double lower[NVARS];    //GT's variables lower bound
  double rfitness;        //relative fitness
  double cfitness;        //cumulative fitness
};
struct genotype population[POPSIZE+1];    //population
struct genotype newpopulation[POPSIZE+1]; //nem population
                                         // replace the old generation
struct chenben           //genotype (GT),a member of the population
{
	double maxup; 
    double bbv[MN];      //cumulative fitness
};

struct  chenben bb[NVARS+1];


//declaration of procedures used by this genetic algorithm
void initialize(void);
int randval(double,double);
double gaussval(double,double);
void evaluate(void);
void keep_the_best(void);
void elitist(void);
void select(void);
void crossover(void);
void swap(double *,double*);
void mutate(void);
void report(void);

//**********************************************************
//initializes the values of genes within the variables bounds.
//it also initializes to zero all fitness values for each member of 
//the population. it reads upper and lower bounds of each variable from
//the input file 'gadata.txt'.it randomly generates values
//between these bounds for each gene of each genotype in the population.
//the format of the input file 'gadata.txt' is
//var1_lower_bound  var1_upper_bound
//var2_lower_bound  var2_upper_bound
//............
void initialize(void)
{
	FILE *infile;
	int i,j;
	double lbound,ubound,bvalue,alghadata;
  

	if((infile=fopen("gadata.txt","r"))==NULL)
	{
		fprintf(galog,"\nCannot open input file!\n");
		exit(1);
	}

	for(i=0;i<NVARS;i++)
	{
		fscanf(infile,"%lf",&lbound);
		fscanf(infile,"%lf",&ubound);
        bb[i+1].maxup=ubound;

		for(j=0;j<POPSIZE;j++)
		{
			population[j].fitness=0;
			population[j].rfitness=0;
			population[j].cfitness=0;
			population[j].lower[i]=1;       //lbound;
			population[j].upper[i]=ubound;
			population[j].gene[i]=randval(population[j].lower[i],population[j].upper[i]);
		}
	}

	fclose(infile);

/////////////////////////////////////////////////////////

	if((infile=fopen("bdata.txt","r"))==NULL)
	{
		fprintf(galog1,"\nCannot open input file!\n");
		exit(1);
	}
    
	for(i=0;i<NVARS;i++)
	{
		for(j=0;j<bb[i+1].maxup;j++)
		{
			fscanf(infile,"%lf",&bvalue);
			bb[i+1].bbv[j+1]=bvalue;
		}	
	}
	
	fclose(infile);

/////////////////////////////////////////////////////////////

	if((infile=fopen("algha.txt","r"))==NULL)
	{
		fprintf(galog2,"\nCannot open input file!\n");
		exit(1);
	}
    
	for(i=0;i<NVARS;i++)
	{
		for(j=i;j<NVARS-1;j++)
		{
			fscanf(infile,"%lf",&alghadata);
			algham[i+1][j+1+1]=alghadata;
		}	
	}
	fclose(infile);
}




//*****************************************************
//random value generator.generates a value within bounds

int randval(double low,double high)
{
	double val;
	val=((double)(rand()%1000)/1000.0)*(high-low)+low;
	return(int(val));
}


//*****************************************************
//random value generator.generates a value within bounds
double gaussval(double low,double high)
{
	int i;
	double val,randsum=0.0;
	for(i=0;i<200;i++)
	{
		val=((double)(rand()%1000)/1000.0)*(high-low)+low;
		randsum=randsum+val;
	}
	val=(low+high)/2+(high-low)*(randsum-100*(high+low))/100/(high+low);		
	return(int(val));
}

//*********************************************************
//this takes a user defined function
//each time this is changed, the code has to be recompiled.
//the current function is: x[1]^2-x[1]*x[2]+x[3]

void evaluate(void)
{
	int mem;
	int i;
	int j;
	int kk;
	double x[NVARS+1];
    double sumsall; 
	double jiaochabufen;

	for(mem=0;mem<POPSIZE;mem++)
	{
		for(i=0;i<NVARS;i++)
		{
			kk=int(population[mem].gene[i]);
            x[i+1]=bb[i+1].bbv[kk];
		}

        for(i=1;i<NVARS;i++) 
            sumsall = x[i];

		for(i=1;i<NVARS+1;i++)
		{
			for(j=i;j<NVARS;j++)
			{
				jiaochabufen = algham[i][j+1]*bb[i].bbv[j];
			}	
		}

        population[mem].fitness=sumsall + jiaochabufen;
        
	}
}

/*****************************************************************/
//this function keeps track of the best member of the population.
//the last entry in the array population holds a copy of the individual
void keep_the_best(void)
{
	int mem;
	int i;
	cur_best=0;

	for(mem=0;mem<POPSIZE;mem++)
	{
		if(population[mem].fitness>population[POPSIZE].fitness)
		{
			cur_best=mem;
			population[POPSIZE].fitness=population[mem].fitness;
		}
	}

	//once the best member in the population is found,copy the genes.
	for(i=0;i<NVARS;i++)
		population[POPSIZE].gene[i]=population[cur_best].gene[i];
}

//**********************************************
//the best member of the previous generation is stored as the last 
//in the array. if the best member of the current generation is worse
//than the best member of the previous generation,the latter one would
//replace the worst member of the current population
void elitist(void)
{
	int i;
	double best,worst;      //best and worst fitness values
	int best_mem,worst_mem; //indexes of the best and worst member

	best=population[0].fitness;
	worst=population[0].fitness;
	for(i=0;i<POPSIZE-1;++i)
	{
		if(population[i].fitness>population[i+1].fitness)
		{
			if(population[i].fitness>=best)
			{
				best=population[i].fitness;
				best_mem=i;
			}
			if(population[i+1].fitness<=worst)
			{
				worst=population[i+1].fitness;
				worst_mem=i+1;
			}
		}
		else
		{
			if(population[i].fitness<=worst)
			{
				worst=population[i].fitness;
				worst_mem=i;
			}
			if(population[i].fitness>=best)
			{
				best=population[i+1].fitness;
				best_mem=i+1;
			}
		}
	}


	//if best individual from the new population is better than
	//the best individual from the previous population,then
	//copy the best from the new population;else replace the
	//worst individual from the current population with the
	//best one from the previous generation

	if(best>=population[POPSIZE].fitness)
	{
		for(i=0;i<NVARS;i++)
			population[POPSIZE].gene[i]=population[best_mem].gene[i];
		population[POPSIZE].fitness=population[best_mem].fitness;
	}
	else
	{
		for(i=0;i<NVARS;i++)
			population[worst_mem].gene[i]=population[POPSIZE].gene[i];
		population[worst_mem].fitness=population[POPSIZE].fitness;
	}
}


/*******************************************************************/
//standard proportional selection for maximization problems
 //imcorporating elitist model-makes sure that the best member survives
void select(void)
{
	int mem,i,j;
	double sum=0;
	double p;

	//find total fitness of the population
	for(mem=0;mem<POPSIZE;mem++)
	{
		sum+=population[mem].fitness;
	}

	//calculate relative fitness
	for(mem=0;mem<POPSIZE;mem++)
	{
		population[mem].rfitness=population[mem].fitness/sum;
	}
	population[0].cfitness=population[0].rfitness;

	//calculate cumulative fitness
	for(mem=1;mem<POPSIZE;mem++)
	{
		population[mem].cfitness=population[mem-1].cfitness+population[mem].rfitness;
	}
	
	//finally select surviors using cumulative fitness
	for(i=0;i<POPSIZE;i++)
	{
		p=rand()%1000/1000.0;
		if(p<population[0].cfitness)
			newpopulation[i]=population[0];
		else
		{
			for(j=0;j<POPSIZE;j++)
				if(p>=population[j].cfitness&&p<population[j+1].cfitness)
					newpopulation[i]=population[j+1];
		}
	}
	
	//once a new population is created,copy it back
	for(i=0;i<POPSIZE;i++)
		population[i]=newpopulation[i];
}



//********************************************************
//performs crossover of the two selected parents.
void Xover(int one,int two)
{
	int i;
	int point;   //crossover point

	//select crossover point
	if(NVARS>1)
	{
		if(NVARS==2)
			point=1;
		else
			point=(rand()%(NVARS-1))+1;

		for(i=0;i<point;i++)
			swap(&population[one].gene[i],&population[two].gene[i]);
	}
}


//*********************************************************
//select two parents taht take part in the crossover.
//implements a single point crossover
void crossover(void)
{
	int mem,one;
	int first=0;  //count of the number of members chosen
	double x;

	for(mem=0;mem<POPSIZE;++mem)
	{
		x=rand()%1000/1000.0;
		if(x<PXOVER)
		{
			++first;
			if(first%2==0)
				Xover(one,mem);
			else
				one=mem;
		}
	}
}


//********************************************************
//a swap procedure that helps in swapping 2 variables

void swap(double *x,double*y)
{
	double temp;

	temp=*x;
	*x=*y;
	*y=temp;
}

//****************************************************
//random uniform mutation. a variable selected for mutation is replaced
//by a random value between lower and upper bounds of this variable

void mutate(void)
{
	int i,j;
	double lbound,hbound;
	double x;

	for(i=0;i<POPSIZE;i++)
		for(j=0;j<NVARS;j++)
		{
			x=rand()%1000/1000.0;
			if(x<PMUTATION)
			{
				//find the bounds on the variable to be mutated
				lbound=1;    //population[i].lower[j];
				hbound=population[i].upper[j];
				population[i].gene[j]=randval(lbound,hbound); 
			}
		}
}


//*********************************************************
//reports progress of the simulation.
//data dumped into the output file are separated by commas
void report(void)
{
	int i;
	double best_val;
	double avg;
	double stddev;
	double sum_square;
	double square_sum;
	double sum;

	sum=0.0;
	sum_square=0.0;

	for(i=0;i<POPSIZE;i++)
	{
		sum+=population[i].fitness;
		sum_square+=population[i].fitness*population[i].fitness;
	}

	avg=sum/(double)POPSIZE;
	square_sum=avg*avg*(double)POPSIZE;
	stddev=sqrt((sum_square-square_sum)/(POPSIZE-1));
	best_val=population[POPSIZE].fitness;

	fprintf(galog,"\n%5d,     %6.3f,%6.3f,%6.3f, ",generation,best_val,avg,stddev);
	fprintf(galog,"%6.3f,%6.3f,%6.3f\n",population[POPSIZE].gene[0],population[POPSIZE].gene[1],population[POPSIZE].gene[2]);
}

//*********************************************************
//each generation involves selecting the best members, performing
//crossover & mutation and the evaluating the resulting population
//until the terminating condition is satisfied.
void main(void)
{
	int i;
	if((galog=fopen("galog.txt","w"))==NULL)
	{
		exit(1);
	}
	generation=0;

	fprintf(galog,"\ngeneration best average standard\n");
	fprintf(galog,"number   value fitness deviation\n");

	initialize();
	evaluate();
	keep_the_best();
	while(generation<MAXGENS)
	{
		generation++;
		select();
		crossover();
		mutate();
		report();
		evaluate();
		elitist();
	}
	fprintf(galog,"\n\n Simulation completed\n");
	fprintf(galog,"\n Best member:\n");
	
	//add by chen
	printf("\n\n Simulation completed\n");
	printf("\n Best member:\n");

	for(i=0;i<NVARS;i++)
	{
		fprintf(galog,"\n var(%d)=%3.3f",i,population[POPSIZE].gene[i]);
		//add by chen
		printf("\n var(%d)=%3.3f",i,population[POPSIZE].gene[i]);
	}

	fprintf(galog,"\n\n Best fitness=%3.3f",population[POPSIZE].fitness);
	fclose(galog);
	printf("\n\nSuccess\n");
	// add by chen
	printf("\n\n Best fitness=%3.3f\n",population[POPSIZE].fitness);
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人白浆超碰人人人人| 亚洲欧美成人一区二区三区| 香港成人在线视频| 91久久精品一区二区三| 欧美国产日本韩| 国产91露脸合集magnet| 精品国产免费久久| 激情图区综合网| 亚洲精品在线观看视频| 免费观看日韩av| 日韩精品一区二区三区在线播放| 亚洲一区二区在线视频| 欧美性感一区二区三区| 亚洲国产一区视频| 欧美日韩久久久一区| 日本三级亚洲精品| 日韩欧美在线网站| 韩国女主播一区二区三区| 精品免费视频一区二区| 国产成人精品免费| 亚洲国产电影在线观看| 99久久er热在这里只有精品66| 日本一区二区视频在线| 99精品国产99久久久久久白柏| 亚洲欧美另类综合偷拍| 在线视频你懂得一区二区三区| 亚洲www啪成人一区二区麻豆| 欧美日韩国产综合视频在线观看| 亚欧色一区w666天堂| 日韩欧美在线123| 丰满亚洲少妇av| 欧美xxx久久| 日日夜夜免费精品| 国产午夜精品一区二区| 色综合 综合色| 久久成人久久爱| 中文字幕制服丝袜一区二区三区 | 欧美丰满一区二区免费视频 | 午夜精品影院在线观看| 久久影院视频免费| 在线免费观看日本欧美| 精品一区二区三区蜜桃| 一区二区高清视频在线观看| 精品欧美久久久| 欧美亚洲日本国产| 国产精品一线二线三线| 午夜精品久久久久久久久久久| 亚洲精品一区二区精华| 欧美日韩国产综合草草| 北条麻妃国产九九精品视频| 久久国产尿小便嘘嘘尿| 亚洲一级片在线观看| 久久久久国产精品人| 欧美精品日韩综合在线| 一本大道久久精品懂色aⅴ| 久久99国产精品久久99果冻传媒| 亚洲伊人色欲综合网| 综合久久综合久久| 国产欧美日韩综合精品一区二区| 欧美一区二区三区四区五区| 一本色道a无线码一区v| 北条麻妃一区二区三区| 国产99久久久精品| 丁香亚洲综合激情啪啪综合| 国产呦萝稀缺另类资源| 经典三级在线一区| 老司机精品视频一区二区三区| 午夜精品爽啪视频| 三级成人在线视频| 视频一区二区中文字幕| 日本 国产 欧美色综合| 久久国产精品色婷婷| 日本在线不卡视频| 免费视频最近日韩| 奇米精品一区二区三区在线观看一 | 成人精品高清在线| 91影院在线观看| 色噜噜久久综合| 日本韩国精品在线| 91麻豆精品国产自产在线| 777a∨成人精品桃花网| 日韩美女视频在线| 国产精品毛片久久久久久久| 成人免费视频在线观看| 一区二区三区在线不卡| 日韩—二三区免费观看av| 国产一区二区三区国产| 不卡视频一二三四| 91精品国产麻豆国产自产在线| 欧美v亚洲v综合ⅴ国产v| 亚洲国产精品成人综合色在线婷婷 | 亚洲婷婷综合久久一本伊一区 | 91网站最新地址| 欧美精品第1页| 中文字幕av在线一区二区三区| 亚洲色图欧洲色图婷婷| 美女脱光内衣内裤视频久久网站 | 久久久久国产一区二区三区四区 | 国产欧美一区二区三区在线看蜜臀 | 一区二区三区四区在线播放 | 日本怡春院一区二区| 成人激情黄色小说| 日韩一级二级三级精品视频| 中文字幕一区二区三区四区不卡| 偷拍与自拍一区| 91丨国产丨九色丨pron| 久久久久青草大香线综合精品| 亚洲综合在线视频| 成人免费视频网站在线观看| 91精品国模一区二区三区| 亚洲日本欧美天堂| 国产suv一区二区三区88区| 欧美一三区三区四区免费在线看| 亚洲图片欧美激情| 国产精品白丝jk黑袜喷水| 欧美一区二区三区性视频| 亚洲国产精品视频| 在线观看日韩高清av| 亚洲少妇中出一区| 91香蕉视频mp4| 中文一区二区完整视频在线观看| 国产麻豆成人传媒免费观看| 日韩欧美一区电影| 久久99精品久久久久| 日韩一二三四区| 欧美亚洲综合一区| 91精品国产一区二区三区蜜臀| 夜夜嗨av一区二区三区网页| 91天堂素人约啪| **欧美大码日韩| 91小视频免费观看| 亚洲一区二区精品3399| 在线精品国精品国产尤物884a| 亚洲另类中文字| 精品1区2区3区| 青青草精品视频| 久久夜色精品国产欧美乱极品| 国产精品性做久久久久久| 国产精品久久久久久久久图文区 | 欧美美女一区二区在线观看| 午夜精品123| 久久精品日韩一区二区三区| 国产91在线看| 亚洲超碰97人人做人人爱| 国产精品护士白丝一区av| 成人综合婷婷国产精品久久免费| 自拍偷拍亚洲欧美日韩| 欧美日韩综合在线| 黄色精品一二区| 中文字幕色av一区二区三区| 欧美色精品天天在线观看视频| 青青青伊人色综合久久| 国产精品乱码久久久久久| 欧美偷拍一区二区| 国产在线不卡一卡二卡三卡四卡| 国产精品嫩草99a| 欧美电视剧在线看免费| 99国产精品久久久| 精品一区二区成人精品| 国产精品初高中害羞小美女文| 51精品久久久久久久蜜臀| 国产**成人网毛片九色 | 三级亚洲高清视频| 一区免费观看视频| 欧美videossexotv100| 欧美中文字幕一区二区三区亚洲| 国产一区二区三区久久悠悠色av| 亚洲精品乱码久久久久久久久 | 免费看黄色91| 亚洲视频电影在线| 国产精品久久夜| 一区二区三区四区不卡视频| 欧美成人猛片aaaaaaa| 欧美自拍丝袜亚洲| 色婷婷综合久色| 成人aa视频在线观看| 国产在线不卡视频| 麻豆成人91精品二区三区| 亚洲国产美女搞黄色| 亚洲综合免费观看高清完整版| 国产精品欧美精品| 国产精品久久久久7777按摩 | 国模套图日韩精品一区二区 | 日韩三级在线观看| 欧美日本韩国一区| 欧美久久一二区| 精品视频在线看| 3d成人h动漫网站入口| 欧美日韩免费观看一区二区三区 | 亚洲欧洲色图综合| 国产精品人成在线观看免费| 国产精品午夜在线观看| 中文字幕av不卡| 一区二区三区资源| 亚洲高清免费视频| 另类小说视频一区二区| 久久电影国产免费久久电影| 久久不见久久见免费视频1| 麻豆成人久久精品二区三区红 | 日韩午夜精品视频|