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

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

?? c#版遺傳算法解tsp問題.txt

?? C#版遺傳算法解TSP問題
?? TXT
?? 第 1 頁 / 共 3 頁
字號:
				if(ppindivi[i]!=-1)
				{
					if(k<l1)
					{
						Buf1[k1,k]=ppindivi[i];
						k++;
					}
					else
					{
						Buf1[k1,k+l2-l1+1]=ppindivi[i];
						k++;
					}
				}
			}
			for(int i=l1;i<=l2;i++)
				Buf1[k1,i]=Buf[i1,i];
			FitV1[k1]=Fit(k1,1);
		}
		//反轉變異算子
		//對Buf1中的第i1個個體進行反轉變異
		public void MutateReverse(int i1)
		{
			int []randi;
			randi=randnumber.RandDifferInt(0,Length-1,2);
			int l1,l2;
			if(randi[0]>randi[1])
			{
				l1=randi[1];
				l2=randi[0];
			}
			else
			{
				l1=randi[0];
				l2=randi[1];
			}
			int midl=(l1+l2)/2;
			for(int i=l1;i<=midl;i++)
			{
				int ii=Buf1[i1,i];
				Buf1[i1,i]=Buf1[i1,l1+l2-i];
				Buf1[i1,l1+l2-i]=ii;
			}
			FitV1[i1]=Fit(i1,1);
		}
		//錦標賽選擇算子
		//從Buf和Buf1中選擇后存入Buf2中,最后再轉入Buf中
		public void SelectMatch()
		{
			int []randi;
			for(int i=0;i<N;i++)
			{
				randi=randnumber.RandDifferInt(0,2*N-1,2);
				if((randi[0]<N)&&(randi[1]<N))
				{
					if(FitV[randi[0]]<FitV[randi[1]])
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf[randi[0],j];
						FitV2[i]=FitV[randi[0]];
					}
					else
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf[randi[1],j];
						FitV2[i]=FitV[randi[1]];
					}
				}
				else if((randi[0]<N)&&(randi[1]>=N))
				{
					if(FitV[randi[0]]<FitV1[randi[1]-N])
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf[randi[0],j];
						FitV2[i]=FitV[randi[0]];
					}
					else
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf1[randi[1]-N,j];
						FitV2[i]=FitV1[randi[1]-N];
					}
				}
				else if((randi[0]>=N)&&(randi[1]<N))
				{
					if(FitV1[randi[0]-N]<FitV[randi[1]])
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf1[randi[0]-N,j];
						FitV2[i]=FitV1[randi[0]-N];
					}
					else
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf[randi[1],j];
						FitV2[i]=FitV[randi[1]];
					}
				}
				else
				{
					if(FitV1[randi[0]-N]<FitV1[randi[1]-N])
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf1[randi[0]-N,j];
						FitV2[i]=FitV1[randi[0]-N];
					}
					else
					{
						for(int j=0;j<Length;j++)
							Buf2[i,j]=Buf1[randi[1]-N,j];
						FitV2[i]=FitV1[randi[1]-N];
					}
				}
			}
			int [,]Bufm;
			Bufm=Buf;
			Buf=Buf2;
			Buf2=Bufm;
			double []FitVm;
			FitVm=FitV;
			FitV=FitV2;
			FitV2=FitVm;
		}
		//找出當前最好個體,如果是真,則從Buf中尋找,否則,從Buf和Buf1中尋找
		public void FindMinIndividual(bool iszero)
		{
			int ismin=-1;
			for(int i=0;i<N;i++)
			{
				if(MinValue>FitV[i])
				{
					ismin=i;
					MinValue=FitV[i];
				}
			}
			if(ismin!=-1)
			{
				for(int j=0;j<Length;j++){
					MinIndividual[j]=Buf[ismin,j];
				}
			}
			if(!iszero)
			{
				ismin=-1;
				for(int i=0;i<N;i++)
				{
					if(MinValue>FitV1[i])
					{
						ismin=i;
						MinValue=FitV1[i];
					}
				}
				if(ismin!=-1)
				{
					for(int i=0;i<Buf.GetLength(1);i++)
						MinIndividual[i]=Buf1[ismin,i];
				}
			}
					  
		}
		//單步運行函數
		public void GaStep()
		{
			int []randi;
			for(int i=0;i<N;i++)
			{
				randi=randnumber.RandDifferInt(0,N-1,2);
				if(randnumber.Rand01()<Pc)
					CrossOX(randi[0],randi[1],i);
				else
				{
					for(int j=0;j<Length;j++)
						Buf1[i,j]=Buf[randi[0],j];
					FitV1[i]=FitV[randi[0]];
				}
			}
			for(int i=0;i<N;i++)
			{
				if(randnumber.Rand01()<Pm)
					MutateReverse(i);
			}
			SelectMatch();
			FindMinIndividual(false);
		}
		//TSP問題的遺傳算法的主程序
		public void GaTsp(string DataFileName)
		{
			Initialize(DataFileName,10,0.6,0.05,10000);
			for(int i=0;i<MaxGene;i++)
				GaStep();
			Console.WriteLine("MinValue={0}",MinValue);
			Console.WriteLine("{0}",GetPath(MinIndividual));
		}
		//TSP問題的遺傳算法的主程序
		public void GaTsp(double [,]CostMat)
		{
			Initialize(CostMat,30,0.5,0.07,8000);
			for(int i=0;i<MaxGene;i++)
			{
				GaStep();
			}
			Console.WriteLine("MinValue={0}",MinValue);
			Console.WriteLine("{0}",GetPath(MinIndividual));
		}
		//獲得個體的路徑
		public string GetPath(int []Individual)
		{
			string path=null;
			string str="-->";
			string subpath;
			for(int i=1;i<Length;i++)
			{
				if(Individual[i-1]<10)
				{
					subpath=minfloyd.GetPath(Individual[i-1],Individual[i]).Remove(0,4);
				}
				else if(Individual[i-1]<100)
				{
					subpath=minfloyd.GetPath(Individual[i-1],Individual[i]).Remove(0,5);
				}
				else
				{
					subpath=minfloyd.GetPath(Individual[i-1],Individual[i]).Remove(0,6);
				}
				path+=subpath+str;
			}
			if(Individual[Length-1]<10)
			{
				subpath=minfloyd.GetPath(Individual[Length-1],Individual[0]).Remove(0,4);
			}
			else if(Individual[Length-1]<100)
			{
				subpath=minfloyd.GetPath(Individual[Length-1],Individual[0]).Remove(0,5);
			}
			else
			{
				subpath=minfloyd.GetPath(Individual[Length-1],Individual[0]).Remove(0,6);
			}
			path+=subpath;
			return path;
		}
	}
	class RandNumber
	{
		private Random rr=new Random(); //創建Random類的實例
		// 返回low與high之間的number個隨機整數(包括low和high)
		public int[] RandInt(int low,int high,int number)
		{
			int []randvec;
			randvec=new int[number];
			for(int i=0;i<number;i++)
				randvec[i]=rr.Next()%(high-low+1)+low;
			return randvec;
		}
		// 返回0與high之間的number個隨機整數(包括0和high)
		public int[] RandInt(int high,int number)
		{
			return RandInt(0,high,number);
		}
		// 返回low與high之間的number(number小于high-low+1)個不同的隨機整數(包括low和
high)
		public int[] RandDifferInt(int low,int high,int number)
		{
			if(number>(high-low+1)) number=high-low+1;
			int []randvec;
			randvec=new int[number];
			randvec[0]=rr.Next()%(high-low+1)+low;
			int randi;  //存儲中間過程產生的隨機整數
			bool IsDiffer;//用于判斷新產生的隨機整數是否與以前產生的相同,若不同為真,否則
為假
			for(int i=1;i<randvec.GetLength(0);i++)
			{
				while(true)
				{
					randi=rr.Next()%(high-low+1)+low;
					IsDiffer=true;   //設定為真
					for(int j=0;j<i;j++)
					{
						if(randi==randvec[j])
						{
							IsDiffer=false; //相同為假
							break;
						}
					}
					if(IsDiffer)
					{
						randvec[i]=randi;
						break;
					}
				}
			}
			return randvec;
		}
		// 返回low與high之間的high-low+1個不同的隨機整數(包括low和high)
		public int[] RandDifferInt(int low,int high)
		{
			return RandDifferInt(low,high,high-low+1);
		}
		// 返回0與high之間的high+1個不同的隨機整數(包括0和high)
		public int[] RandDifferInt(int high)
		{
			return RandDifferInt(0,high,high+1);
		}
        // 返回一個[0,1]之間的服從均勻分布的隨機數
		public double Rand01()
		{
			return rr.NextDouble();
		}
		// 返回number個[0,1]之間的服從均勻分布的隨機數
		public double[] Rand01(int number)
		{
			double []randf=new double[number];
			for(int i=0;i<number;i++)
				randf[i]=rr.NextDouble();
			return randf;
		}
	}
	/* 
	 * 下面是Floyd算法類,注意圖的頂點標號是從0開始
	 * */
	class Floyd
	{
		private double [,]Distance; //圖的最短路徑矩陣
		private int [,]Path; //圖的最短路徑的緊前頂點矩陣
		public int GetDotN()  //獲得頂點數
		{
			return Path.GetLength(0);
		}
		public double GetDistance(int i,int j)  //獲得頂點i到頂點j的最短距離
		{
			return Distance[i,j];
		}
		//獲得圖的最短路徑矩陣
		public double[,] GetDistance()
		{
			return Distance;
		}
		//獲得頂點ni到頂點nj的最短路徑
		public string GetPath(int ni,int nj)
		{
			int []pathReverse;
			pathReverse=new int[Path.GetLength(0)];
			pathReverse[0]=Path[ni,nj];
			int k=0;
			while(pathReverse[k]!=ni)
			{
				k++;
				pathReverse[k]=Path[ni,pathReverse[k-1]];
			}
			string path=pathReverse[k].ToString();
			string str1="-->";
			for(int i=k-1;i>=0;i--)
			{
				path+=(str1+pathReverse[i].ToString());
			}
			path+=(str1+nj.ToString());
			return path;
		}
		public void MinFloyd(string DataFileName)
		{
			double [,]CostMat;
			CostMat=LSMat.LoadDoubleDataFile(DataFileName);
			MinFloyd(CostMat);
		}
		//Floyd算法的實現
		//CostMat是圖的權值矩陣
		public void MinFloyd(double [,]CostMat)
		{
			int nn;  
			nn=CostMat.GetLength(0);  //獲得圖的頂點個數
			for(int i=0;i<nn;i++)
				for(int j=0;j<nn;j++)
				{
					if(CostMat[i,j]==0)
						CostMat[i,j]=10e+100;
				}
			Distance=new double[nn,nn];
			Path=new int[nn,nn];
			//初始化Path,Distance
			for(int i=0;i<nn;i++)
			{
				for(int j=0;j<nn;j++)
				{
					Path[i,j]=i;
					Distance[i,j]=CostMat[i,j];
				}
				Distance[i,i]=0.0;
			}
			for(int k=0;k<nn;k++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频在线免费观看| 亚洲欧洲精品天堂一级| 91视频免费观看| 岛国av在线一区| 国产一区二区三区四区在线观看| 亚洲五码中文字幕| 一区二区成人在线| 亚洲猫色日本管| 亚洲免费视频中文字幕| 国产精品国模大尺度视频| 中文字幕 久热精品 视频在线| 精品国产百合女同互慰| 日韩一区二区三区四区五区六区| 欧美日韩1区2区| 欧美一区二区三区四区高清| 色婷婷综合五月| 欧美电影一区二区三区| 日韩午夜中文字幕| 亚洲色图20p| 欧美韩国日本一区| 亚洲日本电影在线| 亚洲一区免费在线观看| 亚洲国产aⅴ天堂久久| 亚洲国产精品欧美一二99| 日韩国产欧美视频| 精品一区二区三区在线视频| 国产一区二区三区在线观看免费视频 | 在线精品视频免费观看| 欧美日韩亚洲另类| 日韩无一区二区| 久久久三级国产网站| 国产精品久久久久永久免费观看 | aaa国产一区| 色素色在线综合| 51午夜精品国产| 日韩区在线观看| 国产精品私房写真福利视频| 亚洲免费观看高清完整| 日韩av中文字幕一区二区 | 国产精品你懂的在线欣赏| 亚洲素人一区二区| 美女视频网站黄色亚洲| 成人av综合一区| 欧美精品色一区二区三区| 久久精品一区二区三区不卡 | 欧美精品乱码久久久久久按摩 | 亚洲免费av在线| 国产精品一区二区果冻传媒| 日本乱人伦一区| 久久久一区二区| 日韩av不卡在线观看| hitomi一区二区三区精品| 欧美久久久久久久久久 | 成人aa视频在线观看| 91精品婷婷国产综合久久 | 欧美综合久久久| 久久人人爽人人爽| 偷拍日韩校园综合在线| 成人av在线资源| 国产校园另类小说区| 五月天婷婷综合| 成人av在线网站| 日韩免费视频线观看| 亚洲一区二区三区爽爽爽爽爽 | 亚洲精品国产视频| 国产91精品久久久久久久网曝门 | 成人av网址在线| 久久综合资源网| 麻豆国产精品视频| 在线成人高清不卡| 亚州成人在线电影| 欧美在线999| 一区二区三区四区激情| www.综合网.com| 国产精品天美传媒| 成人一区二区三区视频| 精品久久久久久亚洲综合网| 日韩高清一级片| 欧美日韩一级二级| 水野朝阳av一区二区三区| 欧美视频在线播放| 午夜视频在线观看一区二区| 欧美日韩三级在线| 婷婷久久综合九色综合绿巨人| 91福利资源站| 亚洲国产日韩精品| 欧美日韩亚洲另类| 蜜桃av噜噜一区二区三区小说| 69久久夜色精品国产69蝌蚪网| 亚洲午夜在线电影| 欧美电影一区二区三区| 麻豆成人综合网| 久久影院视频免费| 国产成a人亚洲精| 亚洲欧洲av在线| 在线免费观看视频一区| 亚洲一区二区三区四区五区中文 | 在线精品视频免费观看| 五月婷婷综合激情| 国产午夜精品理论片a级大结局| 国产·精品毛片| 一区二区三区日韩欧美精品| 欧美日韩亚洲不卡| 蜜桃在线一区二区三区| 久久只精品国产| 波多野结衣一区二区三区| 亚洲精品欧美激情| 欧美日韩精品久久久| 免播放器亚洲一区| 久久麻豆一区二区| 色狠狠桃花综合| 久久精品国产成人一区二区三区| 久久久久久影视| 日本道色综合久久| 国产v综合v亚洲欧| 一区二区三区在线视频观看58| 91精品免费在线| www.亚洲人| 日韩av电影天堂| 亚洲天堂a在线| 欧美mv和日韩mv国产网站| 成人手机在线视频| 亚洲gay无套男同| 国产欧美日韩不卡免费| 欧美精品18+| 97久久精品人人做人人爽50路| 五月天一区二区三区| 亚洲天堂网中文字| 久久久久久久综合色一本| 欧美性大战久久久久久久| 国产成人综合亚洲91猫咪| 日日摸夜夜添夜夜添亚洲女人| 欧美国产精品一区二区| 欧美日韩二区三区| 91啪亚洲精品| 丰满亚洲少妇av| 看片网站欧美日韩| 日韩精品一区第一页| 日韩理论电影院| 国产日韩v精品一区二区| 欧美精品久久天天躁| 91丨porny丨蝌蚪视频| 国产成人在线看| 久久成人av少妇免费| 亚洲 欧美综合在线网络| **网站欧美大片在线观看| 久久久久国产精品麻豆| 欧美精品三级在线观看| 欧美偷拍一区二区| 91久久奴性调教| 91小视频在线观看| a亚洲天堂av| 不卡视频一二三| 成+人+亚洲+综合天堂| 成人美女在线观看| 岛国精品在线观看| 成人av资源在线观看| 成人做爰69片免费看网站| 国产裸体歌舞团一区二区| 九九九久久久精品| 久久se这里有精品| 激情亚洲综合在线| 精品综合久久久久久8888| 美女一区二区三区在线观看| 日韩精品1区2区3区| 日产国产高清一区二区三区| 午夜精品久久久久久不卡8050| 一区二区三区四区激情| 亚洲成a人片综合在线| 首页国产欧美日韩丝袜| 奇米精品一区二区三区在线观看| 日产精品久久久久久久性色| 精品一区二区三区视频在线观看 | 精品免费日韩av| ww久久中文字幕| 欧美高清在线视频| 成人免费一区二区三区视频| 亚洲色图欧洲色图婷婷| 性感美女极品91精品| 美美哒免费高清在线观看视频一区二区 | 91最新地址在线播放| 欧洲精品中文字幕| 555夜色666亚洲国产免| 久久久综合网站| 亚洲尤物视频在线| 国产成人啪免费观看软件| 色婷婷一区二区| 欧美不卡视频一区| 亚洲色图丝袜美腿| 久久精品国产精品亚洲综合| 不卡在线观看av| 欧美一区二区性放荡片| 国产三级一区二区| 亚洲综合色网站| 国产乱码精品一区二区三区av| 色综合久久综合| 精品国产乱码久久久久久影片| 日韩一区有码在线| 精品在线免费视频| 色94色欧美sute亚洲线路一ni|