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

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

?? random-vrp-1.cpp

?? 車輛行駛路線優化(Vehicle Routing Problem)
?? CPP
字號:
#include<math.h>
#include<iostream.h>
#include<utlab.h>

#define popsize 30
#define node 11
#define vehicle 4
#define S 15.

int x[popsize][node+1];     //染色體 popsize個
int y[popsize][vehicle+1];  //染色體 popsize個
double t[popsize][vehicle+1];  //染色體 popsize個

int x_tmp[popsize][node+1];         //染色體 popsize個,轉輪臨時放置
int y_tmp[popsize][vehicle+1];      //染色體 popsize個,轉輪臨時放置
double t_tmp[popsize][vehicle+1];   //染色體 popsize個,轉輪臨時放置



int d[node+1][node+1]=
{ 0, 18, 14, 14, 21, 21, 15, 22, 21, 28, 24, 14,
  18, 0, 20, 34, 49, 55, 49, 65, 57, 49, 50, 22,
  14, 20, 0, 15, 31, 41, 43, 56, 55, 52, 56, 35,
  14, 34, 15, 0, 16, 28, 36, 46, 51, 51, 58, 44,
  21, 49, 31, 16, 0, 16, 32, 37, 48, 52, 62, 54,
  21, 55, 41, 28, 16, 0, 21, 21, 36, 43, 54, 55,
  17, 49, 43, 36, 32, 21, 0, 15, 16, 22, 34, 41,
  22, 65, 56, 46, 37, 21, 15, 0, 21, 33, 44, 56,
  21, 57, 55, 51, 48, 36, 16, 21, 0, 13, 24, 43,
  28, 49, 52, 51, 52, 43, 22, 33, 13, 0, 11, 32,
  24, 50, 56, 58, 62, 54, 34, 44, 24, 11, 0, 36,
  14, 22, 35, 44, 54, 55, 41, 56, 43, 32, 36, 0,
};

int tw[node+1][2]=
{0,  0,
  90, 370,
 80, 180,
 100, 190,
 130, 360,
 80, 300,
 70, 440,
 100, 320,
 20, 120,
 100, 250,
 50, 260,
 80, 120,
};

int tt[node+1][node+1][2]=
{
	0,0,  50,25,  10,5,  50,25,  15,7,  50,25,  50,25,  25,12,  15,7,  50,25,  20,10,  50,25,  
	50,25,  0,0,  40,20,  10,5,  50,25,  35,17,  15,7,  40,20,  40,20, 15,7,  45,22,   10,5,
	10,5,  40,20,  0,0,   40,20, 15,7,   35,17,  40,20,  30,15, 10,5,  45,22, 25,12,   35,17,
	50,25,  10,5,  40,20, 0,0,   45,22,  30,15,  5,2,   35,17,  45,22,  10,5,  45,22,   30,15,
	15,7,  50,25,  15,7,  45,22, 0,0,    35,17,  45,22,  15,7,  20,10,  45,22,  15,7,  35,17,
	50,25,  35,17, 35,17, 30,15,  35,17, 0,0,    30,15,  25,12, 35,17,  30,15,  30,15,  10,5,
	50,25,  15,7,  40,20,  5,2,  45,22,  30,15,  0,0,  35,17,  40,20,  10,5,  40,20,  30,15,
	25,12,  40,20,  30,15, 35,17, 15,7,  25,12,  35,17,  0,0,  35,17,  40,20, 10,5,   10,5,
	15,7,  40,20,  10,5,  45,22,  20,10,  35,17,  40,20,  35,17, 0,0,  40,20,  25,12,  35,17,
	50,25,  15,7,  45,22,  10,5,  45,22, 30,15,  10,5,  40,20,  40,20,  0,0,  45,22,  35,17,
	20,10,  45,22, 25,12,  45,22, 15,7,  30,15,  40,20, 10,5,  25,12,  45,22,  0,0,   30,15,
	50,25,  10,5,  35,17,  30,15,  35,17, 10,5,  30,15, 10,5,  35,17,  35,17,  30,15, 0,0,
};

