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

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

?? sacode.cpp

??  針對基于遺傳算法的TSP 問題求解, 嘗試了多種遺傳操作, 分析了這些操作在遺傳算法中的作用, 討論了基因片段保序在利用遺傳算法求解TSP 問題中的重要性.
?? CPP
字號:
#include <StdAfx.h>
#include <math.h>
#include <algorithm>
using std::random_shuffle;
using std::swap;

/*********************************************************
	InitialSA()——模擬退火算法的初始化
	1. 根據直角坐標生成城市距離矩陣
	2. 計算初始溫度
*********************************************************/
void InitialSA()
{
	CityNumber = vecCitys.size();
	
	vecCityDistances.clear();
	double fMaxCityDistance = 0.0;
	double fMinCityDistance = 100000.0;
	double fCityDistance = 0.0;
	std::vector<SYCity>::iterator iter_from, iter_to;
	for( iter_from=vecCitys.begin();iter_from!=vecCitys.end();iter_from++ )
	{
		for( iter_to=vecCitys.begin();iter_to!=vecCitys.end();iter_to++ )
		{
			SYCityDistance tmp_citydistance;
			fCityDistance = CountCityDistance( *iter_from, *iter_to, tmp_citydistance );

			if( fCityDistance > fMaxCityDistance )
				fMaxCityDistance = fCityDistance;

			if( fCityDistance < fMinCityDistance )
				fMinCityDistance = fCityDistance;

			vecCityDistances.push_back( tmp_citydistance );
		}
	}

	int rate = 20;
	InitialTemperature = CountInitialTemperatureMaxMin( fMaxCityDistance, fMinCityDistance, rate );
	NowTemperature = InitialTemperature;
	NowExternalIterNumber = 0;
	NowInnerIterNumber = 0;
}

/*********************************************************
	ClearSA()——清空殘留數據
*********************************************************/
void ClearSA()
{
	vecCitys.clear();
	vecCityDistances.clear();
	CityNumber = 0;
	InitialTemperature = 0.0;
	NowTemperature = 0.0;
	NowExternalIterNumber = 0;
	NowInnerIterNumber = 0;
}

/*********************************************************
	CountCityDistance()——計算城市之間的距離
	輸入參數: 1、FromCity			源城市引用
			   2、ToCity			目標城市引用
			   3、CityDistance		城市距離利用,返回值
	返回值:   源城市與目標城市之間的距離,double型
*********************************************************/
double CountCityDistance( SYCity &FromCity, SYCity &ToCity, SYCityDistance &CityDistance )
{
	CityDistance.m_nFromCity = FromCity.m_nIndex;
	CityDistance.m_nToCity = ToCity.m_nIndex;

	CityDistance.m_fDistance = sqrt( (FromCity.m_Coordinate.m_fcodx-ToCity.m_Coordinate.m_fcodx)*(FromCity.m_Coordinate.m_fcodx-ToCity.m_Coordinate.m_fcodx) +
									 (FromCity.m_Coordinate.m_fcody-ToCity.m_Coordinate.m_fcody)*(FromCity.m_Coordinate.m_fcody-ToCity.m_Coordinate.m_fcody) );

	return CityDistance.m_fDistance;

}

/*********************************************************
	CountInitialTemperatureMaxMin()——計算起始溫度
	輸入參數: 1、maxdis	城市之間的最大距離
			   2、mindis	城市之間的最小距離
			   3、rate		比例系數
	返回值:   起始溫度,double型
	計算方法參見《現代優化計算方法》(邢文訓等編著) p117 
*********************************************************/
double CountInitialTemperatureMaxMin( double maxdis, double mindis, int rate )
{
	return( rate*( CityNumber*maxdis - CityNumber*mindis ) );
}

/*********************************************************
	CreateCityRouter()——生成城市行走路徑
	輸入參數: 1、CityRouter	城市行走路徑的vector引用,返回值
	返回值:   空
	注:生成1->2->3->......->n的城市行走順序,作為算法初值
*********************************************************/
void CreateCityRouter( CityRouterDef &CityRouter )
{
	for( int i=1;i<=CityNumber;i++ )
		CityRouter.push_back( i );

//	random_shuffle(CityRouter.begin(), CityRouter.end()); 
}

