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

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

?? sacode.cpp

?? 基于C++語(yǔ)言的改進(jìn)TSP模擬退火算法.
?? CPP
字號(hào):
#include <StdAfx.h>
#include <math.h>
#include <algorithm>
using std::random_shuffle;
using std::swap;

/*********************************************************
	InitialSA()——模擬退火算法的初始化
	1. 根據(jù)直角坐標(biāo)生成城市距離矩陣
	2. 計(jì)算初始溫度
*********************************************************/
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()——清空殘留數(shù)據(jù)
*********************************************************/
void ClearSA()
{
	vecCitys.clear();
	vecCityDistances.clear();
	CityNumber = 0;
	InitialTemperature = 0.0;
	NowTemperature = 0.0;
	NowExternalIterNumber = 0;
	NowInnerIterNumber = 0;
}

/*********************************************************
	CountCityDistance()——計(jì)算城市之間的距離
	輸入?yún)?shù): 1、FromCity			源城市引用
			   2、ToCity			目標(biāo)城市引用
			   3、CityDistance		城市距離利用,返回值
	返回值:   源城市與目標(biāo)城市之間的距離,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()——計(jì)算起始溫度
	輸入?yún)?shù): 1、maxdis	城市之間的最大距離
			   2、mindis	城市之間的最小距離
			   3、rate		比例系數(shù)
	返回值:   起始溫度,double型
	計(jì)算方法參見(jiàn)《現(xiàn)代優(yōu)化計(jì)算方法》(邢文訓(xùn)等編著) p117 
*********************************************************/
double CountInitialTemperatureMaxMin( double maxdis, double mindis, int rate )
{
	return( rate*( CityNumber*maxdis - CityNumber*mindis ) );
}

/*********************************************************
	CreateCityRouter()——生成城市行走路徑
	輸入?yún)?shù): 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()——從某行走路徑的鄰域中隨機(jī)選擇一個(gè)新的行走路徑,鄰域映射為2-opt
	輸入?yún)?shù): 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()——根據(jù)給定路徑計(jì)算該路徑對(duì)應(yīng)的總路程
	輸入?yún)?shù): 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()——根據(jù)兩城市的索引獲得兩城市之間的路程
	輸入?yún)?shù): 1、FromCityIndex		源城市的索引
			   2、ToCityIndex		目標(biāo)城市的索引
	返回值:   兩城市之間的路程,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()——計(jì)算外層循環(huán)的下降后的溫度
	輸入?yún)?shù): 1、nowtemp		當(dāng)前溫度
			   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()——判斷是否結(jié)束某一溫度下的內(nèi)層循環(huán)
	輸入?yún)?shù): 1、JudgeMode		判斷方式,保留
	返回值:   是否結(jié)束標(biāo)志位,BOOL型
	注:		某一溫度下的循環(huán)次數(shù)是固定的,即城市個(gè)數(shù)的三次方
*********************************************************/
BOOL JudgeOverInnerLoop( int JudgeMode )
{
	if( NowInnerIterNumber >= CityNumber*CityNumber*CityNumber )  //*CityNumber)
		return TRUE;
	else
		return FALSE;
}

/*********************************************************
	JudgeOverExternalLoop()——判斷是否結(jié)束模擬退火算法
	輸入?yún)?shù): 1、JudgeMode		判斷方式,保留
	返回值:   是否結(jié)束標(biāo)志位,BOOL型
	注:		使用“零度法”的判斷方式,T(k)<= 0.01,結(jié)束計(jì)算
*********************************************************/
BOOL JudgeOverExternalLoop( int JudgeMode )
{
	if( NowTemperature <= 0.01 )		//InitialTemperature*0.001 )
		return TRUE;
	else
		return FALSE;
}

/*********************************************************
	FormRouterString()——根據(jù)行走路徑生成路徑字符串,供顯示使用
	輸入?yún)?shù): 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()——根據(jù)城市索引獲取城市坐標(biāo)
	輸入?yún)?shù): 1、cityindex				城市索引
			   2、coordx				城市X坐標(biāo)
			   3、coordy				城市Y坐標(biāo)
	返回值:  空 
*********************************************************/
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()——獲得指定路徑的城市坐標(biāo)字符串
	輸入?yún)?shù):	1、CityRouter			城市路徑索引 
				2、strTemp				城市坐標(biāo)字符串
	返回值:  空 