int rdint(int l,int r)//生成l-r的隨機整數
{
	double x;
	int a;
	x=myu(l,r+0.99);
	a=int(floor(x));
	return(a);
}


void init(double pr0)//初始化數據
{
	int i,j,k,w,nm;
	double counter=0.;
	double pr_tmp;
	int ct;
	
	double pr(int m);
	int distance(int m);

	double pro;

	int tt[node+1];
	int te;
	int judge;
	for(i=1;i<=node;i++)
		tt[i]=0;
		
	for(i=0;i<popsize;i++)	
	{
		nm=0;
		pro=0.;
		pr_tmp=0.;



		while(pro<(pr0))
		{
			for(k=1;k<=node;k++)
				tt[k]=0;
			j=1;
			while(j<=node)
			{
				te=rdint(1,node);
				judge=1;
				for(k=1;k<=node;k++)
					if(tt[k]==te)
						judge=judge*0;
				if(judge==1)
				{
					x[i][j]=te;
					tt[j]=te;
					j++;
				}
				else
					continue;
			}

			//以上初始化x.

	
			for(k=1;k<vehicle;k++)
			{
				y[i][k]=rdint(0,node);
			}

			//sort
			for(j=1; j<vehicle; j++)
				for(k=j+1; k<vehicle; k++) 
					if(y[i][j] > y[i][k]) 
					{
						w = y[i][k];
						y[i][k] = y[i][j];
						y[i][j] = w;
					}
	
	
				y[i][0]=0;
				y[i][vehicle]=node;
	
   
				//以上初始化y

	
			for(k=1;k<=vehicle;k++)
			{
				t[i][k]=double(rdint(30.,120.));
			}

			//以上初始化t
			pro=pr(i);
		}
		system("cls");
		counter=double(i)/popsize*100;
		ct=floor(counter);
		cout<<"Initializing..."<<ct<<"%"<<endl;
	}

	system("cls");
	cout<<"Initializing...100%"<<endl;

}





void chrom(int a)
{
	int distance(int a);
	double pr(int a);
	int j;
	cout<<endl;
	cout<<"x["<<a<<"]= ";
	for(j=1;j<=node;j++)
		cout<<x[a][j]<<"  ";		
	   
	cout<<endl;
	cout<<"y["<<a<<"]= ";
	for(j=0;j<=vehicle;j++)
		cout<<y[a][j]<<"  ";		
	    
	cout<<endl;
	cout<<"t["<<a<<"]= ";
	for(j=0;j<=vehicle;j++)
		cout<<t[a][j]<<"  ";
	cout<<endl; 
	cout<<"  pr  "<<pr(a)<<"  dist  "<<distance(a)<<endl;
}


void crossover(int a, int b, double pr0)
{
	int i,tm;
	double c;
	
	double tp,pro1,pro2;
	int yp;
	
	bool feasible(int a,double pr0);
	void map(int a, int b);
	void bmap(int a, int b);
	double max(double a, double b);
	double pr(int m);

	tm=0;
	pro1=0.;
	pro2=0.;

	map(a,a);
	map(b,b);

	while((tm<5)&&(max(pro1,pro2)<pr0))
	{
		c=myu(0,1);
		for(i=1;i<=vehicle;i++)
		{
			tp =c*t[a][i]+(1-c)*t[b][i];
			t[b][i]=t[a][i]*(1-c)+t[b][i]*c;
			t[a][i]=tp;
		}//crossover  t[a], t[b]
		for(i=1;i<=vehicle;i++)
		{
			yp=y[a][i];
			y[a][i]=y[b][i];
			y[b][i]=yp;
		}//crossover y.

		pro1=pr(a);
		pro2=pr(b);

		if(pro1<pr0)
			bmap(a,a);
		
		if(pro2<pr0)
			bmap(b,b);
	
		tm++;
		
	}
		
	map(a,a);
	map(b,b);
	

}