/*********************************************************
	CreateCityRouter2opt()——從某行走路徑的鄰域中隨機選擇一個新的行走路徑,鄰域映射為2-opt
	輸入參數: 1、preCityRouter		原先行走路徑的vector引用
			   2、CityRouter		新的行走路徑的vector引用,返回值
	返回值:   空
*********************************************************/
void CreateCityRouter2opt( CityRouterDef &preCityRouter, CityRouterDef &CityRouter )
{
	int swapA, swapB;
	CityRouter = preCityRouter;

	while(1)
	{
		swapA = (rand()%CityNumber)-1;
		if( swapA >= 0 )
			break;
	}

	while(1)
	{
		swapB = (rand()%CityNumber)-1;
		if( swapA != swapB && swapB >= 0 )
		{
			int tmp = CityRouter[swapA];
			CityRouter[swapA] = CityRouter[swapB];
			CityRouter[swapB] = tmp;
			break;
		}
	}
}

/*********************************************************
	CountTotalDistance()——根據給定路徑計算該路徑對應的總路程
	輸入參數: 1、CityRouter		給定行走路徑的vector引用
	返回值:   總路程,double型
*********************************************************/
double CountTotalDistance( CityRouterDef &CityRouter )
{
	if( CityRouter.size() != CityNumber )
		return 0.0;

	double totaldis = 0.0;
	for( int i=1;i<CityNumber;i++ )
	{
		totaldis += FindCityDistance( CityRouter[i-1], CityRouter[i] );
	}
	totaldis += FindCityDistance( CityRouter[CityNumber-1], CityRouter[0] );
	return totaldis;
}

/*********************************************************
	FindCityDistance()——根據兩城市的索引獲得兩城市之間的路程
	輸入參數: 1、FromCityIndex		源城市的索引
			   2、ToCityIndex		目標城市的索引
	返回值:   兩城市之間的路程,double型
*********************************************************/
double FindCityDistance( int FromCityIndex, int ToCityIndex )
{
	int nIndex = (FromCityIndex-1)*CityNumber+(ToCityIndex-1);

	std::vector<SYCityDistance>::iterator iter_citydis;
	iter_citydis = vecCityDistances.begin()+nIndex;

	if( iter_citydis->m_nFromCity == FromCityIndex &&
		iter_citydis->m_nToCity == ToCityIndex )
		return( iter_citydis->m_fDistance );
	else
		return( 0.0 );
}

/*********************************************************
	CountDownTemperature()——計算外層循環的下降后的溫度
	輸入參數: 1、nowtemp		當前溫度
			   2、DownMode		下降方式,保留
	返回值:   下降后的溫度,double型
	注:		溫度下降方式 T(k+1) = K*T(k),K=0.95溫度下降方式 T(k+1) = K*T(k),K=0.95
*********************************************************/
double CountDownTemperature( double nowtemp, int DownMode )
{
	return( 0.95*nowtemp );
}

/*********************************************************
	JudgeOverInnerLoop()——判斷是否結束某一溫度下的內層循環
	輸入參數: 1、JudgeMode		判斷方式,保留
	返回值:   是否結束標志位,BOOL型
	注:		某一溫度下的循環次數是固定的,即城市個數的三次方
*********************************************************/
BOOL JudgeOverInnerLoop( int JudgeMode )
{
	if( NowInnerIterNumber >= CityNumber*CityNumber*CityNumber )  //*CityNumber)
		return TRUE;
	else
		return FALSE;
}

/*********************************************************
	JudgeOverExternalLoop()——判斷是否結束模擬退火算法
	輸入參數: 1、JudgeMode		判斷方式,保留
	返回值:   是否結束標志位,BOOL型
	注:		使用“零度法”的判斷方式,T(k)<= 0.01,結束計算
*********************************************************/
BOOL JudgeOverExternalLoop( int JudgeMode )
{
	if( NowTemperature <= 0.01 )		//InitialTemperature*0.001 )
		return TRUE;
	else
		return FALSE;
}

