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

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

?? igka.c

?? C語言編寫的遺傳算法程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <string.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <float.h>

#ifndef RAND_MAX
#define RAND_MAX 32767
#endif;

#ifndef MAX_NUMBER
#define MAX_NUMBER 0xffffff
#endif;

struct Solution{
	int *a;
	int *Z;
	int *ZDelta;
	double F;
	double **SF;
	double **SFDelta;
	double *WCV;
	double **C;
	int num;
	double TWCV;
	double TWCVDelta;
	double **d;
	double e;
	int *change;
	double *dmax;
	double *dmin;
	int *kmin;
	int *kmax;
	double *dsum;
	int used;
};

void FGKA();
void Init();
void Selection();
void Mutation();
void KMO();
void Eval(int);
void AccumulateUpdate(int, int, int, int);
void IncrementalUpdate(int);
void CopySolution(struct Solution *, struct Solution *);
double* gather(double*,int);
int Distribution(double*, int);
char* getline(FILE*);
int LoadData (const char*);
int Export(const char*);

int* match1;
int* match2;
double **X; //Pattern
struct Solution *S;
struct Solution SO;

int K = 0; // Cluster number
int N = 0; // Pattern number
int D = 0; // Feature number
int M = 0; // Population number
double TWCV;
double TWCVMax;

int G = 0;  // Maximum number of Generation
float mp;   //mutation Probability
int *origin;
FILE* outputfile;

void main(int argc,char **argv)
{
	char filename[30];

	printf("\nPlease input the file name for processing: ");
	scanf("%s", filename);
	strcat(filename,"\0");
	printf("\nPlease enter the number of Clusters: ");
	scanf("%d",&K);
	printf("\nPlease enter the number of Populations: ");
	scanf("%d",&M);
	printf("\nPlease enter the number of maximum generations: ");
	scanf("%d",&G);
	printf("\nPlease enter the mutation probability: ");
	scanf("%f",&mp);

	if ( LoadData(filename) == -1 ) exit(1);

//	for(i=0; i<10; i++)
        FGKA();

	Export(filename);

	free(X);

}

void FGKA()
{
	int tim1, tim2;
	int n, i, m;

	tim1 = time(0);

	SO.TWCV = MAX_NUMBER;
	Init();

	for(i=0; i<G; i++)
	{
		Selection();

		Mutation();

		KMO();

		for(m=0; m<M; m++)
		{
			if(SO.TWCV > S[m].TWCV)
			{
				SO.TWCV = S[m].TWCV;
				for(n=0; n<N; n++)
					SO.a[n] = S[m].a[n];
			}
		}

		tim2 = time(0);
		printf("iteration %d\t%f\t%d\n",i, SO.TWCV, tim2 - tim1);
	}

//	fprintf(outputfile,"%f\n", SO.TWCV);
	//	printf("TWCV: %f\t%f\n", Twcv(SO.a), SO.TWCV);

	tim2 = time(0);
	printf("%d", tim2 - tim1);
	free(S);

}

void Init()
{
	int n, m, k, d;

	TWCVMax = 0;

	S = (struct Solution*)malloc((size_t)M*sizeof(struct Solution));
	match1 = (int*)malloc((size_t)M*sizeof(int));
	match2 = (int*)malloc((size_t)M*sizeof(int));

//	srand( (unsigned)time( NULL ));
	srand(100);

	for(m = 0; m < M; m++)
	{
		SO.a = (int*)malloc((size_t)N*sizeof(int));
		S[m].a = (int*)malloc((size_t)N*sizeof(int));
		S[m].Z = (int*)malloc((size_t)K*sizeof(int));
		S[m].ZDelta = (int*)malloc((size_t)K*sizeof(int));
		S[m].WCV = (double*)malloc((size_t)K*sizeof(double));
		S[m].SF = (double**)malloc((size_t)K*sizeof(double*));
		S[m].SFDelta = (double**)malloc((size_t)K*sizeof(double*));
		S[m].change = (int*)malloc((size_t)K*sizeof(int));
		S[m].dsum = (double*)malloc((size_t)N*sizeof(double));
		S[m].dmax = (double*)malloc((size_t)N*sizeof(double));
		S[m].dmin = (double*)malloc((size_t)N*sizeof(double));
		S[m].kmax = (int*)malloc((size_t)N*sizeof(int));
		S[m].kmin = (int*)malloc((size_t)N*sizeof(int));
		S[m].C = (double**)malloc((size_t)K*sizeof(double*));
		S[m].d = (double**)malloc((size_t)N*sizeof(double*));
		S[m].used =0;

		for (k = 0; k < K; k++)
  		{
			S[m].C[k] =(double*)malloc((size_t)D*sizeof(double));
			S[m].SF[k] = (double*)malloc((size_t)D*sizeof(double));
			S[m].SFDelta[k] = (double*)malloc((size_t)D*sizeof(double));
			S[m].change[k] = 0;
			S[m].ZDelta[k] = 0;
			for(d=0; d<D; d++)
			{
				S[m].SFDelta[k][d] = 0;
			}
  		}

		for(n = 0; n < N; n++)
		{
			S[m].d[n] = (double*)malloc((size_t)K*sizeof(double));
			S[m].a[n] =  (int)(((double)rand()/RAND_MAX) * K);
			if(S[m].a[n] == K) S[m].a[n] --;
		}
		Eval(m);

		if(SO.TWCV > S[m].TWCV)
		{
			SO.TWCV = S[m].TWCV;
			for(n=0; n<N; n++)
				SO.a[n] = S[m].a[n];
		}


	}

}


