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

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

?? sga1.cpp

?? 遺傳算法求解函數極值
?? CPP
字號:
//基本遺傳算法,求最大最小值問題,根據遺傳算法原理及其應用(周明)書中程序,修改了隨機數產生語句,使得該程序能在vc中使用  由于隨機數的原因,結果有時對,有時不對(結果應為二十個零),具體原因還沒有弄明白,請各位試試,大家交流一下。


由于隨機數的原因,結果有時對,有時不對(結果應為二十個零)

具體原因還沒有弄明白,請各位試試,大家交流一下。

#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "math.h" 
//定義常量
#define	 POPSIZE   500
#define	 MAXIMIZATION 1
#define MINIMIZATION 2
//定義使用數據,對于不同問題而不同
#define Cmax 100
#define Cmin 0
#define LENGTH1  10
#define LENGTH2 10
#define CHROMLENGTH LENGTH1+LENGTH2
int FunctionMode=MAXIMIZATION;
int PopSize=80;
int MaxGeneration=200;
double Pc=0.6;
double Pm=0.001;
//定義數據結構
struct individual 
{
	char chrom[CHROMLENGTH];
	double value;
	double fitness;
};
//定義全局變量
int generation;
int best_index;
int worst_index;
struct individual bestindividual;
struct individual worstindividual;
struct individual currentbest;
struct individual population[POPSIZE];
//函數聲明
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);
//主函數
void main(void)
{
	//srand((unsigned)time(NULL)); 
	generation=0;
     GenerateInitialPopulation();
	 EvaluatePopulation();
	 while(generation<MaxGeneration){
		 generation++;
		 GenerateNextPopulation();
		 EvaluatePopulation();
		 PerformEvolution();
		 OutputTextReport();
	 }
}
//初始化,第一代
void GenerateInitialPopulation(void)
{
	int i,j;
	srand((unsigned)time(NULL));   
	    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(void)
{
	SelectionOperator();
	CrossOverOperator();
	MutationOperator();
}
//評價
void EvaluatePopulation(void)
{
    CalculateObjectValue();
	CalculateFitnessValue();
	FindBestAndWorstIndividual();
}
//把二進制解碼為十進制
long DecodeChromosome(char *string,int point,int length)
{
	int i;
    long decimal=0;//
	char *pointer;
	for(i=0,pointer=string+point;i<length;i++,pointer++)
	{
		decimal+=(*pointer-'0')<<(length-1-i);
	}
return(decimal);
}
//計算目標值
void CalculateObjectValue(void)
{
	int i;
	long temp1,temp2;
    double x1,x2;
	for(i=0;i<PopSize;i++)
	{
		temp1=DecodeChromosome(population[i].chrom,0,LENGTH1);
		temp2=DecodeChromosome(population[i].chrom,LENGTH1,LENGTH2);
		x1=4.096*temp1/1023.0-2.048;
		x2=4.096*temp2/1023.0-2.048;
		population[i].value=100*(x1*x1-x2)*(x1*x1-x2)+(1-x1)*(1-x1);
	}
}
//計算適應度
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.0;
			}
		}
		else if(FunctionMode==MINIMIZATION){
			if(population[i].value<Cmax){
				temp=Cmax-population[i].value;
			}else{
				temp=0.0;
			}
		}
		population[i].fitness=temp;
	}
}
//在當前代尋找最好個體
void FindBestAndWorstIndividual(void)
{
	int i;
	double sum=0.0;
	bestindividual=population[0];
	worstindividual=population[0];
	for(i=1;i<PopSize;i++){
		if(population[i].fitness<worstindividual.fitness){
			worstindividual=population[i];
			worst_index=i;
		}
		sum+=population[i].fitness;
	}
	if(generation==0){
		currentbest=bestindividual;
	}else{
		if(bestindividual.fitness>currentbest.fitness){
			currentbest=bestindividual;
		}
	}
}
//用最好個體替代最差個體
void PerformEvolution(void)
{
	if(bestindividual.fitness>currentbest.fitness){
		currentbest=population[best_index];
	}else{
		population[worst_index]=currentbest;
	}
}
//比例選擇產生染色體
void SelectionOperator(void)
{
	int i,index;
	double p,sum=0.0;
	double cfitness[POPSIZE];
	struct individual newpopulation[POPSIZE];
	//計算相對適應度
	for(i=0;i<PopSize;i++){
		sum+=population[i].fitness;
	}
	for(i=0;i<PopSize;i++){
		cfitness[i]=population[i].fitness/sum;
	}
	//計算累積適應度
	for(i=1;i<PopSize;i++){
		cfitness[i]=cfitness[i-1]+cfitness[i];
	}
	//選擇
		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(void)
{ 
	int i,j;
	int index[POPSIZE];
	int point,temp;
	double p;
	char ch;
		//任意配對
	for(i=0;i<PopSize;i++)
	{
		index[i]=i;
	}

	//for(i=0;i<PopSize;i++)
//	{
		
	//	point=rand()%PopSize-1;
	//	temp=index[i];
	//	index[i]=index[point+1];
	//	index[point+1]=temp;
//	}
	//一點交叉

	for(i=0;i<PopSize-1;i+=2)
	{
           p=rand()%1000/1000.0;
	
        if(p<Pc){
 
	point=rand()%CHROMLENGTH+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;
	}
	
}
}
}
//變異
void MutationOperator(void)
{

	int i,j;
	double p;
	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';
			}
		}
	}
}
//輸出結果
void OutputTextReport(void)
{
	int i;
	double sum;
	double average;
    sum=0.0;
	for(i=0;i<PopSize;i++){
		sum+=population[i].value;
	}
	average=sum/PopSize;
    printf("gen=%d,avg=%f,best=%f,",generation,average,currentbest.value);
	printf("chromsome=");
	for(i=0;i<CHROMLENGTH;i++){
		printf("%c",currentbest.chrom[i]);
	}
	printf("\n");
}










