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

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

?? ga.c

?? 遺傳算法
?? C
字號:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

#define SUM 20            //總共的染色體數(shù)量
#define MAXloop 1200       //最大循環(huán)次數(shù)
#define error 0.01        //若兩次最優(yōu)值之差小于此數(shù)則認為結(jié)果沒有改變
#define crossp 0.7        //交叉概率
#define mp 0.04           //變異概率

struct gen                //定義染色體結(jié)構(gòu)
{
	int info;        
	float suitability;
};
struct gen gen_group[SUM];//定義一個含有20個染色體的組
struct gen gen_new[SUM];  

struct gen gen_result;    //記錄最優(yōu)的染色體
int result_unchange_time; //記錄在error前提下最優(yōu)值為改變的循環(huán)次數(shù)

struct log                //形成鏈表,記錄每次循環(huán)所產(chǎn)生的最優(yōu)的適應(yīng)度
{
	float suitability;
	struct log *next;
}llog,*head,*end;
int log_num;              //鏈表長度

void initiate();          
void evaluation(int flag);
void cross();
void selection();
int  record();
void mutation();
void showresult(int);

int   randsign(float p);
int   randbit(int i,int j);
int   randnum();
int   convertionD2B(float x);
float convertionB2D(int x);
int   createmask(int a);

void main()
{
	int i,flag;
	flag=0;
	initiate();
    evaluation( 0 );
	for( i = 0 ; i < MAXloop ; i++ )
	{
		cross();
		evaluation( 1 );
		selection();
		if( record() == 1 )
		{
			flag = 1;
			break;
		}
		mutation();
	}
	showresult( flag );
}

void initiate()
{
	int i , stime;	
	long ltime;
	ltime=time(NULL);
	stime=(unsigned)ltime/2;
	srand(stime);
	for( i = 0 ; i < SUM ; i++ )
	{
		gen_group[i].info = randnum();		 
	}
	gen_result.suitability=1000;
	result_unchange_time=0;
	head=end=(struct log *)malloc(sizeof(llog));
	if(head==NULL)
	{
		printf("\n內(nèi)存不夠!\n");
		exit(0);
	}
	end->next = NULL;
	log_num = 1;
}

void evaluation(int flag)
{
	int i,j;
	struct gen *genp;
	int gentinfo;
	float gentsuitability;
	float x;
	if( flag == 0 )
		genp = gen_group;
	else genp = gen_new;
	for(i = 0 ; i < SUM ; i++)//計算各染色體對應(yīng)的表達式值
	{
		x = convertionB2D( genp[i].info );
		genp[i].suitability = x*(x*(x*(x*(x*(x-10)-26)+344)+193)-1846)-1680;
	}
	for(i = 0 ; i < SUM - 1 ; i++)//按表達式的值進行排序,
	{
		for(j = i + 1 ; j < SUM ; j++)
		{
			if( genp[i].suitability > genp[j].suitability )
			{
				gentinfo = genp[i].info;
				genp[i].info = genp[j].info;
				genp[j].info = gentinfo;
				
				gentsuitability = genp[i].suitability;
				genp[i].suitability = genp[j].suitability;
				genp[j].suitability = gentsuitability;		
			}
		}
	}
}

void cross()
{
	int i , j , k ;
	int mask1 , mask2;
	int a[SUM];
	for(i = 0 ; i < SUM ; i++)  a[i] = 0;
	k = 0;
	for(i = 0 ; i < SUM ; i++)
	{
		if( a[i] == 0)
		{
			for( ; ; )//隨機找到一組未進行過交叉的染色體與a[i]交叉
			{
   				j = randbit(i + 1 , SUM - 1);
				if( a[j] == 0)	break;
			}
			if(randsign(crossp) == 1)
			{
				mask1 = createmask(randbit(0 , 14));
				mask2 = ~mask1;
				gen_new[k].info = (gen_group[i].info) & mask1 + (gen_group[j].info) & mask2;
				gen_new[k+1].info=(gen_group[i].info) & mask2 + (gen_group[j].info) & mask1;
				k = k + 2;
			}
			else 
			{
				gen_new[k].info=gen_group[i].info;
				gen_new[k+1].info=gen_group[j].info;
				k=k+2;
			}
			a[i] = a[j] = 1;
		}
	}
}