void Selection()
{
    double Fmin = 0;
	double *psb;
	double Fsum = 0;
	int i, m, temp, count;
	int flag =0;
	struct Solution *Sprime;

	for(m=0; m<M; m++)
	{
		if (S[m].num == K)
		{
			flag = 1;
			S[m].F = 1.5 * TWCVMax - S[m].TWCV;
			if(Fmin > S[m].F)
				Fmin = S[m].F;
			Fsum = Fsum + S[m].F;
		}
	}

	if(flag == 0)
		Fmin =1;

	for(m=0; m<M; m++)
	{
		if (S[m].num != K)
		{
			S[m].F = S[m].e * Fmin;
			Fsum = Fsum + S[m].F;
		}
	}
	psb = (double*)malloc((size_t)M*sizeof(double));

	for(m=0; m<M; m++)
	{
		psb[m] = S[m].F / Fsum;
	}
	psb = gather(psb, M);

	Sprime = (struct Solution*)malloc((size_t)M*sizeof(struct Solution));
//	Sprime = S;

	for(m=0; m<M; m++)
		Sprime[m] = S[m];

	count = 0;
	for(m=0; m<M; m++)
	{
		temp = Distribution(psb, M);
		if(Sprime[temp].used == 0)
		{
			S[m] = Sprime[temp];
			Sprime[temp].used = 1;
		}
		else
		{
			match1[count] = m;
			match2[count] = temp;
			count ++;
		}
	}

	i = 0;
	for(m=0; m<M; m++)
	{
		if(Sprime[m].used == 0 && i<count)
		{
			CopySolution(&Sprime[m], &Sprime[match2[i]]);
			S[match1[i]] = Sprime[m];
			S[match1[i]].used = 0;
			i ++;
		}
		Sprime[m].used = 0;
	}
	free(Sprime);
	free(psb);
}


void Mutation()
{
	double *p;
	int m, n, k, olda, count=0;

	p = (double*)malloc((size_t)K*sizeof(double));

//	srand( (unsigned)time( NULL ));
//	srand(200);

	for(m=0; m<M; m++)
	{
		for(n=0; n<N; n++)
		{
			if( (double)rand()/RAND_MAX < mp)
			{

				for(k=0; k<K; k++ )
				{
					p[k] = (1.5 * S[m].dmax[n] - S[m].d[n][k] +0.5) / S[m].dsum[n];
				}

				olda = S[m].a[n];

				p = gather(p, K);
				S[m].a[n] = Distribution(p, K);

				if(S[m].a[n] != olda)
				{
					AccumulateUpdate(m, n, olda, S[m].a[n]);
					count++;
				}
			}
		}

		IncrementalUpdate(m);
	}

//	fprintf(outputfile, "%d allels changed, %f percent has been changed in Mutation \n",count, count/(float)(M*N));
	free(p);
}

void KMO()
{
	int m, n, olda;
	int count=0;

	for(m=0; m<M; m++)
	{
		if (S[m].num == K)
		{
			for(n=0; n<N; n++)
			{

				olda = S[m].a[n];
				S[m].a[n] = S[m].kmin[n];

				if(S[m].a[n] != olda)
				{
					AccumulateUpdate(m, n, olda, S[m].a[n]);
					count ++;
				}

			}
			IncrementalUpdate(m);
		}
	}
// fprintf(outputfile, "%d allels changed, %f percent has been changed in KMO\n",count, count/(float)(M*N));
}