double min(double a, double b)
{
	if (a>b)
		return b;
	else return a;
}
double max(double a, double b)
{
	if (a<b)
		return b;
	else return a;
}

bool feasible(int a,double pr0)
{
	double pr(int );
	if(pr(a)>=pr0)
		return true;
	else 
		return false;
}



void mutation(int a, double pr0)
{
	int i,j,k, n1, n2, nn, xx, w, tm;
	double M;

	void map(int a, int b);
	void bmap(int a, int b);

	
	double pr(int m);
	double dt[vehicle+1];
	tm=0;
	M=1.;
	
	map(a,a);

mutatet: n1=rdint(1,node);
	n2=rdint(1,node);
	if(n1>n2)
	{
		nn=n1;
		n1=n2;
		n2=nn;
	}
	
	for(i=n1;i<=n2;i++)
	{
		nn=rdint(i,n2);
		xx=x[a][i];
		x[a][i]=x[a][nn];
		x[a][nn]=xx;
	}
	//mutate x

	n1=rdint(1,vehicle-1);
	n2=rdint(1,vehicle-1);

	if(n1>n2)
	{
		nn=n1;
		n1=n2;
		n2=nn;
	}
	
	for(i=n1;i<=n2;i++)
	{
		y[a][i]=rdint(0,node);
	}

	for(j=1; j<vehicle; j++)
		for(k=j+1; k<vehicle; k++) 
			if(y[a][j] > y[a][k]) 
			{
				w = y[a][k];
				y[a][k] = y[a][j];
				y[a][j] = w;
			}	

	//mutate y
	 
	dt[0]=0.;
	for(i=1;i<=vehicle;i++)
	{
		dt[i]=myu(0.,60.) - 30.;
	}
	for(i=1;i<=vehicle;i++)
	{
		if(dt[i]>=0.)
			t[a][i]=min(460., t[a][i] + dt[i]);
		else
			t[a][i]=max(10., t[a][i] + dt[i]);
	}
	
	
	if(pr(a)>=pr0)
		;
	else if(tm<6)
	{	
		bmap(a,a);
		
		M=myu(0.,M);
		tm++;
		goto mutatet;
	}
	else bmap(a,a);
	
	//mutate t;

}

int distance(int m)//the m-th chrom's distance
{
	int dis=0;
	int i,j;



	for(i=0;i<node;i++)
		dis+=d[x[m][i]][x[m][i+1]];

	dis+=d[x[m][11]][0];

	
	for(j=1;j<vehicle;j++)
	{
		if(y[m][j]!=y[m][j-1])
		{
			dis+=d[x[m][y[m][j]]][0];
			dis+=d[x[m][y[m][j]+1]][0];
			dis-=d[x[m][y[m][j]]][x[m][y[m][j]+1]];
		}

	}	
	return dis;
	
}

void map(int a, int b)  // original a-->temp b duplicate chrom.
{
	int i;
	for(i=0;i<=node;i++) 
		x_tmp[b][i]=x[a][i];
	for(i=0;i<=vehicle;i++)
	{
		y_tmp[b][i]=y[a][i];
		t_tmp[b][i]=t[a][i];
	}
}

void bmap(int a, int b) // temp a--> original b duplicate chrom.
{
	int i;
	for(i=0;i<=node;i++) 
		x[b][i]=x_tmp[a][i];
	for(i=0;i<=vehicle;i++)
	{
		y[b][i]=y_tmp[a][i];
		t[b][i]=t_tmp[a][i];
	}

}