/*********************************************************
	FormRouterString()——根據行走路徑生成路徑字符串,供顯示使用
	輸入參數: 1、CityRouter		給定行走路徑的引用
	返回值:   行走路徑的顯示字符串
*********************************************************/
CString FormRouterString( SYRouter &CityRouter )
{
	CString strTemp, strValue;

	strTemp = "路徑 ";
	
	std::vector<int>::iterator iter_cityindex;
	for( iter_cityindex=CityRouter.m_CityRouter.begin();
		 iter_cityindex!=CityRouter.m_CityRouter.end();
		 iter_cityindex++ )
	{
		strValue.Format("%d",*iter_cityindex);
		strTemp += strValue;

		if( iter_cityindex+1 == CityRouter.m_CityRouter.end() )
			strTemp += " ";
		else
			strTemp +=" ";
	}

	strTemp += "  ";
	strTemp += "總路程 ";
	strValue.Format("%10.4f",CityRouter.m_fTotalDistance);
	strTemp += strValue;
	return strTemp;
}

/*********************************************************
	GetCoordinatebyCityIndex()——根據城市索引獲取城市坐標
	輸入參數: 1、cityindex				城市索引
			   2、coordx				城市X坐標
			   3、coordy				城市Y坐標
	返回值:  空 
*********************************************************/
void GetCoordinatebyCityIndex( int cityindex, double &coordx, double &coordy )
{
	coordx = 0.0;
	coordy = 0.0;

	if( cityindex > 0 && cityindex <= CityNumber )
	{
		std::vector<SYCity>::iterator iter_city;
		iter_city = vecCitys.begin()+cityindex-1;

		if( iter_city->m_nIndex == cityindex )
		{
			coordx = iter_city->m_Coordinate.m_fcodx;
			coordy = iter_city->m_Coordinate.m_fcody;
		}
	}
}

