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

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

?? as_qap_0_9.cpp

?? 蟻群算法求解QAP問(wèn)題的源碼
?? CPP
字號(hào):
/*
	Algorithm Name:	AS-QAP
	Version:		0.9 ---- need verification
	Author:			Chen Ye, Sichuan University, China
	E-mail:			arrowcy@163.com
	Reference:		Thomas Stutzle, Macro Dorigo.
					ACO Algorithms for Quadratic Assignment Problem,
					It is Chapter 3 of the book New Ideas in Optimization edited by
					D.Corne, M.Dorigo & F.Glover.
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

#define ERROR			-1
#define SUCCESS			0

#define FILE_NAME		"chr12a.dat"

#define	MAX_ITER		500
#define PROBLEM_SIZE	12
#define NUM_ANTS		20
#define	INIT_PHEROMONE	0.01	///???
#define	ALPHA			1
#define	BETA			1
#define Q				100
#define	RHO				0.9

int   problem_size;

float heuristic	[PROBLEM_SIZE][PROBLEM_SIZE];
int   distance	[PROBLEM_SIZE][PROBLEM_SIZE];
int   dsum		[PROBLEM_SIZE];
int   flow		[PROBLEM_SIZE][PROBLEM_SIZE];
int   fsum		[PROBLEM_SIZE];
float pheromone	[PROBLEM_SIZE][PROBLEM_SIZE];
int   tabu		[NUM_ANTS][PROBLEM_SIZE];
float fit		[NUM_ANTS];	///////integer works properly.

int   global_best_tour[PROBLEM_SIZE];
float global_best_fit;

int   ant		[NUM_ANTS][PROBLEM_SIZE];

int   assignment_order[PROBLEM_SIZE];
int   display_order   [PROBLEM_SIZE];

int read_data()
{
	int i,j;
	FILE *fp;

	if(!(fp=fopen(FILE_NAME,"r")))
	{
		printf("Error opening problem description file.\n");
		return ERROR;
	}

	fscanf(fp,"%d",&problem_size);
	if (problem_size>PROBLEM_SIZE)
	{
		printf("PROBLEM_SIZE is too small.\n");
		return ERROR;
	}

	//no error detection will be take below
	for (i=0;i<problem_size;i++)
		for (j=0;j<problem_size;j++)
			fscanf(fp,"%d",&flow[i][j]);
	for (i=0;i<problem_size;i++)
		for (j=0;j<problem_size;j++)
			fscanf(fp,"%d",&distance[i][j]);
	fclose(fp);

	return SUCCESS;
}

void calc_heuristic()
{
	int i,j;
	for (i=0;i<problem_size;i++)
	{
		dsum[i]=0;
		fsum[i]=0;
		for (j=0;j<problem_size;j++)
		{
			if(i!=j)
			{
				dsum[i]=dsum[i]+distance[i][j];
				fsum[i]=fsum[i]+flow[i][j];
			}
		}
	}
	for (i=0;i<problem_size;i++)
		for (j=0;j<problem_size;j++)
			heuristic[i][j]=1.0/((float)fsum[i]*dsum[j]);
}

void calc_assignment_order()
{
	int i,j,bestf,bestp;
	int assigned[PROBLEM_SIZE];

	for (i=0;i<problem_size;i++)
	{
		assignment_order[i]=-1;
		assigned[i]=-1;
	}
	for (i=0;i<problem_size;i++)
	{
		bestf=0;
		bestp=-1;
		for (j=0;j<problem_size;j++)
		{
			if(bestf<fsum[j] && assigned[j]==-1)
			{
				bestf=fsum[j];
				bestp=j;
			}
		}
		if(bestp==-1)
			printf("Unknown Error!\n");

		assignment_order[i]=bestp;
		assigned[bestp]=i;
		display_order[i]=bestp;
	}
}

void init_pheromone()
{
	int i,j;
	for (i=0;i<problem_size;i++)
		for (j=0;j<problem_size;j++)
			pheromone[i][j]=INIT_PHEROMONE;
}

void solution_construction()
{
	int i,j,k;
	float sum;
	int cur_facility;
	float prob,sumprob;
	float t[PROBLEM_SIZE];

	//////// clear tabu
	for (i=0;i<NUM_ANTS;i++)
		for (j=0;j<problem_size;j++)
			tabu[i][j]=0;

	for (i=0;i<problem_size;i++)
	{
		//// each ant will take a step in this loop
		cur_facility=assignment_order[i];
		for (j=0;j<NUM_ANTS;j++)
		{
			sum=0;
			for (k=0;k<problem_size;k++)
			{
				t[k]=0;		//possibly not needed
				if(tabu[j][k]==0)
					t[k]=pow(pheromone[cur_facility][k],ALPHA)*pow(heuristic[cur_facility][k],BETA);
				sum=sum+t[k];
			}
			prob=sum*(float)rand()/RAND_MAX;
			sumprob=0;
			for (k=0;k<problem_size;k++)
			{
				if (tabu[j][k]==0)
				{
					sumprob=sumprob+t[k];
					if(sumprob>prob)
					{
						/////////// a location for the current facility has been found
						ant[j][i]=k;
						tabu[j][k]=1;
						break;
					}
				}
			}
			if(k==problem_size)
			{
				ant[j][i]=problem_size-1;
				tabu[j][problem_size-1]=1;
			}
		}
	}
}

void calc_fit()
{
	int i,j,k,f1,f2;
	float s;

	for (i=0;i<NUM_ANTS;i++)
	{
		s=0;
		for (j=0;j<problem_size;j++)
		{
			f1=assignment_order[j];
			for (k=0;k<problem_size;k++)
			{
				f2=assignment_order[k];
				s=s+flow[f1][f2]*distance[ant[i][j]][ant[i][k]];
			}
		}
		fit[i]=s;
	}
}

void pheromone_update()
{
	//float dph;
	int i,j;

	for (i=0;i<problem_size;i++)
		for(j=0;j<problem_size;j++)
			pheromone[i][j]=pheromone[i][j]*RHO;

	for (i=0;i<NUM_ANTS;i++)
		for (j=0;j<problem_size;j++)
			pheromone[assignment_order[j]][ant[i][j]] =
				pheromone[assignment_order[j]][ant[i][j]] + Q/fit[i];

}

void find_best(int first_time)
{
	int i;
	float local_best_fit;
	int   local_best_ant;

	local_best_ant=0;
	local_best_fit=fit[0];

	for (i=1;i<NUM_ANTS;i++)
	{
		if(fit[i]<local_best_fit)
		{
			local_best_ant=i;
			local_best_fit=fit[i];
		}
	}

	if(first_time || (!first_time && global_best_fit>local_best_fit))
	{
		global_best_fit=local_best_fit;
		for (i=0;i<problem_size;i++)
			global_best_tour[i]=ant[local_best_ant][i];
	}

	printf("best fit: %f",global_best_fit);
	printf(" the tour is: ");
	for (i=0;i<problem_size;i++)
		printf(" %d",global_best_tour[i]);
	printf("\n");
}

int main()
{
	int iter, i;
	unsigned int seed=time(NULL);

	srand(seed);

	if(read_data()==ERROR)
	{
		printf("Program cannot countinue.\n");
		return -1;
	}

	calc_heuristic();
	init_pheromone();
	calc_assignment_order();

	for (iter=0; iter<MAX_ITER; iter++)
	{
		printf("Cur Iter=%d\n",iter+1);
		solution_construction();
		calc_fit();
		pheromone_update();
		find_best(iter==0);
	}

	printf("Seed=%d\n",seed);
	printf("Best fit=%f\n",global_best_fit);
	printf("Best tour=");
	for (i=0;i<problem_size;i++)
		printf(" %d",global_best_tour[display_order[i]]);
	printf("\n");

	return 0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
不卡av在线网| 色婷婷av一区二区三区软件 | 日韩成人一级片| 国产欧美日本一区二区三区| 色婷婷久久一区二区三区麻豆| 韩国成人在线视频| 婷婷国产v国产偷v亚洲高清| 国产精品久久久久毛片软件| 精品入口麻豆88视频| 欧美制服丝袜第一页| 成人av电影在线| 狠狠久久亚洲欧美| 麻豆久久久久久久| 日韩福利视频网| 亚洲va天堂va国产va久| 亚洲免费观看高清在线观看| 久久这里只精品最新地址| 欧美久久久影院| 色综合久久综合网97色综合| 成人av片在线观看| 国产不卡视频在线观看| 日本va欧美va瓶| 视频一区二区三区中文字幕| 亚洲四区在线观看| 亚洲国产精品ⅴa在线观看| 久久久夜色精品亚洲| 欧美岛国在线观看| 制服丝袜激情欧洲亚洲| 欧美色成人综合| 色播五月激情综合网| 91在线云播放| 9久草视频在线视频精品| 成人h动漫精品| jiyouzz国产精品久久| 国产精品一二三四五| 国产成人高清视频| 国产精品 欧美精品| 久久91精品国产91久久小草| 激情五月激情综合网| 蜜桃久久久久久| 99久久久久久| 丁香六月久久综合狠狠色| 国产精品久久久久aaaa樱花| 国产精品三级视频| 国产精品久久久久久久久久久免费看| 国产精品日日摸夜夜摸av| 久久久久亚洲综合| 日本一区二区三区免费乱视频| 国产日产精品一区| 国产精品第五页| 亚洲综合一二三区| 丝袜美腿成人在线| 久久精品国产一区二区三| 九色|91porny| 成人激情动漫在线观看| www.欧美.com| 欧美亚洲综合在线| 欧美精品久久99| 久久久欧美精品sm网站| 国产精品久久久久精k8| 一区二区三区不卡在线观看| 亚洲午夜精品网| 久久成人免费网站| 国产91精品在线观看| 一本一本大道香蕉久在线精品| 欧美另类videos死尸| 亚洲精品一区二区三区精华液| 久久精品在这里| 亚洲精品国产精品乱码不99| 午夜成人在线视频| 国产精品99久久久久久似苏梦涵| 99久久精品免费看国产免费软件| 欧美色图天堂网| 精品久久久久一区| 亚洲欧美偷拍另类a∨色屁股| 亚洲福利一二三区| 国产精品亚洲午夜一区二区三区| 99久久久免费精品国产一区二区| 欧美军同video69gay| 精品久久一区二区| 亚洲精品你懂的| 精品亚洲国产成人av制服丝袜| av电影在线不卡| 日韩欧美成人午夜| 综合久久久久久久| 激情综合网av| 91黄视频在线观看| 久久久99久久| 日日夜夜一区二区| av一区二区不卡| 精品国产伦一区二区三区免费| 一区二区在线观看视频在线观看| 免费成人av在线播放| 91成人免费在线视频| 欧美激情一二三区| 麻豆精品视频在线观看视频| 91国偷自产一区二区三区成为亚洲经典| 精品日产卡一卡二卡麻豆| 亚洲一区二区三区四区不卡| 懂色中文一区二区在线播放| 日韩一区二区在线看| 亚洲国产视频一区| 99久久伊人精品| 国产亚洲美州欧州综合国| 免费成人小视频| 欧美区一区二区三区| 亚洲日本一区二区| 国产成人亚洲精品青草天美| 日韩美女在线视频| 五月综合激情网| 在线观看日韩精品| 亚洲欧美怡红院| 成人性生交大片免费看视频在线| 日韩一区二区不卡| 日本三级亚洲精品| 欧美日韩一区二区三区四区五区| 国产精品美女视频| 国产精品一二三四五| 精品少妇一区二区三区免费观看| 水蜜桃久久夜色精品一区的特点| 91网站在线观看视频| 国产精品国产三级国产a| 国产成人免费xxxxxxxx| 久久在线观看免费| 精品系列免费在线观看| 日韩视频免费直播| 日产国产欧美视频一区精品| 91麻豆精品国产91久久久久久 | 欧美一级高清大全免费观看| 亚洲一区二区三区中文字幕| 欧洲国内综合视频| 亚洲一区在线看| 欧美色网站导航| 日本中文字幕不卡| 91精品国产麻豆| 全国精品久久少妇| 精品久久国产老人久久综合| 久久国产视频网| 欧美精品一区男女天堂| 国产大陆a不卡| 国产精品久久久久久久久晋中| av亚洲精华国产精华精华 | 中文字幕一区二| 97国产一区二区| 一区二区三区中文字幕精品精品| 色综合中文字幕国产| 国产精品乱码久久久久久| 91在线视频观看| 亚洲图片欧美视频| 欧美一区二区视频观看视频| 精品亚洲免费视频| 国产精品丝袜久久久久久app| 91碰在线视频| 亚洲成av人在线观看| 欧美一激情一区二区三区| 国产精品综合一区二区三区| 国产精品久久久久婷婷二区次| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 日本中文字幕不卡| 欧美精品一区二区三区蜜臀| 波多野结衣中文一区| 一区二区三区蜜桃| 日韩限制级电影在线观看| 国产91精品欧美| 尤物av一区二区| 精品国产三级电影在线观看| 不卡的av网站| 奇米色777欧美一区二区| 久久久三级国产网站| 日本高清免费不卡视频| 麻豆久久久久久久| 中文字幕在线视频一区| 欧美日韩dvd在线观看| 风间由美性色一区二区三区| 亚洲一区二三区| 日本一区二区三区高清不卡| 欧美日韩一区久久| 成人免费毛片a| 日本不卡不码高清免费观看| 国产精品日韩成人| 日韩三级免费观看| 94色蜜桃网一区二区三区| 久久国产尿小便嘘嘘| 亚洲在线成人精品| 久久精品欧美日韩精品 | 色哟哟精品一区| 麻豆精品久久精品色综合| 日韩伦理免费电影| 精品黑人一区二区三区久久| 色婷婷国产精品| 粉嫩一区二区三区在线看| 婷婷激情综合网| 亚洲免费观看高清完整| 久久久久久99久久久精品网站| 欧美日韩成人综合在线一区二区| 国产 日韩 欧美大片| 日韩激情在线观看| 亚洲一二三区在线观看| 国产精品白丝在线| 日本一区二区三区在线不卡|