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

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

?? bsga.cpp.bak

?? 一個簡單遺傳算法的程序
?? BAK
字號:
/*******************************************
*             畢設遺傳算法程序             *
*          programmed by 朱健華            *
*******************************************/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*******************************************
*    the defination of constant            *
*******************************************/
#define POPSIZE 200//種群數量
#define pi 3.14
/*******************************************
*                用戶數據定義              *
*******************************************/
#define CHROMLENGTH 120
int PopSize =200;//種群規模
int MaxGeneration =50000;//終止進化代數
double Pc =0.60;//交叉概率
double Pm =0.03;//變異概率
/*******************************************
*                數據類型定義              *
*******************************************/
struct individual //個體數據定義
{
char chrom[CHROMLENGTH+1];//個體字符串編碼
double f1,f2,a1,a2,k1,k2;
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];//種群
FILE *galog;
/*******************************************
*            函數原型聲明                  *
*******************************************/
void GenerateInitialPopulation(void);//產生初始種群
void GenerateNextPopulation(void);//產生下一代群體
void EvaluatePopulation(void);//評價函數
double DecodeChromosome1(char *,int,int);//電阻值對應染色體解碼
double DecodeChromosome2(char *,int,int);//電容值對應染色體解碼
void CaculateObjectValue(void);//計算個體表現型值
void CaculateFitnessValue(void);//計算適應度
void FindBestAndWorstIndividual(void);//尋找最佳和最差個體
void PerformEvolution(void);//進行評價操作
void SelectionOperator(void);//選擇操作
void CrossoverOperator(void);//交叉操作
void MutationOperator(void);//變異操作
void OutputTextReport(void);
/********************************************
*            主程序                         *
********************************************/
void main(void)
{
generation=0;
GenerateInitialPopulation();
EvaluatePopulation();
while(generation<MaxGeneration)
  {
  generation++;
  GenerateNextPopulation();
  EvaluatePopulation();
  PerformEvolution();
  OutputTextReport();
	}
}    
/********************************************
*            產生初始群體                   *
********************************************/
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(void)
{
  SelectionOperator();//選擇操作
  CrossoverOperator();//交叉操作
  MutationOperator();//變異操作
}
/*********************************************
*         依據一定的規則評價種群             *
*********************************************/
void EvaluatePopulation(void)
{
  CaculateObjectValue();//計算個體函數值
  CaculateFitnessValue();//計算適應度
  FindBestAndWorstIndividual();
}
/*********************************************
*將二進制染色體碼解碼成十進制數 電阻值解碼   *
*********************************************/
double DecodeChromosome1(char *string,int point,int length)
{
	int i;
	double r=0.0;
	char *pointer;
	for(i=0,pointer=string+point;i<length;i++,pointer++)
	{
		if(i<7)
		{r+=(*pointer-'0')<<(length-1-i);}
        else if(i>=7)
		{r+=(*pointer-'0')<<(length-1-i)/8;}
	}
	return(r);
}
/*********************************************
*將二進制染色體碼解碼成十進制數 電容值解碼   *
*********************************************/
double DecodeChromosome2(char *string,int point,int length)
{
	int i;
	double c=0.0;
	char *pointer;
	for(i=0,pointer=string+point;i<length;i++,pointer++)
	{c+=(*pointer-'0')<<(length-1-i);}
	c=c/(1024*40);
	return(c);
}
/*********************************************
*           計算個體函數值                   *
*********************************************/
void CaculateObjectValue(void)
{
	int i,j;
	double x[12];
	for(i=0;i<PopSize;i++)
	{
		for(j=0;j<12;j++)
		{
			if(j<8)
			{
				x[j]=DecodeChromosome1(population[i].chrom,10*j,10);
			}
			else if(j>=8)
			{
				x[j]=DecodeChromosome2(population[i].chrom,10*j,10);
			}
		}
		population[i].f1=1/(2*pi*sqrt(x[0]*x[1]*x[8]*x[9]));
        population[i].f2=1/(2*pi*sqrt(x[4]*x[5]*x[10]*x[11]));
		population[i].k1=1+x[3]/x[2];
		population[i].k2=1+x[7]/x[6];
        population[i].a1=(sqrt(x[1]*x[9]/(x[0]*x[8]))+sqrt(x[0]*x[9]/(x[1]*x[8]))-(population[i].k1-1)*sqrt(x[0]*x[8]/(x[1]*x[9])))/2;
		population[i].a2=(sqrt(x[5]*x[11]/(x[4]*x[10]))+sqrt(x[4]*x[11]/(x[5]*x[10]))-(population[i].k2-1)*sqrt(x[4]*x[10]/(x[5]*x[11])))/2;
		population[i].value=0.05*fabs(population[i].f1-11940.04)+0.05*fabs(population[i].f2-20625.4)+fabs(population[i].k1*population[i].k2-36)+10*fabs(population[i].a1-0.17)+10*fabs(population[i].a2-0.709)+1;
	}
}
/***********************************************
*          計算適應度值                        *
***********************************************/
void CaculateFitnessValue(void)
{
	int i;
	for(i=0;i<PopSize;i++)
	{
		if(population[i].value==0.00)
		  population[i].fitness=population[i].value;
		else
		  population[i].fitness=1/population[i].value;
	}
}
/***********************************************
*       尋找當前代最佳個體                     *
***********************************************/
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>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;
	//尋找迄今為止最佳個體
  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-i);
		temp=index[i];
		index[i]=index[point+i];
		index[point+i]=temp;
	}
	//單點交叉操作
	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;
				}
			}
	}
}
/***********************************************
*                     變異操作                 *
***********************************************/
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)
{
	//輸出
	printf(galog,"\n\nSimulation Completed\n");
    printf("success!\n");
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女精品人人做人人爽| 欧美色男人天堂| 性做久久久久久免费观看欧美| 中文字幕 久热精品 视频在线 | 91精品国产欧美一区二区18| 在线视频国内一区二区| 日本伦理一区二区| 91在线云播放| 欧美系列在线观看| 欧美日本一区二区三区四区| 欧美精品在线视频| 日韩免费一区二区三区在线播放| 欧美丰满一区二区免费视频| 欧美videossexotv100| 日韩一区二区免费在线观看| 日韩女优毛片在线| 欧美激情一区二区三区蜜桃视频| 国产精品久久久久婷婷| 亚洲精品国产无天堂网2021| 日韩国产精品久久久久久亚洲| 毛片av中文字幕一区二区| 精品一区在线看| 欧美三级电影网| 欧美大肚乱孕交hd孕妇| 国产蜜臀av在线一区二区三区| 亚洲天堂福利av| 日产国产欧美视频一区精品| 精品一区二区免费| 一本色道综合亚洲| 日韩精品中文字幕一区二区三区| 久久久久88色偷偷免费| 亚洲男人的天堂一区二区| 日本亚洲最大的色成网站www| 国产一区二区在线影院| 色国产精品一区在线观看| 日韩欧美一区二区久久婷婷| 亚洲国产高清aⅴ视频| 午夜一区二区三区视频| 成人自拍视频在线观看| 91精品国产欧美一区二区成人| 国产日产亚洲精品系列| 日韩综合小视频| 不卡的av中国片| 精品国产免费视频| 久久国产精品免费| 色猫猫国产区一区二在线视频| 欧美成人在线直播| 亚洲国产欧美在线| 不卡av在线免费观看| 精品国产91洋老外米糕| 天天综合色天天| 日本道色综合久久| 国产欧美日韩一区二区三区在线观看 | 亚洲天堂精品视频| 国产成人免费视频一区| 日韩视频在线观看一区二区| 亚洲一区二区三区国产| 99久久精品国产导航| 久久视频一区二区| 麻豆精品视频在线观看视频| 欧美午夜精品久久久久久超碰| 国产精品久久久久aaaa| 国产精品亚洲一区二区三区在线| 日韩视频在线你懂得| 日日欢夜夜爽一区| 欧美日韩久久一区| 亚洲va欧美va人人爽午夜 | 欧美男人的天堂一二区| 一区二区三区在线看| 91在线精品一区二区| 国产精品私人自拍| 不卡一卡二卡三乱码免费网站| 久久九九影视网| 粉嫩av亚洲一区二区图片| 久久夜色精品一区| 国产成人亚洲精品狼色在线| 久久久天堂av| 粉嫩欧美一区二区三区高清影视| 久久嫩草精品久久久精品| 国产乱码精品一品二品| 中文字幕欧美国产| 99久久精品国产一区二区三区| 国产精品麻豆欧美日韩ww| 成人97人人超碰人人99| 中文字幕人成不卡一区| 97久久精品人人澡人人爽| 一区二区在线观看av| 欧美亚洲一区二区在线| 日韩精品三区四区| 久久综合给合久久狠狠狠97色69| 国产成人在线免费观看| 国产精品免费人成网站| 日本精品视频一区二区三区| 亚洲一卡二卡三卡四卡五卡| 欧美理论在线播放| 精品一区二区免费| 国产精品久久看| 在线观看日韩电影| 日本欧美一区二区| 国产精品久久三| 欧美日韩国产一级| 国内偷窥港台综合视频在线播放| 五月天激情综合网| 精品国产三级电影在线观看| 国产精品一品二品| 亚洲一区欧美一区| 欧美sm极限捆绑bd| 91美女精品福利| 久久精品国产99国产| 中文字幕高清不卡| 91麻豆精品国产91久久久 | 欧美曰成人黄网| 日韩福利电影在线| 亚洲视频小说图片| 欧美成人aa大片| 一本久久a久久精品亚洲| 青青草原综合久久大伊人精品 | 欧美视频一区二区三区| 韩日欧美一区二区三区| 亚洲日本成人在线观看| 精品久久免费看| 91久久精品网| 国产伦精一区二区三区| 婷婷久久综合九色国产成人 | 国产欧美一区二区精品性色超碰 | 精品国产第一区二区三区观看体验| 99免费精品在线| 国产综合色产在线精品| 婷婷综合另类小说色区| 亚洲免费毛片网站| 国产精品电影一区二区三区| 26uuu久久综合| 91精品国产综合久久精品| 99re这里都是精品| 成人99免费视频| 粉嫩蜜臀av国产精品网站| 久久99精品久久久久久久久久久久 | 成人av高清在线| 韩国午夜理伦三级不卡影院| 日本视频一区二区三区| 午夜电影一区二区| 亚洲精品v日韩精品| 国产精品欧美久久久久无广告| 26uuu欧美| 欧美va亚洲va在线观看蝴蝶网| 3d成人h动漫网站入口| 欧美日韩国产片| 欧美日韩国产另类一区| 欧美视频一区二区三区| 欧美怡红院视频| 欧美色区777第一页| 欧美日产在线观看| 欧美精品视频www在线观看| 欧美伊人久久久久久久久影院| 欧美性生交片4| 欧美私模裸体表演在线观看| 欧美三级视频在线| 欧美剧情电影在线观看完整版免费励志电影 | 国内精品久久久久影院一蜜桃| 日韩激情视频在线观看| 欧美aaaaa成人免费观看视频| 日本女优在线视频一区二区| 欧美aaaaaa午夜精品| 韩国v欧美v日本v亚洲v| 成人在线一区二区三区| 色综合久久天天| 欧美性受xxxx| 欧美成人伊人久久综合网| 欧美精品一区二区蜜臀亚洲| 国产欧美日韩麻豆91| 亚洲欧美日本韩国| 亚洲第一电影网| 国产制服丝袜一区| 色哟哟精品一区| 欧美一区日韩一区| 国产欧美一区二区三区鸳鸯浴| 亚洲欧美日韩人成在线播放| 亚洲国产精品一区二区www在线| 日韩精品91亚洲二区在线观看| 加勒比av一区二区| 99re66热这里只有精品3直播 | 欧美一区中文字幕| 久久久不卡影院| 亚洲欧美日韩人成在线播放| 日本特黄久久久高潮| av电影在线观看一区| 91精品国产综合久久精品app| 久久精子c满五个校花| 亚洲影院在线观看| 国产毛片精品视频| 欧洲中文字幕精品| 久久夜色精品国产欧美乱极品| 最新日韩在线视频| 精品一区二区三区在线视频| 91免费看片在线观看| 精品美女一区二区三区| 亚洲男人电影天堂| 成人永久看片免费视频天堂| 在线不卡中文字幕播放| 亚洲婷婷综合久久一本伊一区|