void selection()
{
	int i , j , k;
	j = 0;
	i = SUM/2-1;
	if(gen_group[i].suitability < gen_new[i].suitability)
	{
		for(j = 1 ; j < SUM / 2 ; j++)
		{
			if(gen_group[i+j].suitability > gen_new[i-j].suitability)
				break;
		}
	}
	else
		if(gen_group[i].suitability>gen_new[i].suitability)
		{
			for(j=-1;j>-SUM/2;j--)
			{
				if(gen_group[i+j].suitability<=gen_new[i-j].suitability)
					break;
			}
		}
	for(k=j;k<SUM/2+1;k++)
	{
		gen_group[i+k].info = gen_new[i-k].info;
		gen_group[i+k].suitability = gen_new[i-k].suitability;
	}	
}

int record()
{
	float x;	
	struct log *r;
	r=(struct log *)malloc(sizeof(llog));
	if(r==NULL)
	{
		printf("\n內(nèi)存不夠!\n");
		exit(0);
	}
	r->next = NULL;
	end->suitability = gen_group[0].suitability;
	end->next = r;
	end = r;
	log_num++;

	x = gen_result.suitability - gen_group[0].suitability;
	if(x < 0)x = -x;
	if(x < error)
	{
		result_unchange_time++;
		if(result_unchange_time >= 20)return 1;
	}
	else
	{
		gen_result.info = gen_group[0].info;
		gen_result.suitability = gen_group[0].suitability;
		result_unchange_time=0;
	}
	return 0;
}

void mutation()
{
	int i , j , m;
	float x;
	float gmp;
	int gentinfo;
	float gentsuitability;
	gmp = 1 - pow(1 - mp , 11);//在基因變異概率為mp時整條染色體的變異概率
	for(i = 0 ; i < SUM ; i++)
	{
		if(randsign(gmp) == 1)
		{
			j = randbit(0 , 14);
			m = 1 << j;
			gen_group[i].info = gen_group[i].info^m;
			x = convertionB2D(gen_group[i].info);
			gen_group[i].suitability = x*(x*(x*(x*(x*(x-10)-26)+344)+193)-1846)-1680;
		}
	}
	for(i = 0 ; i < SUM - 1 ; i++)
	{
		for(j = i + 1 ; j < SUM ; j++)
		{
			if(gen_group[i].suitability > gen_group[j].suitability)
			{
				gentinfo = gen_group[i].info;
				gen_group[i].info = gen_group[j].info;
				gen_group[j].info = gentinfo;
				
				gentsuitability = gen_group[i].suitability;
				gen_group[i].suitability = gen_group[j].suitability;
				gen_group[j].suitability = gentsuitability;
			}
		}
	}
}

void showresult(int flag)//顯示搜索結(jié)果并釋放內(nèi)存
{
	int i , j;
	struct log *logprint,*logfree;
	FILE *logf;
	if(flag == 0)
		printf("已到最大搜索次數(shù),搜索失敗!");
	else 
	{
		printf("當(dāng)取值%f時表達式達到最小值為%f\n",convertionB2D(gen_result.info),gen_result.suitability);
		printf("收斂過程記錄于文件log.txt");
		if((logf = fopen("log.txt" , "w+")) == NULL)
		{
			printf("Cannot create/open file");
			exit(1);
		}
		logprint=head;
		for(i = 0 ; i < log_num ; i = i + 5)//對收斂過程進行顯示
		{
			for(j = 0 ; (j < 5) & ((i + j) < log_num-1) ; j++)
			{
				fprintf(logf , "%20f" , logprint->suitability);
				logprint=logprint->next;				
			}
			fprintf(logf,"\n\n");
		}
	}
	for(i = 0 ; i< log_num ; i++)//釋放內(nèi)存
	{
		logfree=head;
		head=head->next;
		free(logfree);
		fclose(logf);
	}
	getchar();
}