double* gather(double *psb, int distNumber)
{
	double *DistK;
	int i;

	DistK = (double*)malloc((size_t)distNumber*sizeof(double));

	DistK[0] = psb[0];
	for(i= 1; i< distNumber; i++)
	{
		DistK[i] = DistK[i-1] + psb[i];
	}
	return DistK;
}

int Distribution(double *DistK, int distNumber)
{
	double index;
	int i;

	index = ((double)rand()/RAND_MAX);

	for( i =0; i<distNumber; i++)
	{
		if ( index < DistK[i])
			return i;
	}
	return distNumber -1;
}


void CopySolution(struct Solution *t, struct Solution *f)
{
	int n,k,d;

	t->F = f->F;
	t->num = f->num;
	t->used = f->used;
	t->TWCV = f->TWCV;
	t->TWCVDelta = f->TWCVDelta;
	t->e = f->e;

	for(n=0; n<N; n++)
	{
		t->a[n] = f->a[n];
		t->dsum[n] = f->dsum[n];
		t->dmax[n] = f->dmax[n];
		t->dmin[n] = f->dmin[n];
		t->kmin[n] = f->kmin[n];
		t->kmax[n] = f->kmax[n];
		for (k=0; k<K; k++)
		{
			t->d[n][k] = f->d[n][k];
		}

	}

	for(k=0; k<K; k++)
	{
		t->Z[k] = f->Z[k];
		t->ZDelta[k] = f->ZDelta[k];
		t->WCV[k] = f->WCV[k];
		t->change[k] = f->change[k];

		for (d=0; d<D; d++)
		{
			t->SF[k][d] = f->SF[k][d];
			t->SFDelta[k][d] = f->SFDelta[k][d];
			t->C[k][d] = f->C[k][d];
		}
	}

}