double pr(int m)  //Pr{ai<fi<bi, i=1,2,...,n} for the m-th chrom.
{
	int N=2500;
	int i,j,k;
	int jg=1;
		
	int v[node+1];

	double f[node+1];

	int counter=0;

	//為xi編號,表示到達的vehicle。
	k=0;
	for(i=1;i<=vehicle;i++)
	{
		
		if(y[m][i]!=y[m][i-1])
		{
			for(j=k+1;j<=y[m][i];j++)
				v[j]=i;
			k=j-1;
		}
		else ;
	}
	v[0]=0;
	

	x[m][0]=0;

	for(i=0;i<N;i++)
	{
		//generate rd number
		for(j=1;j<=node;j++)
		{
			if(v[j]!=v[j-1])
			{
				f[j]=t[m][v[j]]+myn(tt[0][x[m][j]][0],tt[0][x[m][j]][1]);
			}
			else
			{
				f[j]=max(f[j-1],tw[x[m][j-1]][0])+S+myn(tt[x[m][j-1]][x[m][j]][0],tt[x[m][j-1]][x[m][j]][1]);
			}
		}


		jg=1;
		for(j=1;j<=node;j++)
			if((f[j]<tw[x[m][j]][0])||(f[j]>tw[x[m][j]][1]))
				jg=0;
			else ;

		//judge
		
		counter=counter+jg;	
		

	}
	double pro;

	pro=double(counter)/N;
	
	return (pro);
	
}

void GAfordis(double pr0, double pc, double pm)
{
	int r;
	double r1;
	int c=0;
	int i,j,k,N,times;
	int cross[2];
	double ob[popsize],obp[popsize];
	double fit[popsize];
	double sumob;
	int best;
	int bestob;

	best=0;
	
	N=500;
	
	int xb[node+1];
	int yb[vehicle+1];
	double tb[vehicle+1];  //save the best

	for(i=0;i<=node;i++)
		xb[i]=x[0][i];
	for(i=0;i<=vehicle;i++)
	{
		yb[i]=y[0][i];
		tb[i]=t[0][i];
	}
	bestob=distance(0);

	for(i=0;i<popsize;i++)
		fit[i]=0.;
	for(times=0;times<N;times++)
	{


		if(((times%1500)==0)&&(times>1))
			getchar();
	
		
		//crossover
		for(i=0;i<popsize;i++)
		{
			r=myu(0.,1.);
			//pk=1;
			if(r<pc)
			{
				cross[c]=i;
				c++;
			}
			if(c==2)
			{
				crossover(cross[0],cross[1],pr0);
				c=0;
			}
		}

		//mutation
		for(i=0;i<popsize;i++)
		{
			r=myu(0.,1.);
			
			if(r<pm)
			{
				map(i,i);
				mutation(i,pr0);
				if(pr(i)<pr0)
				{
					bmap(i,i);
				
				}			
			}
		}

		//objective value
		for(i=0;i<popsize;i++)
		{
			ob[i]=double(distance(i));
			obp[i]=100./(ob[i]-220.);
		}

		
				
		sumob=0.;
		for(i=0;i<popsize;i++)
		{
			sumob=sumob+obp[i];
		}

		//fitness
		fit[0]=obp[0]/sumob;
		for(i=1;i<popsize;i++)
		{
			fit[i]=fit[i-1]+(obp[i]/sumob);
		}
		
		//roulette wheel
		for(i=0;i<popsize;i++)
		{
			r1=myu(0., fit[popsize-1]);
			if(r1<=fit[0])
			{
				map(0,i);
			}
			else 
			{
				for(k=0;k<popsize-1;k++)
				{
					if((r1>fit[k])&&(r1<=fit[k+1]))
					{
						map(k+1,i);   //duplicate to temp
					}	
				}
			}
		}
		
		for(i=0;i<popsize;i++)
		{
			bmap(i,i);  //duplicate back
		}
				
		k=0;r=1000;		
		
		for(i=0;i<popsize;i++)
		{
			if(r>distance(i))
			{
				r=distance(i);
				k=i;
			}			
		}

		if(r<bestob)
		{
			best=k;
			for(j=0;j<=node;j++)
				xb[j]=x[k][j];
			for(j=0;j<=vehicle;j++)
			{
				yb[j]=y[k][j];
				tb[j]=t[k][j];
			}
			bestob=r;
			for(j=0;j<=node;j++)
			x[0][j]=xb[j];
			for(j=0;j<=vehicle;j++)
			{
				y[0][j]=yb[j];
				t[0][j]=tb[j];
			}
		}
		else
		{
			for(j=0;j<=node;j++)
				x[0][j]=xb[j];
			for(j=0;j<=vehicle;j++)
				{
					y[0][j]=yb[j];
					t[0][j]=tb[j];
				}
		}
		cout<<"generate: "<<times<<endl;
		cout<<"bestob= "<<bestob<<endl;
		chrom(0);
	
	}
}