*********************************************************/
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;
	}
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区精品在线| 精品在线观看免费| 欧美国产激情二区三区| 91精品久久久久久久91蜜桃| 在线观看一区二区视频| 93久久精品日日躁夜夜躁欧美| 国产91丝袜在线播放九色| 国产在线不卡视频| 狠狠v欧美v日韩v亚洲ⅴ| 天天色综合天天| 免费av成人在线| 精品亚洲成a人在线观看| 久久精品国产在热久久| 精品午夜久久福利影院| 国产在线一区二区综合免费视频| 极品少妇xxxx精品少妇偷拍 | 精品系列免费在线观看| 国内成+人亚洲+欧美+综合在线| 国产一区在线观看视频| 国产99一区视频免费| 99久久婷婷国产| 91极品视觉盛宴| 51精品秘密在线观看| 日韩欧美中文字幕公布| 久久九九久精品国产免费直播| 国产精品久久久久婷婷| 亚洲成在人线免费| 国产乱码精品一品二品| 不卡的av中国片| 欧美色图激情小说| 久久精品日韩一区二区三区| 亚洲一区在线观看网站| 视频精品一区二区| 成人永久看片免费视频天堂| 91偷拍与自偷拍精品| 欧美一卡2卡三卡4卡5免费| 久久久久久久久久久久久久久99| 亚洲欧美电影院| 狠狠色丁香九九婷婷综合五月| 色综合欧美在线视频区| 日韩欧美国产一区二区三区 | 欧美亚日韩国产aⅴ精品中极品| 欧美日韩美少妇| 国产精品久久久久aaaa樱花| 日韩精品五月天| 91视频在线观看| 精品国产电影一区二区| 亚洲日本青草视频在线怡红院 | 经典三级一区二区| 欧美性色综合网| 欧美国产激情二区三区| 免费人成黄页网站在线一区二区| www.日韩av| 91精品福利在线一区二区三区 | 在线观看视频欧美| 欧美国产精品一区二区三区| 综合精品久久久| 亚洲青青青在线视频| 亚洲成人在线网站| 日韩欧美久久一区| 日韩视频免费观看高清在线视频| 欧美一区二区三区在线| 欧美日本精品一区二区三区| 精品电影一区二区三区 | 视频一区二区三区中文字幕| av成人老司机| 国产精品亲子乱子伦xxxx裸| 精品一区二区在线观看| 91精品国产品国语在线不卡| 一区二区三区不卡在线观看| www.亚洲人| 国产精品你懂的在线欣赏| 日韩综合小视频| 4438x成人网最大色成网站| 亚洲制服丝袜在线| 欧美色精品天天在线观看视频| 亚洲黄色av一区| 欧美天天综合网| 亚洲成年人网站在线观看| 一区二区欧美国产| 在线精品视频一区二区三四| 午夜精品视频一区| 日韩亚洲欧美在线| 久久99国内精品| 日韩欧美中文字幕公布| 国产精品一区二区在线播放| 精品国内片67194| 国产成人亚洲综合a∨婷婷图片| 国产亚洲女人久久久久毛片| 国内精品久久久久影院色| 国产午夜亚洲精品不卡| av亚洲精华国产精华精华| 一区二区在线观看视频| 日本精品一区二区三区高清| 亚洲日本一区二区三区| 欧美日韩在线一区二区| 免费观看成人av| 欧美激情一区不卡| 在线观看日韩国产| 麻豆freexxxx性91精品| 国产精品亲子乱子伦xxxx裸| 在线观看日产精品| 热久久一区二区| 中文字幕欧美区| 欧美日韩五月天| 国产成人综合精品三级| 亚洲欧美在线视频观看| 欧美人伦禁忌dvd放荡欲情| 国产一区美女在线| 国产精品无码永久免费888| 在线日韩av片| 国产精品亚洲专一区二区三区| 国产精品你懂的在线欣赏| 欧美久久婷婷综合色| 高清在线不卡av| 三级欧美在线一区| 国产日韩欧美a| 欧美二区在线观看| eeuss国产一区二区三区| 日韩电影在线看| 亚洲视频一区二区在线| 91精品国产91久久久久久最新毛片| 国产99一区视频免费| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产午夜精品一区二区| 欧美一二三在线| 在线影视一区二区三区| 国产成人一级电影| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲一区二区在线观看视频| 欧美精品一区二区三| 欧美色综合影院| 国产不卡视频在线播放| 久久精品国产一区二区三| 天天色综合天天| 亚洲免费观看高清完整| 国产精品久久久久一区| 欧美一卡二卡在线观看| 色999日韩国产欧美一区二区| 国产91露脸合集magnet| 婷婷六月综合亚洲| 亚洲人成7777| 日本一区二区综合亚洲| 日韩丝袜美女视频| 91精品久久久久久久久99蜜臂| 欧美精品久久久久久久久老牛影院| 91在线视频观看| av中文一区二区三区| 狂野欧美性猛交blacked| 亚洲成精国产精品女| 一区二区免费视频| 亚洲免费在线播放| 亚洲免费资源在线播放| 中文字幕视频一区二区三区久| 国产女人18毛片水真多成人如厕| 久久综合狠狠综合久久激情| 精品国产精品网麻豆系列| 欧美mv日韩mv国产网站app| 日韩亚洲国产中文字幕欧美| 精品视频在线看| 欧美日韩1234| 欧美一区二区三区视频免费| 欧美日韩美少妇| 欧美不卡一区二区三区| 精品免费国产二区三区| 日韩欧美一级在线播放| 久久免费看少妇高潮| 国产无人区一区二区三区| 久久精品一区四区| 日韩精品在线看片z| 精品剧情在线观看| 国产精品欧美久久久久一区二区| 欧美国产精品中文字幕| 一区二区三区精品| 人禽交欧美网站| 国产麻豆一精品一av一免费| 成人免费观看视频| 色一区在线观看| 在线成人av网站| 中文字幕精品综合| 亚洲国产成人av网| 韩国女主播一区二区三区| 不卡的av在线| 欧美日韩免费视频| xvideos.蜜桃一区二区| 亚洲欧洲韩国日本视频| 视频在线在亚洲| 国产成人免费av在线| 欧美日韩精品欧美日韩精品一综合| 欧美精品一区二区久久久| 亚洲欧美怡红院| 另类成人小视频在线| 不卡影院免费观看| 日韩一区二区在线观看视频 | 国产精品盗摄一区二区三区| 亚洲综合偷拍欧美一区色| 看片网站欧美日韩| 91视频观看视频| xfplay精品久久| 亚洲国产日韩综合久久精品|