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

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

?? sacode.cpp

?? 從其它網(wǎng)站上下載的用VC++編制的模擬退火算法求解TSP問(wèn)題的源代碼
?? 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免费精品国自产拍在线不卡| 欧美日韩免费观看一区二区三区 | 欧美军同video69gay| 亚洲一区二区精品久久av| 精品视频999| 日本视频免费一区| 久久综合色鬼综合色| 国产高清久久久| 亚洲免费av在线| 欧美日韩一区精品| 美女精品自拍一二三四| 久久综合一区二区| 9i在线看片成人免费| 亚洲影院免费观看| 欧美岛国在线观看| 成人av电影在线播放| 亚洲一区二区三区四区的| 欧美一级高清大全免费观看| 国产精品中文欧美| 亚洲欧美激情一区二区| 在线播放中文字幕一区| 国产精品资源站在线| 亚洲欧美色图小说| 日韩一区二区在线观看| 成人听书哪个软件好| 亚洲va欧美va国产va天堂影院| 精品欧美一区二区三区精品久久| 成人综合在线观看| 亚洲国产va精品久久久不卡综合| 精品国产91乱码一区二区三区| 成人h动漫精品一区二| 日韩激情一二三区| 国产精品三级av| 555www色欧美视频| 成人精品视频一区| 蜜臀av国产精品久久久久| 国产精品久久久久久久久搜平片 | 蜜臀va亚洲va欧美va天堂| 国产日产欧美一区| 51精品久久久久久久蜜臀| 不卡的av电影| 久久国产欧美日韩精品| 亚洲三级小视频| 精品播放一区二区| 欧美精选一区二区| 波多野结衣精品在线| 经典一区二区三区| 性做久久久久久久免费看| 国产精品久久久久毛片软件| 欧美一区二区三区视频在线| 色综合久久66| 成人精品小蝌蚪| 激情综合一区二区三区| 午夜在线电影亚洲一区| 亚洲欧美日韩国产另类专区| 国产区在线观看成人精品 | 日韩欧美一级二级三级| 在线视频一区二区三区| 成人午夜电影小说| 国产一区二区伦理片| 日韩成人免费在线| 亚洲国产视频直播| 亚洲裸体xxx| 亚洲欧洲av色图| 国产精品理伦片| 亚洲国产高清不卡| 国产欧美精品国产国产专区| 欧美精品一区二区在线观看| 日韩一区二区三区免费看| 欧美精品色一区二区三区| 色综合久久88色综合天天免费| av午夜一区麻豆| aaa国产一区| 成人18视频在线播放| 成人动漫一区二区三区| 成人黄色免费短视频| 成人性生交大合| 国产成人精品在线看| 国产精品一二三区在线| 国产成人午夜精品5599| 国产盗摄一区二区| 成人免费看视频| 99在线热播精品免费| 99热在这里有精品免费| 一本色道**综合亚洲精品蜜桃冫 | 亚洲欧美日韩国产中文在线| 亚洲视频一区二区在线| 亚洲精品国产a| 亚洲一区二区三区四区五区中文 | 宅男在线国产精品| 日韩三级av在线播放| 精品999在线播放| 久久精品亚洲一区二区三区浴池| 国产亚洲女人久久久久毛片| 国产精品三级电影| 一区二区成人在线| 亚洲aⅴ怡春院| 精品一区二区三区在线观看| 国产精品99久久久久久宅男| 成人黄页毛片网站| 欧美亚洲动漫另类| 日韩一级成人av| 国产女人aaa级久久久级| 中文字幕日韩一区二区| 亚洲成人av一区| 久久福利资源站| 成人黄色777网| 欧洲一区二区三区在线| 日韩一区二区三区在线| 国产欧美视频在线观看| 亚洲一区二区三区中文字幕| 久久99国产精品久久| av在线不卡观看免费观看| 在线不卡的av| 久久久精品国产免费观看同学| 亚洲品质自拍视频网站| 蜜臀精品一区二区三区在线观看 | 精品在线观看免费| 粉嫩绯色av一区二区在线观看 | 大白屁股一区二区视频| 欧美视频日韩视频在线观看| 国产亚洲人成网站| 亚洲一区在线观看视频| 国产毛片一区二区| 欧美性受极品xxxx喷水| 国产亚洲一二三区| 天天av天天翘天天综合网色鬼国产| 国产精品一区一区| 欧美视频第二页| 国产精品嫩草99a| 久久精品国产99国产| 色婷婷av一区| 国产欧美日韩亚州综合| 日韩av电影天堂| 色综合久久综合网欧美综合网 | 国产精品九色蝌蚪自拍| 免费精品视频最新在线| 91视频免费播放| 国产人伦精品一区二区| 日本欧美在线看| 欧美性猛交xxxx黑人交| 国产精品家庭影院| 国产精品影视在线观看| 日韩欧美专区在线| 亚洲成人一区二区| 日本精品视频一区二区三区| 26uuu久久天堂性欧美| 日韩av一区二| 欧美日韩国产a| 亚洲永久精品大片| 91美女片黄在线观看| 中文字幕精品综合| 国产高清在线精品| 精品国产三级电影在线观看| 日韩专区一卡二卡| 欧美乱妇20p| 午夜精品成人在线| 欧美日韩在线一区二区| 亚洲自拍偷拍av| 91福利小视频| 亚洲综合网站在线观看| 91视频国产资源| 亚洲老妇xxxxxx| 91免费在线视频观看| 日韩理论片在线| 97久久超碰精品国产| 最新中文字幕一区二区三区| 成人精品国产福利| 中文字幕在线视频一区| 99九九99九九九视频精品| 国产精品美女久久久久av爽李琼 | 日韩欧美国产精品| 精品影视av免费| 久久九九99视频| 成人丝袜视频网| 亚洲精品免费一二三区| 色婷婷一区二区三区四区| 一区二区三区免费网站| 在线视频欧美精品| 午夜亚洲福利老司机| 欧美一区在线视频| 精品一区二区三区的国产在线播放| 久久伊人蜜桃av一区二区| 高清beeg欧美| 亚洲人成影院在线观看| 欧美日韩国产区一| 蜜臀久久久久久久| 国产亚洲婷婷免费| 色综合一区二区| 三级欧美在线一区| 欧美精品一区二区三区久久久| 国产sm精品调教视频网站| 亚洲欧美乱综合| 9191久久久久久久久久久| 久久国产尿小便嘘嘘| 欧美国产丝袜视频| 在线观看日韩高清av| 美女网站视频久久| 国产欧美一区二区精品婷婷|