int randsign(float p)//按概率p返回1
{
	if(rand() > (p * 32768))
		return 0;
	else return 1;
}
int randbit(int i, int j)//產(chǎn)生在i與j之間的一個隨機數(shù)
{
	int a , l;
	l = j - i + 1;
	a = i + rand() * l / 32768;
	return a;
}
int randnum()
{
	int x;
	x = rand() / 2;
	return x;
}
float convertionB2D(int x)
{
	float y;
	y = x;
	y = (y - 8192) / 1000;
	return y;
	
}
int convertionD2B(float x)
{
	int g;
	g = (x * 1000) + 8192;
	return g;
}
int createmask(int a)
{
	int mask;
	mask=(1 << (a + 1)) - 1;
	return mask;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av在线一区二区三区| 91蜜桃在线免费视频| 免费成人你懂的| 亚洲图片一区二区| 亚洲黄色免费网站| 亚洲欧美一区二区三区国产精品| 国产精品女上位| 日本一区二区三区在线不卡| 国产日韩欧美一区二区三区综合| 国产色产综合色产在线视频| 中文av字幕一区| 中文字幕一区二区三区在线播放 | 国产成人自拍高清视频在线免费播放| 久久精品噜噜噜成人88aⅴ| 久久99精品视频| 国内精品久久久久影院薰衣草| 国产一区久久久| 成a人片国产精品| 91福利在线播放| 69堂成人精品免费视频| 欧美大片在线观看| 欧美激情一区二区三区在线| 亚洲女女做受ⅹxx高潮| 亚洲18女电影在线观看| 美女国产一区二区三区| 国产精品原创巨作av| 国产91对白在线观看九色| 91在线高清观看| 欧美日韩国产美女| 精品捆绑美女sm三区| 国产精品美女一区二区三区| 亚洲精品国产无套在线观| 五月婷婷激情综合网| 久久99久久精品| 97久久超碰精品国产| 69p69国产精品| 久久精品一区四区| 亚洲一区二区视频| 精品亚洲欧美一区| 不卡电影免费在线播放一区| 91黄色免费网站| 欧美刺激午夜性久久久久久久| 中文字幕精品一区二区三区精品| 亚洲欧美另类小说视频| 喷水一区二区三区| www.久久精品| 欧美精品日韩一区| 国产欧美视频一区二区| 亚洲成av人片观看| 粉嫩蜜臀av国产精品网站| 欧美在线一区二区三区| xfplay精品久久| 亚洲自拍都市欧美小说| 国产一区中文字幕| 欧美午夜精品理论片a级按摩| 精品国产成人在线影院| 亚洲精品乱码久久久久久久久 | 一区二区三区精品视频| 九色|91porny| 在线观看免费一区| 欧美经典一区二区| 日韩中文字幕麻豆| 色综合天天天天做夜夜夜夜做| 日韩午夜在线观看| 一二三四社区欧美黄| 国产精品亚洲第一区在线暖暖韩国 | 国产成人综合亚洲网站| 欧美绝品在线观看成人午夜影视| 欧美国产视频在线| 美女视频网站黄色亚洲| 欧美综合欧美视频| 国产精品久99| 国产一区不卡视频| 欧美另类videos死尸| 亚洲精品欧美在线| 不卡电影免费在线播放一区| 久久欧美一区二区| 美女高潮久久久| 欧美一区二区三区白人| 一区二区高清免费观看影视大全| 国产成人亚洲综合a∨猫咪| 日韩欧美国产综合| 日韩一区精品视频| 欧美日韩国产在线播放网站| 亚洲婷婷国产精品电影人久久| 国产精品亚洲综合一区在线观看| 日韩午夜激情免费电影| 日韩在线卡一卡二| 欧美视频精品在线| 亚洲综合清纯丝袜自拍| 色综合一区二区三区| 国产精品久久久久影院亚瑟| 国产成人亚洲综合a∨猫咪| 久久综合999| 国产在线精品免费| 久久久综合网站| 国产乱子伦视频一区二区三区 | 欧美亚洲图片小说| 亚洲美女精品一区| 日本电影亚洲天堂一区| 亚洲欧美日韩电影| 欧美性猛交xxxx黑人交| 一区二区高清在线| 欧美日韩国产天堂| 全部av―极品视觉盛宴亚洲| 91精品国产高清一区二区三区蜜臀 | 亚洲色图欧美在线| 99国产一区二区三精品乱码| 最新国产成人在线观看| 一本色道久久综合狠狠躁的推荐| 亚洲美女视频在线| 欧美视频在线一区二区三区| 亚洲国产成人av好男人在线观看| 精品污污网站免费看| 午夜成人免费视频| 日韩免费视频一区二区| 国产麻豆视频精品| 国产女同互慰高潮91漫画| 不卡大黄网站免费看| 亚洲欧美日韩国产综合| 欧美视频一区二区三区在线观看 | 欧亚一区二区三区| 亚洲成精国产精品女| 日韩三级免费观看| 国产精品一二三四| 亚洲丝袜另类动漫二区| 欧美性受xxxx黑人xyx| 视频一区视频二区中文| 欧美精品一区二区三区在线播放| 国产成人99久久亚洲综合精品| 国产精品美女久久久久久久久 | 色网综合在线观看| 首页国产欧美日韩丝袜| 2017欧美狠狠色| 91国偷自产一区二区三区成为亚洲经典 | 91亚洲精品久久久蜜桃网站| 亚洲一区二区av电影| 日韩欧美国产麻豆| 成人自拍视频在线| 亚洲图片欧美综合| 久久麻豆一区二区| 欧美丝袜自拍制服另类| 韩国女主播成人在线观看| 国产精品成人在线观看| 欧美日韩高清一区| 国产精品系列在线播放| 一区二区三国产精华液| 精品va天堂亚洲国产| 91免费精品国自产拍在线不卡| 日韩不卡手机在线v区| 国产欧美久久久精品影院| 欧美日韩亚洲综合| 成人看片黄a免费看在线| 亚洲二区在线视频| 亚洲国产经典视频| 717成人午夜免费福利电影| 成人高清在线视频| 秋霞电影网一区二区| 国产精品国产三级国产普通话99 | 欧美曰成人黄网| 国产一区二区三区免费观看| 亚洲精品大片www| 精品1区2区在线观看| 欧美色图激情小说| 成人精品免费视频| 蜜桃视频在线观看一区| 亚洲乱码中文字幕| 久久婷婷国产综合国色天香| 欧美视频中文字幕| 99国产欧美另类久久久精品 | 久久只精品国产| 欧美日韩三级一区| 9i在线看片成人免费| 国内精品国产成人国产三级粉色| 亚洲国产欧美另类丝袜| 国产精品欧美一区喷水| 欧美一区三区二区| 日本电影亚洲天堂一区| 成人a免费在线看| 激情伊人五月天久久综合| 亚洲成人自拍偷拍| 亚洲欧洲国产日韩| 中文字幕欧美日韩一区| 精品奇米国产一区二区三区| 欧美日韩精品二区第二页| 9i在线看片成人免费| 成人激情开心网| 国产经典欧美精品| 久久97超碰国产精品超碰| 天天操天天色综合| 亚洲高清三级视频| 亚洲乱码国产乱码精品精小说| 亚洲国产成人自拍| 国产欧美一区二区精品性色超碰| 久久在线观看免费| 精品国产凹凸成av人网站| 精品久久五月天| 精品国产电影一区二区| 久久一区二区三区国产精品| 欧美大片顶级少妇|