/*********************************************************
	GetRouterFileString()——獲得指定路徑的城市坐標字符串
	輸入參數:	1、CityRouter			城市路徑索引 
				2、strTemp				城市坐標字符串
	返回值:  空 
*********************************************************/
void GetRouterFileString( SYRouter &CityRouter, CString &strTemp )
{
	strTemp.Empty();

	CString strValue;
	std::vector<int>::iterator iter_city;
	double coordx, coordy;
	for( iter_city=CityRouter.m_CityRouter.begin();
		 iter_city!=CityRouter.m_CityRouter.end();
		 iter_city++ )
	{
		GetCoordinatebyCityIndex( *iter_city, coordx, coordy );
		strValue.Format("%.4f %.4f\n",coordx, coordy );
		strTemp += strValue;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美丰满一区二区免费视频| 一区二区三区在线免费观看| 精品视频资源站| av电影一区二区| 国产精品亚洲专一区二区三区 | 亚洲欧美日韩一区| 国产精品久久久久一区二区三区| 欧美v日韩v国产v| 精品国产自在久精品国产| 日韩欧美不卡一区| 欧美片在线播放| 91精品麻豆日日躁夜夜躁| 欧美日韩极品在线观看一区| 欧美精选一区二区| 91精品国产麻豆国产自产在线| 欧美一区二区大片| xf在线a精品一区二区视频网站| 日韩亚洲欧美在线| 久久精品视频免费观看| 中文字幕国产一区| 1024成人网| 一区二区三区国产| 免费视频最近日韩| 国产精品中文字幕日韩精品 | 91欧美一区二区| 欧美色图免费看| 日韩免费高清视频| 国产精品乱码久久久久久| 亚洲精品日韩专区silk | 欧美日韩免费一区二区三区视频| 欧美美女一区二区| 久久久久久影视| 亚洲激情中文1区| 老司机精品视频导航| 成人伦理片在线| 91麻豆精品国产91久久久更新时间| 精品国产免费久久| 亚洲色图欧洲色图| 另类小说欧美激情| 972aa.com艺术欧美| 日韩一区和二区| 国产精品国产三级国产普通话三级| 亚洲一区二区三区四区在线观看| 激情欧美日韩一区二区| 99久久精品一区| 日韩免费一区二区| 亚洲欧美二区三区| 国产精品综合久久| 777xxx欧美| 国产精品家庭影院| 久久不见久久见免费视频7| 99这里只有久久精品视频| 日韩免费电影一区| 艳妇臀荡乳欲伦亚洲一区| 国产成人一区在线| 91精品婷婷国产综合久久性色| 国产精品国模大尺度视频| 麻豆精品一区二区综合av| 欧洲精品一区二区| 一区免费观看视频| 国产大陆a不卡| 日韩你懂的在线观看| 亚洲不卡av一区二区三区| 成人免费毛片嘿嘿连载视频| 欧美精品一区二区高清在线观看 | 日本亚洲天堂网| 欧美自拍丝袜亚洲| 亚洲精品美国一| 色综合色综合色综合| 国产精品久久精品日日| 国产毛片精品视频| 久久综合色综合88| 精东粉嫩av免费一区二区三区| 在线播放欧美女士性生活| 亚洲午夜私人影院| 在线观看日韩高清av| 一区二区三区鲁丝不卡| 色综合中文字幕国产| 久久这里只有精品视频网| 精品一区二区三区免费毛片爱| 欧美日韩成人高清| 日韩中文字幕一区二区三区| 欧美三级视频在线播放| 午夜精品视频在线观看| 欧美狂野另类xxxxoooo| 亚洲123区在线观看| 在线成人免费视频| 奇米在线7777在线精品| 日韩免费一区二区| 国产成人av在线影院| 国产精品网站在线观看| 91久久人澡人人添人人爽欧美 | 丁香一区二区三区| 国产精品免费看片| 日本久久一区二区三区| 亚洲国产va精品久久久不卡综合 | 日本三级韩国三级欧美三级| 欧美一区二区三区男人的天堂| 欧美bbbbb| 日本一区二区视频在线| 成人av网站在线| 亚洲高清免费一级二级三级| 欧美一区二区三区成人| 国产很黄免费观看久久| 亚洲欧美日韩综合aⅴ视频| 欧美日韩黄视频| 国内外精品视频| 亚洲三级在线免费| 这里只有精品视频在线观看| 国产精品亚洲人在线观看| 亚洲欧美日韩人成在线播放| 欧美人动与zoxxxx乱| 国产精品乡下勾搭老头1| 一区二区在线电影| 欧美精品一区二区久久久| 91国偷自产一区二区三区成为亚洲经典| 亚洲成人一区在线| 国产日韩欧美亚洲| 欧美日本韩国一区二区三区视频 | 国产亚洲女人久久久久毛片| 91久久精品一区二区二区| 伦理电影国产精品| 亚洲男人的天堂在线观看| 欧美一个色资源| 91九色02白丝porn| 国产福利91精品一区| 偷拍一区二区三区| 亚洲特级片在线| 久久久精品免费网站| 在线不卡a资源高清| 色就色 综合激情| 成人黄色免费短视频| 免费一级欧美片在线观看| 亚洲综合区在线| 亚洲视频中文字幕| 久久久99精品久久| 日韩精品专区在线| 欧美日韩成人激情| 欧美三级电影在线观看| 91影院在线免费观看| 国产黄色精品视频| 黄一区二区三区| 蜜桃视频一区二区三区 | 91精品国产欧美一区二区| 97久久精品人人澡人人爽| 国产成人aaa| 精品一区二区久久久| 久久国产三级精品| 免费人成精品欧美精品| 日韩高清不卡一区二区三区| 亚洲在线视频免费观看| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品入口麻豆原神| 国产亚洲一区二区在线观看| 精品国产乱码久久久久久1区2区 | 国产成人午夜精品5599| 精品一区二区免费视频| 国产在线观看一区二区| 国产一区日韩二区欧美三区| 久久97超碰色| 国产九色sp调教91| 成人免费观看av| 99精品在线免费| 91女神在线视频| 91精品国产综合久久国产大片| 欧美性极品少妇| 在线观看91精品国产麻豆| 欧美一区欧美二区| 精品福利av导航| 日本一区二区三区高清不卡 | 中文字幕亚洲视频| 亚洲欧美一区二区三区国产精品 | 久久久青草青青国产亚洲免观| 亚洲精品一区在线观看| 久久久影视传媒| 国产精品久久午夜| 亚洲激情图片小说视频| 日一区二区三区| 国产精品一级在线| 一本色道a无线码一区v| 欧美日韩精品综合在线| 久久综合中文字幕| 亚洲精品视频免费看| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产suv精品一区二区三区| 91视频xxxx| 精品久久国产老人久久综合| 中文字幕一区不卡| 免费看欧美美女黄的网站| 国产一区二区美女| 欧美亚洲国产一区二区三区 | 中文字幕欧美激情一区| 亚洲国产一区二区视频| 久久精品国产**网站演员| 成人激情视频网站| 日韩免费高清视频| 亚洲精品福利视频网站| 国产九色sp调教91| 欧美一区二区三区性视频| 亚洲精品乱码久久久久久|