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

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

?? igka.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]++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天色 色综合| 亚洲精品国产a| 欧美电视剧在线观看完整版| 欧美中文字幕一区| 99久久精品免费看| av中文字幕亚洲| 99re成人精品视频| 色999日韩国产欧美一区二区| 91麻豆国产福利精品| 色哟哟精品一区| 欧美精品免费视频| 欧美tk丨vk视频| 国产欧美一区二区三区在线看蜜臀| 久久精品一区二区| 成人免费在线观看入口| 亚洲综合999| 日韩av在线播放中文字幕| 麻豆freexxxx性91精品| 国产成人精品一区二区三区四区| 国产成人av电影在线| 色天使色偷偷av一区二区| 欧美少妇bbb| 亚洲精品一线二线三线| 中文字幕av免费专区久久| 一个色在线综合| 国内成人免费视频| 色综合久久久久网| 日韩免费一区二区三区在线播放| 国产亚洲欧美激情| 亚洲国产精品影院| 国产精品一区二区黑丝| 在线观看91视频| 精品国产91久久久久久久妲己 | 欧美日韩精品高清| 欧美一区午夜视频在线观看| 国产亚洲精品bt天堂精选| 亚洲免费看黄网站| 九一九一国产精品| 欧美怡红院视频| 中文字幕欧美日韩一区| 日韩av不卡一区二区| 91亚洲午夜精品久久久久久| 日韩欧美国产麻豆| 亚洲一区二区三区四区五区中文 | 欧美视频在线一区二区三区 | 91麻豆精品国产91久久久| 国产婷婷色一区二区三区在线| 一区二区三区在线播放| 国产成人一区二区精品非洲| 欧美三区免费完整视频在线观看| 国产人伦精品一区二区| 丝袜美腿亚洲综合| 欧美在线播放高清精品| 国产精品三级视频| 国产福利一区二区三区视频| 欧美福利视频一区| 午夜一区二区三区视频| 欧洲亚洲精品在线| 亚洲色图在线视频| 成人综合婷婷国产精品久久免费| 精品嫩草影院久久| 老司机精品视频在线| 91精品国产综合久久久久久久| 亚洲欧美另类久久久精品 | 亚洲精选视频免费看| 成人综合在线观看| 国产午夜亚洲精品午夜鲁丝片| 国产在线不卡一区| 欧美精品一区在线观看| 国产在线日韩欧美| 精品国产乱码久久久久久夜甘婷婷| 视频一区中文字幕国产| 欧美高清性hdvideosex| 日韩精品亚洲一区二区三区免费| 欧美午夜精品久久久| 亚洲综合在线视频| 欧美视频日韩视频在线观看| 亚洲一区二区三区小说| 欧美性一二三区| 三级欧美韩日大片在线看| 欧美一区二区私人影院日本| 日韩精品免费专区| 精品蜜桃在线看| 国产高清在线观看免费不卡| 国产精品色噜噜| 色欧美日韩亚洲| 亚洲第一二三四区| 精品日韩在线观看| 亚洲免费观看视频| 亚洲欧美日韩电影| 污片在线观看一区二区| 日韩一区二区三区免费看| 裸体歌舞表演一区二区| 精品av综合导航| 成人美女视频在线观看18| 亚洲少妇最新在线视频| 欧美日本精品一区二区三区| 日日夜夜免费精品视频| 精品国产91洋老外米糕| 99re这里只有精品视频首页| 亚洲综合免费观看高清完整版在线| 欧美日本在线播放| 国产精品一区二区在线看| 最新国产成人在线观看| 91精品免费在线观看| 国产激情视频一区二区在线观看 | 亚洲激情五月婷婷| 91精品午夜视频| 国产成+人+日韩+欧美+亚洲| 亚洲乱码国产乱码精品精可以看 | 国产精品一二三四| 依依成人综合视频| 久久免费美女视频| 欧洲生活片亚洲生活在线观看| 久久精品国产第一区二区三区| 国产精品视频线看| 日韩欧美一区电影| 91福利视频久久久久| 国产一区二区三区免费播放 | 精品一区精品二区高清| 一区二区三区欧美激情| 国产性做久久久久久| 欧美高清精品3d| 色婷婷久久久亚洲一区二区三区 | 国产精品九色蝌蚪自拍| 日韩片之四级片| 欧美日韩在线播| 99在线精品视频| 国产风韵犹存在线视精品| 免费在线观看不卡| 亚洲国产精品影院| 亚洲老妇xxxxxx| 亚洲欧美一区二区视频| 久久精品免视看| 2017欧美狠狠色| 26uuu精品一区二区| 91精品国产一区二区三区香蕉 | 视频一区在线播放| 一区二区在线看| 国产精品成人一区二区艾草| 久久综合成人精品亚洲另类欧美 | 99麻豆久久久国产精品免费 | 精品国精品自拍自在线| 欧美美女喷水视频| 欧美性色欧美a在线播放| 色94色欧美sute亚洲13| 一本大道av伊人久久综合| av中文字幕不卡| 在线亚洲免费视频| 97久久精品人人爽人人爽蜜臀| 国产91在线看| 成人动漫一区二区三区| 成人综合在线网站| a在线播放不卡| 色综合天天综合狠狠| 色8久久人人97超碰香蕉987| 色综合欧美在线视频区| 99在线精品观看| 在线观看视频一区二区| 欧美色爱综合网| 欧美一级一区二区| 日韩欧美精品在线视频| 久久综合成人精品亚洲另类欧美| 久久久久久久久蜜桃| 国产精品区一区二区三区| 亚洲欧美激情在线| 亚洲第一福利一区| 蜜桃av噜噜一区二区三区小说| 久久国产视频网| 成人网在线播放| 在线亚洲精品福利网址导航| 91精品在线麻豆| 久久久国产综合精品女国产盗摄| 国产精品久久久久久久久久免费看| 国产精品国产自产拍在线| 亚洲制服欧美中文字幕中文字幕| 亚洲bt欧美bt精品| 久久99久久99精品免视看婷婷 | 久久青草国产手机看片福利盒子 | 久久国产夜色精品鲁鲁99| 国产在线精品一区二区夜色| 国产精品亚洲成人| 在线亚洲免费视频| 久久女同性恋中文字幕| 亚洲美女在线国产| 精彩视频一区二区| 一本大道久久a久久综合| 欧美军同video69gay| 国产精品女上位| 免费欧美在线视频| 99麻豆久久久国产精品免费 | 中文字幕一区三区| 日本人妖一区二区| 99九九99九九九视频精品| 欧美一级欧美一级在线播放| 国产情人综合久久777777| 日韩电影在线免费看| 97se亚洲国产综合自在线不卡| 日韩欧美电影一二三| 洋洋成人永久网站入口|