void AccumulateUpdate(int m, int n, int olda, int newa)
{

	int k1, k2, d;
	S[m].change[olda] = 1;
	S[m].change[newa] = 1;
	k1 = olda;
	k2 = newa;
	S[m].ZDelta[k1]--;
	S[m].ZDelta[k2]++;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费看黄色91| 色综合天天综合给合国产| 成人黄页毛片网站| 欧美日韩国产一二三| 欧美国产一区视频在线观看| 丝袜美腿亚洲色图| 99精品视频在线观看免费| 日韩欧美一级精品久久| 一区二区三区在线观看动漫 | 一区二区三区色| 精品中文字幕一区二区小辣椒| 99re热这里只有精品免费视频| 精品国产91亚洲一区二区三区婷婷 | 国产91精品入口| 日韩亚洲欧美成人一区| 亚洲国产精品人人做人人爽| 成人免费视频app| 久久久久99精品国产片| 蜜臀91精品一区二区三区| 欧美片在线播放| 亚洲国产精品久久久久婷婷884| 国产 欧美在线| 国产亚洲欧美日韩俺去了| 激情五月婷婷综合网| 日韩视频在线一区二区| 日韩制服丝袜av| 欧美一级欧美三级在线观看| 午夜精品福利一区二区三区av| 欧美午夜一区二区| 亚洲最色的网站| 在线观看av不卡| 亚洲成人动漫精品| 9191成人精品久久| 日韩国产一二三区| 日韩午夜激情视频| 国产在线视频精品一区| 国产亚洲婷婷免费| hitomi一区二区三区精品| 综合欧美亚洲日本| 色噜噜夜夜夜综合网| 亚洲免费大片在线观看| 欧美伊人久久大香线蕉综合69| 亚洲激情图片一区| 91精品国产福利| 国产麻豆精品在线| 亚洲天堂久久久久久久| 色婷婷av一区二区三区大白胸| 亚洲一区二区三区中文字幕| 在线播放一区二区三区| 久久黄色级2电影| 国产亚洲欧美日韩俺去了| 91一区一区三区| 亚洲电影在线播放| 久久综合久色欧美综合狠狠| 成人综合婷婷国产精品久久蜜臀| 亚洲日本韩国一区| 69久久夜色精品国产69蝌蚪网| 精品一区二区三区在线观看 | 亚洲成人高清在线| 精品国产91九色蝌蚪| 懂色av一区二区三区免费看| 亚洲另类在线制服丝袜| 日韩美一区二区三区| 99久久精品费精品国产一区二区| 亚洲国产成人av| 久久夜色精品国产噜噜av| 色综合久久中文字幕| 久久99热国产| 亚洲视频一区二区在线观看| 538prom精品视频线放| 成人免费视频一区二区| 美女精品自拍一二三四| 亚洲女同一区二区| 欧美α欧美αv大片| 在线看国产一区| 国产精品羞羞答答xxdd| 性久久久久久久| 国产精品成人一区二区三区夜夜夜| 欧美人与禽zozo性伦| 在线不卡的av| 91久久国产最好的精华液| 韩国一区二区视频| 亚洲不卡av一区二区三区| 国产精品青草久久| 精品国产百合女同互慰| 欧洲一区二区av| 成人av电影免费在线播放| 久久国产精品99精品国产 | 国产精品乱码一区二区三区软件| 9191成人精品久久| 欧美视频在线观看一区| 国产成人精品一区二| 欧洲精品在线观看| 在线观看免费亚洲| 日韩美女视频一区二区在线观看| 欧美性极品少妇| 中文字幕视频一区二区三区久| 一本大道av伊人久久综合| 欧美日韩免费观看一区二区三区| 亚洲影视在线观看| 精品国产网站在线观看| 99国产精品久久久| 日韩福利电影在线| 国产精品国产三级国产有无不卡| 欧美色图第一页| 国产乱码精品一区二区三区忘忧草 | 91老师片黄在线观看| 婷婷开心久久网| 中文字幕欧美国产| 欧美最猛性xxxxx直播| 精品无人码麻豆乱码1区2区| 中文字幕一区二区三| 欧美妇女性影城| 成人午夜伦理影院| 婷婷国产在线综合| 亚洲丝袜精品丝袜在线| 欧美一区二区网站| 91影院在线观看| 国产精选一区二区三区| 亚洲bt欧美bt精品777| 国产农村妇女毛片精品久久麻豆 | 日韩欧美一区在线观看| 97久久人人超碰| 国产在线乱码一区二区三区| 亚洲一区二区三区中文字幕| 欧美国产日韩在线观看| 精品日本一线二线三线不卡| 欧美视频在线不卡| 色999日韩国产欧美一区二区| 黄色日韩三级电影| 日本欧美一区二区三区| 亚洲黄色av一区| 国产精品久久久久久久第一福利| 日韩亚洲欧美成人一区| 欧美高清视频一二三区| 色婷婷av一区二区三区软件| 国v精品久久久网| 国产乱码精品一区二区三| 美脚の诱脚舐め脚责91| 亚洲18影院在线观看| 一区二区三区毛片| 亚洲免费观看高清完整| 亚洲精选免费视频| 最新高清无码专区| 人禽交欧美网站| 亚洲成在人线免费| 午夜国产精品一区| 亚洲国产视频直播| 亚洲第一二三四区| 亚洲一区二区五区| 午夜视频在线观看一区二区三区| 亚洲一区二区三区三| 亚洲一区二区三区中文字幕| 亚洲成人资源网| 日本网站在线观看一区二区三区| 日韩黄色片在线观看| 日本美女一区二区| 狠狠狠色丁香婷婷综合久久五月| 韩国女主播一区| 国产成人日日夜夜| 成人午夜电影久久影院| 99久久精品免费看国产| 91精品福利在线| 678五月天丁香亚洲综合网| 欧美老肥妇做.爰bbww视频| 日韩一级大片在线观看| 久久久久国产精品麻豆ai换脸 | 亚洲久草在线视频| 亚洲444eee在线观看| 久久精品国产免费| 丰满亚洲少妇av| 欧美三级午夜理伦三级中视频| 4438成人网| 久久精品亚洲麻豆av一区二区| 中文字幕一区日韩精品欧美| 亚洲国产视频在线| 精品一区二区免费在线观看| 成人毛片视频在线观看| 欧美视频完全免费看| 日韩免费看的电影| 18成人在线观看| 日本成人在线一区| 成人黄色片在线观看| 欧美吻胸吃奶大尺度电影| 欧美成人三级电影在线| 亚洲色图欧美激情| 久久精品国产色蜜蜜麻豆| 91在线免费播放| 欧美一二三四区在线| 中文字幕日韩一区二区| 久久精品噜噜噜成人88aⅴ| 91在线精品一区二区| 日韩欧美一级精品久久| 亚洲免费看黄网站| 国产高清不卡一区二区| 在线电影国产精品| 中文字幕综合网| 国产精品羞羞答答xxdd| 日韩亚洲欧美一区| 亚洲国产wwwccc36天堂|