?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国产视频在线观看| 亚洲人123区| 日韩三区在线观看| 欧美色手机在线观看| 欧美专区亚洲专区| 在线视频欧美精品| 欧美性一区二区| 91 com成人网| 69堂成人精品免费视频| 日韩午夜av电影| 欧美成va人片在线观看| 久久精品在这里| 中文字幕制服丝袜成人av| 亚洲欧美国产三级| 亚洲一区二区三区中文字幕| 丝袜亚洲另类欧美综合| 琪琪一区二区三区| 九九视频精品免费| 成人在线视频一区| 91黄色免费看| 91精品免费在线观看| 久久网站热最新地址| 国产精品乱码久久久久久| 亚洲黄色小视频| 人人超碰91尤物精品国产| 九九久久精品视频| 波多野结衣在线一区| 欧美少妇一区二区| 日韩一二在线观看| 国产欧美日韩三级| 一区二区三区免费| 久99久精品视频免费观看| 不卡高清视频专区| 欧美日韩视频在线一区二区| 亚洲精品在线一区二区| 国产欧美日韩一区二区三区在线观看| 亚洲日本乱码在线观看| 日日夜夜免费精品| 成人在线一区二区三区| 欧美日韩第一区日日骚| 久久色在线观看| 自拍偷拍国产亚洲| 成人永久aaa| 色噜噜偷拍精品综合在线| 日韩一卡二卡三卡四卡| 国产欧美视频一区二区三区| 亚洲综合免费观看高清完整版| 久久国产精品一区二区| 色综合久久久久综合| 精品国产免费一区二区三区四区 | 亚洲一区成人在线| 国模套图日韩精品一区二区| 中文字幕乱码久久午夜不卡| 亚洲激情av在线| 国产精品1区2区| 欧美日韩不卡在线| 国产精品国产精品国产专区不片| 日韩成人av影视| 91无套直看片红桃| 久久这里都是精品| 亚洲国产成人porn| av午夜一区麻豆| 欧美成人精品3d动漫h| 亚洲一区在线观看网站| 高清shemale亚洲人妖| 5566中文字幕一区二区电影| 亚洲男人的天堂一区二区| 韩日欧美一区二区三区| 91超碰这里只有精品国产| bt7086福利一区国产| 久久精品国产999大香线蕉| 91小视频免费看| 久久综合中文字幕| 日韩avvvv在线播放| 日本乱码高清不卡字幕| 中文字幕不卡在线播放| 精品一区二区免费视频| 欧美精选午夜久久久乱码6080| 亚洲欧洲国产专区| 国产成人午夜99999| 欧美大片顶级少妇| 午夜欧美在线一二页| 日本韩国一区二区| 亚洲色图在线播放| 成人免费视频caoporn| 26uuu国产一区二区三区| 日韩精品欧美成人高清一区二区| 欧美自拍丝袜亚洲| 亚洲综合久久久久| 欧美在线观看视频一区二区| 国产精品久久久久久一区二区三区| 国产精品一区免费在线观看| 日韩免费在线观看| 久久爱另类一区二区小说| 91精品国模一区二区三区| 天天影视色香欲综合网老头| 欧美在线观看视频一区二区三区| 亚洲免费在线视频| 中文字幕欧美激情| 中文字幕一区二区三区乱码在线| 国产在线精品国自产拍免费| 日韩你懂的在线观看| 欧美96一区二区免费视频| 日韩午夜激情免费电影| 另类小说综合欧美亚洲| 精品国产一区二区三区忘忧草| 精品一区二区三区欧美| 精品国产免费一区二区三区四区 | 亚洲曰韩产成在线| 在线免费观看日本一区| 亚洲国产cao| 在线成人免费观看| 捆绑紧缚一区二区三区视频| 26uuu久久天堂性欧美| 国产成人综合亚洲91猫咪| 欧美国产乱子伦| 99久久精品免费看国产| 一区二区三区免费观看| 欧美肥妇毛茸茸| 激情偷乱视频一区二区三区| 国产嫩草影院久久久久| 99久久久久久| 午夜日韩在线电影| 精品美女一区二区| 高清成人免费视频| 亚洲免费观看高清完整版在线 | 国产乱人伦偷精品视频不卡| 久久精品视频一区| 成人午夜免费视频| 亚洲免费观看高清完整版在线 | 欧美综合久久久| 偷拍与自拍一区| 日韩精品一区二区三区蜜臀| 高清国产午夜精品久久久久久| 亚洲品质自拍视频网站| 欧美日韩电影在线| 国产一区二区不卡在线 | 久久国产精品第一页| 欧美—级在线免费片| 欧美羞羞免费网站| 国产乱码精品一区二区三区忘忧草| 成人欧美一区二区三区黑人麻豆| 欧美人与禽zozo性伦| 国产一区二区日韩精品| 一区二区三区在线视频观看58| 91精品国产高清一区二区三区蜜臀 | 亚洲人成网站色在线观看 | 亚洲电影一级片| 2021中文字幕一区亚洲| 91啪亚洲精品| 国产在线一区二区综合免费视频| 中文字幕日韩精品一区| 日韩区在线观看| 91麻豆精品在线观看| 精品一区二区在线看| 夜夜揉揉日日人人青青一国产精品| 日韩欧美在线不卡| 色吊一区二区三区| 国产精品一品二品| 首页欧美精品中文字幕| 最新欧美精品一区二区三区| 日韩一区二区在线免费观看| 色综合色综合色综合| 国产一区二区三区电影在线观看| 亚洲国产欧美日韩另类综合| 国产精品少妇自拍| 日韩欧美一区在线| 欧美三级资源在线| 成人精品电影在线观看| 美日韩一级片在线观看| 亚洲精品videosex极品| 国产午夜精品福利| 91激情在线视频| 懂色av一区二区夜夜嗨| 秋霞国产午夜精品免费视频| 亚洲精品国产a| 国产女人aaa级久久久级| 日韩视频在线永久播放| 欧美日韩中文另类| 日本精品视频一区二区| 成人精品小蝌蚪| 国产伦精品一区二区三区免费迷| 日产精品久久久久久久性色| 亚洲一线二线三线视频| 亚洲欧美一区二区视频| 中文字幕高清不卡| 国产欧美日韩综合精品一区二区| 日韩免费成人网| 欧美电影一区二区三区| 欧美性xxxxxxxx| 色婷婷精品大在线视频| 99视频一区二区三区| 成人国产亚洲欧美成人综合网| 国产美女精品在线| 国产在线精品免费| 国产美女在线观看一区| 国产伦精一区二区三区| 国产一级精品在线| 国产伦精品一区二区三区免费迷| 国内成人自拍视频|