void main()
{
	
	
	double pr0,pc,pm;
	
	cout<<"enter pr0 ";
	cin>>pr0;
	cout<<"enter pc ";
	cin>>pc;
	cout<<"enter pm ";
	cin>>pm;
	


	cout<<"press Enter to start: "<<endl;
	getchar();
	

	init(pr0);
	
	GAfordis(pr0,pc,pm);
	cout<<" GAfordis(pr0,pc,pm) "<<endl;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线视视频有精品| 91麻豆精品秘密| 91亚洲午夜精品久久久久久| 69久久夜色精品国产69蝌蚪网| 久久久久9999亚洲精品| 亚洲小说欧美激情另类| 成人免费看视频| 精品久久久久久无| 午夜日韩在线电影| 99久久精品99国产精品| 欧美mv和日韩mv的网站| 亚洲一二三区视频在线观看| 成人小视频在线| 欧美精品一区二区三区很污很色的| 日韩美女啊v在线免费观看| 国产一级精品在线| 日韩欧美在线综合网| 亚洲成人午夜电影| 色94色欧美sute亚洲13| 中文字幕在线视频一区| 国产伦精一区二区三区| 欧美成人a视频| 午夜精品久久久久久久| 欧美视频一区二区三区在线观看| 中文字幕一区在线观看视频| 国产成人午夜99999| 精品国产自在久精品国产| 日本免费在线视频不卡一不卡二 | 在线精品国精品国产尤物884a| 国产色一区二区| 国产在线看一区| 精品国产凹凸成av人网站| 日韩精品亚洲一区二区三区免费| 欧美在线观看视频在线| 亚洲第一会所有码转帖| 欧美日韩精品专区| 日韩二区三区四区| 日韩久久精品一区| 精品系列免费在线观看| 久久免费精品国产久精品久久久久| 美女一区二区三区| 2024国产精品| 成人一区二区三区中文字幕| 国产精品久久久久aaaa樱花| 91丨porny丨国产入口| 亚洲精品国产高清久久伦理二区| 色综合久久综合网97色综合| 夜夜操天天操亚洲| 制服丝袜中文字幕一区| 久久99久久99小草精品免视看| 久久综合九色综合欧美亚洲| 大白屁股一区二区视频| 成人免费在线视频观看| 欧美最新大片在线看| 午夜视频一区在线观看| 精品国产伦一区二区三区观看体验| 国产大陆亚洲精品国产| 亚洲男人的天堂在线观看| 欧美三电影在线| 国产在线观看免费一区| 国产精品成人网| 欧美日韩1区2区| 国产乱码精品一区二区三| 中文字幕一区三区| 666欧美在线视频| 国产91精品一区二区麻豆网站 | 日韩一区二区在线观看视频 | 国产福利一区二区三区视频在线| 国产精品美女www爽爽爽| 欧美在线影院一区二区| 黄色成人免费在线| 亚洲精品视频免费看| 欧美一区二区黄| 国产91在线观看| 亚洲一卡二卡三卡四卡五卡| 精品国产露脸精彩对白| 色综合久久88色综合天天6| 美女网站视频久久| 亚洲免费观看高清完整版在线观看熊| 91麻豆精品国产91久久久使用方法| 成人永久免费视频| 日韩精品免费专区| 亚洲视频免费看| 久久久久久免费网| 欧美精品黑人性xxxx| 91原创在线视频| 国产麻豆9l精品三级站| 五月激情综合色| 亚洲欧洲国产日本综合| 2023国产精华国产精品| 欧美裸体bbwbbwbbw| 91蜜桃视频在线| 国产伦精一区二区三区| 日本不卡高清视频| 亚洲香肠在线观看| 亚洲人成精品久久久久| 国产亚洲婷婷免费| 精品国产污网站| 欧美一级搡bbbb搡bbbb| 欧美日韩一区二区三区在线| 97精品久久久午夜一区二区三区| 国产一区二区三区免费播放| 日韩成人免费电影| 亚洲高清不卡在线| 一区二区三区鲁丝不卡| 中文字幕亚洲一区二区va在线| 国产婷婷色一区二区三区在线| 日韩午夜三级在线| 3d动漫精品啪啪| 欧美日韩一卡二卡| 欧美无砖专区一中文字| 91福利视频网站| 日本黄色一区二区| 91极品美女在线| 欧美性生交片4| 欧美丝袜丝交足nylons图片| 色哟哟日韩精品| 在线观看亚洲一区| 欧美在线视频日韩| 欧美日韩精品一区二区三区蜜桃 | 国产乱淫av一区二区三区| 精品中文av资源站在线观看| 男女男精品视频网| 久久成人18免费观看| 国内欧美视频一区二区| 国产一区二三区| 国产成人免费视频精品含羞草妖精 | 精品久久久久久久久久久久久久久| 7777女厕盗摄久久久| 日韩午夜激情免费电影| 久久网站最新地址| 日本一二三四高清不卡| 国产精品久久99| 亚洲午夜国产一区99re久久| 天堂在线亚洲视频| 国产一区二区视频在线播放| 成人国产视频在线观看| 在线欧美一区二区| 91精品国产综合久久久蜜臀粉嫩| 精品国产乱码久久久久久影片| 欧美国产综合色视频| 亚洲最新视频在线观看| 日韩 欧美一区二区三区| 国内精品嫩模私拍在线| 波多野结衣中文字幕一区二区三区| 色噜噜狠狠成人网p站| 91精品国产综合久久婷婷香蕉| 久久色在线观看| 亚洲久本草在线中文字幕| 丝袜美腿亚洲一区二区图片| 国产精品 日产精品 欧美精品| 91麻豆精东视频| 精品国产三级a在线观看| 亚洲人成伊人成综合网小说| 午夜精品久久久久久久久久久 | 成人在线综合网| 欧美日韩激情一区| 国产亚洲欧美日韩俺去了| 亚洲精品精品亚洲| 国产乱码一区二区三区| 欧美亚男人的天堂| 欧美经典一区二区三区| 偷窥国产亚洲免费视频| 成人一区二区三区在线观看| 欧美日韩三级一区二区| 中文字幕不卡在线播放| 日韩电影免费在线看| 99国产精品久久久久久久久久久| 日韩视频一区二区| 亚洲主播在线观看| 高清不卡一二三区| 欧美大尺度电影在线| 亚洲综合久久久| 成人av免费在线播放| 精品久久久久久亚洲综合网| 亚洲国产你懂的| 欧美精品vⅰdeose4hd| 久久先锋影音av鲁色资源| 亚洲国产人成综合网站| 不卡的av网站| 欧美激情综合五月色丁香 | 樱花草国产18久久久久| 国产精品综合一区二区| 欧美一区二区精品在线| 亚洲国产欧美日韩另类综合| 色婷婷综合视频在线观看| 国产婷婷一区二区| 国产最新精品精品你懂的| 欧美精品色一区二区三区| 亚洲最新在线观看| 色欲综合视频天天天| 17c精品麻豆一区二区免费| 国产精品1024| 国产欧美综合在线观看第十页| 黄页视频在线91| 久久久亚洲午夜电影| 激情五月婷婷综合| 久久亚洲春色中文字幕久久久| 久久国产人妖系列| 精品成人私密视频|