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

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

?? tspts.cpp

?? 用禁忌算法求解tsp(旅行商問(wèn)題)具有速度快
?? CPP
字號(hào):
//author: yinhui
//Date  : 2007.06.15

//TSPSA.cpp

#include "StdAfx.h"
#include "tspts.h"
#include <math.h>
#include <algorithm>

#define MAX_SAME 40

void TabuSearch::Init()
{
	srand((unsigned)time(NULL));
	//計(jì)算距離矩陣
	ComputeTotalDistace();
	CreateInitSolution(m_vecRouter);
}

void TabuSearch::ObtainParams(int nTabuLength, int nCandSize, int nIterCount, 
							 int nSameCount, VecCity vCitys, int nCityNum)
{
	m_nTabuLength = nTabuLength;
	m_nCandSize = nCandSize;
	m_nSameCount = nSameCount;
	m_nIterCount = nIterCount;
	m_vecCitys = vCitys;
	m_nCityNum = nCityNum;
}

void TabuSearch::CreateInitSolution(vecCityRouter& initRouter)
{
	for (int i=1; i<=m_nCityNum; i++)
	{
		initRouter.push_back(i);
		//m_vecRouter.push_back(i);
	}
	std::random_shuffle(initRouter.begin(), initRouter.end());
}

vecCityRouter TabuSearch::NextSolution()
{
	int fSwap, eSwap;
	vecCityRouter tempRouter;
	tempRouter = m_vecRouter;

	while (1)
	{
		fSwap = (rand()%m_nCityNum)-1;
		if (fSwap>=0)
			break;
	}

	while (1)
	{
		eSwap = (rand()%m_nCityNum)-1;
		if ((eSwap!=fSwap) && (eSwap>=0))
		{
			int temp = tempRouter[fSwap];
			int xx = tempRouter[eSwap];
			tempRouter[fSwap] = tempRouter[eSwap];
			tempRouter[eSwap] = temp;
			break;
		}
	}
	return tempRouter;
}

void TabuSearch::ComputeTotalDistace()
{
	std::vector<City>::iterator fCityIter;
	std::vector<City>::iterator eCityIter;

	Distance tempDist;

	for (fCityIter=m_vecCitys.begin(); fCityIter!=m_vecCitys.end(); fCityIter++)
	{
		for (eCityIter=m_vecCitys.begin(); eCityIter!=m_vecCitys.end(); eCityIter++)
		{
			ComputeDistance(*fCityIter, *eCityIter, tempDist);
			m_vecDistance.push_back(tempDist);
		}
	}
}

double TabuSearch::ComputeDistance(City& fCity, City& eCity, Distance& cityDist)
{
	double tempDist;

	float fCityX = fCity.m_corCity.m_fX;
	float fCityY = fCity.m_corCity.m_fY;
	float eCityX = eCity.m_corCity.m_fX;
	float eCityY = eCity.m_corCity.m_fY;

	tempDist = sqrt((fCityX-eCityX)*(fCityX-eCityX) +
		            (fCityY-eCityY)*(fCityY-eCityY));

	cityDist.m_nFromCity = fCity.m_nIndex;
	cityDist.m_nEndCity = eCity.m_nIndex;
	cityDist.m_fDist = (float)tempDist;

	return tempDist;
}

double TabuSearch::FindDistance(int fIndex, int eIndex)
{
	VecDistance::iterator tempIter;

	for (tempIter=m_vecDistance.begin(); tempIter!=m_vecDistance.end(); tempIter++)
	{
		if ((tempIter->m_nFromCity==fIndex) && (tempIter->m_nEndCity==eIndex))
		{
			return tempIter->m_fDist;
		}
	}
	return 0.0;
}

double TabuSearch::ComputeRouterDistance(vecCityRouter& curCityRou)
{
	vecCityRouter::iterator tempRouterIter;
	double allDist=0.0;

	for (tempRouterIter=curCityRou.begin(); tempRouterIter!=(curCityRou.end()-1); tempRouterIter++)
	{
		allDist += FindDistance(*tempRouterIter, *(tempRouterIter+1));
	}

	allDist += FindDistance(*(curCityRou.end()), *(curCityRou.begin()));
	return allDist;
}

float TabuSearch::GetNowDistance()
{
	float dist;
	dist = (float)ComputeRouterDistance(m_vecRouter);
	return dist;
}

float TabuSearch::DoOneSearch(float t)
{
	double currDist = ComputeRouterDistance(m_vecRouter);
	vecCityRouter nextRouter = NextSolution();
	double nextDist = ComputeRouterDistance(nextRouter);

	double random = (double)rand()/(double)RAND_MAX;
	if ((nextDist-currDist) < 1.0e-6)
	{
		m_vecRouter = nextRouter;
	}
	/*else if (exp((currDist-nextDist)/t) > random)
	{
		m_vecRouter = nextRouter;
	}*/
		
	return (float)nextDist;
}

void TabuSearch::TSPTabuSearch(CListBox *pLB)
{
	pLB->ResetContent();
	CString strDisplay, strValue;
	strDisplay = "城市個(gè)數(shù):";
	strValue.Format("%d\n", m_nCityNum);
	strDisplay += strValue;
	pLB->InsertString(0,strDisplay);

	int nIterCount = 0;    //對(duì)迭代次數(shù)計(jì)數(shù)
	int nSameCount = 0;    //對(duì)最優(yōu)解重復(fù)次數(shù)計(jì)數(shù)
	int nCandCount = 0;    //候選解總個(gè)數(shù)
	int i = 0;

	listTabuList tl;
	TabuListItem tlItem;

	double dNowDist = ComputeRouterDistance(m_vecRouter);
	tlItem.length = dNowDist;
	tlItem.count = MAXTABUCOUNT;
	tl.push_back(tlItem);

	vecCityRouter vecNextRouter;

	double dBestDist = dNowDist;
	double tempDist = 0;
	double countDist = dNowDist;    //記錄相同解

	
	strDisplay = "初始距離:";
	strValue.Format("%f\n", dBestDist);
	strDisplay += strValue;
	pLB->InsertString(0, strDisplay);
    //結(jié)束條件為迭代達(dá)到規(guī)定的次數(shù),或者出現(xiàn)相同解的次數(shù)達(dá)到規(guī)定的次數(shù)。
	while (nIterCount<m_nIterCount && nSameCount<m_nSameCount)
	{
		while (nCandCount<m_nCandSize)
		{
			nCandCount++;
            vecNextRouter = NextSolution();
			dNowDist = ComputeRouterDistance(vecNextRouter);

			listTabuList::iterator iterList;
			for (iterList=tl.begin(); iterList!=tl.end(); iterList++)
			{
				tempDist = iterList->length;
				if ((abs(dNowDist-tempDist)) < 1.0e-8)
				{//如果距離已在禁忌表中
					(iterList->count)--;
					if (iterList->count == 0)
					{//如果已滿(mǎn)足特赦條件
						tl.erase(iterList);
						nCandCount--;
					}
					break;
				}else
				{//如果距離不在禁忌表中
					tlItem.length = dNowDist;
					tlItem.count = MAXTABUCOUNT;

					if (tl.size() < m_nTabuLength)
					{//如果禁忌表未滿(mǎn)
						tl.push_back(tlItem);
					}
					else
					{//如果禁忌表已滿(mǎn),從表頭刪除一個(gè)元素
						tl.pop_front();
						tl.push_back(tlItem);
					}
				}
			}//end for (iterList=tl.begin(); iterList!=tl.end(); iterList++)

			//從候選集中選擇最優(yōu)解
			if (dNowDist < dBestDist)
			{//當(dāng)前解更憂(yōu)
				dBestDist = dNowDist;
				m_vecRouter = vecNextRouter;
			}
			strDisplay = "當(dāng)前最優(yōu)解:";
	        strValue.Format("%f\n", dBestDist);
	        strDisplay += strValue;
	        pLB->InsertString(0, strDisplay);

		}//end while (nCandCount<m_nCandSize)
		if (abs(countDist-dBestDist) < 1.0e-8)
		{//相同解又出現(xiàn)
			nSameCount++;
		}
		else
		{
			nSameCount = 0;
			countDist = dBestDist;
		}
		
		nIterCount++;
	}//end while (nIterCount<m_nIterCount && nSameCount<m_nSameCount)
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区久久不卡 | 亚洲欧美另类小说视频| 最新热久久免费视频| 亚洲最新视频在线观看| 日本sm残虐另类| 国产不卡免费视频| 欧美日韩视频专区在线播放| 精品人在线二区三区| 亚洲日本电影在线| 日本不卡的三区四区五区| 成人免费高清视频| 91精品在线麻豆| 国产精品情趣视频| 免费成人在线视频观看| 国产mv日韩mv欧美| 欧美日韩国产综合一区二区| 国产视频一区在线播放| 亚洲成人激情综合网| 国产麻豆91精品| 欧美肥妇free| 亚洲天堂a在线| 国产一区在线观看视频| 欧美午夜片在线看| 国产精品丝袜在线| 奇米综合一区二区三区精品视频| 99re8在线精品视频免费播放| 日韩午夜激情视频| 一区二区三区在线免费视频| 国产精品456| 538在线一区二区精品国产| 最近日韩中文字幕| 国产精一区二区三区| 欧美喷潮久久久xxxxx| 国产精品初高中害羞小美女文 | 日韩免费高清视频| 亚洲久草在线视频| 国产成人一区二区精品非洲| 欧美日韩国产综合视频在线观看| 国产精品久久久久久久岛一牛影视| 日韩国产高清在线| 91精品91久久久中77777| 国产视频一区二区在线观看| 免费成人av在线| 欧美探花视频资源| 亚洲欧美日韩电影| 99在线精品一区二区三区| 久久免费电影网| 激情欧美一区二区| 91精品国产色综合久久不卡电影 | 欧美日韩在线观看一区二区| 国产精品成人一区二区三区夜夜夜 | 成人性视频免费网站| 日韩精品一区二区三区视频播放 | 欧美日韩一级大片网址| 亚洲欧美偷拍另类a∨色屁股| 豆国产96在线|亚洲| 精品88久久久久88久久久| 久久精品国产一区二区三| 欧美一区二区在线视频| 五月激情丁香一区二区三区| 色先锋久久av资源部| 亚洲欧美日韩小说| 91丝袜美女网| 亚洲欧美日韩久久| 99久久伊人精品| 国产精品国产自产拍在线| 国产91精品欧美| 国产亚洲精品资源在线26u| 韩国女主播一区| 久久久一区二区| 国产精品夜夜嗨| 中文字幕乱码亚洲精品一区| 国产精品一区免费在线观看| 久久亚洲综合色| 国产伦精一区二区三区| 国产午夜精品久久久久久久| 国产mv日韩mv欧美| 日韩一区在线播放| 99国产精品久久久久久久久久久| 国产精品色一区二区三区| 成人aaaa免费全部观看| 亚洲人成小说网站色在线| 色激情天天射综合网| 亚洲午夜久久久久久久久电影院 | 男女激情视频一区| 欧美一级欧美一级在线播放| 免费高清视频精品| 久久久美女毛片| av亚洲产国偷v产偷v自拍| 亚洲人成网站影音先锋播放| 欧美中文一区二区三区| 视频一区中文字幕| 欧美videossexotv100| 国产精品影视天天线| 国产精品免费视频网站| 91福利资源站| 视频一区视频二区中文字幕| 日韩欧美的一区| 成人精品视频网站| 亚洲综合色丁香婷婷六月图片| 在线不卡免费欧美| 国精产品一区一区三区mba视频| 国产精品毛片a∨一区二区三区| 色噜噜偷拍精品综合在线| 日韩高清不卡在线| 久久九九久精品国产免费直播| 成人黄页毛片网站| 亚洲成人在线观看视频| 久久婷婷一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 日日夜夜免费精品| 国产网站一区二区| 在线精品视频一区二区| 蜜桃av一区二区三区| 国产精品久久久久天堂| 欧美精品黑人性xxxx| 国产福利一区在线观看| 亚洲一区二区三区中文字幕| 精品美女被调教视频大全网站| 成人美女视频在线观看18| 午夜精品在线视频一区| 国产欧美一区二区精品仙草咪| 色国产综合视频| 精品一区二区影视| 一区二区三区波多野结衣在线观看| 日韩午夜在线观看视频| 日本精品视频一区二区| 国产乱人伦偷精品视频免下载| 一区二区三区中文字幕在线观看| 久久综合久色欧美综合狠狠| 欧美亚洲动漫另类| 成人av在线影院| 激情都市一区二区| 香蕉av福利精品导航| 国产精品国产三级国产aⅴ原创 | 美日韩一级片在线观看| 国产精品久久久久久亚洲伦 | 国产一区二区精品在线观看| 亚洲第一会所有码转帖| 国产精品全国免费观看高清| 精品三级在线看| 精品视频999| 一本色道久久综合亚洲91| 国产v日产∨综合v精品视频| 老司机精品视频一区二区三区| 亚洲一二三专区| 一区二区中文视频| 国产日韩综合av| 日韩美女一区二区三区四区| 欧美日韩视频专区在线播放| 99免费精品在线观看| 国产高清精品在线| 激情丁香综合五月| 青草av.久久免费一区| 午夜影视日本亚洲欧洲精品| 亚洲乱码日产精品bd| 中文字幕乱码亚洲精品一区| 亚洲精品一区二区三区99| 欧美一二三区在线观看| 欧美日产国产精品| 欧洲国内综合视频| 99精品久久久久久| 丁香天五香天堂综合| 国产精品亚洲视频| 国产一区二区福利| 韩国v欧美v亚洲v日本v| 男女男精品网站| 日韩精品一二三区| 日韩av不卡一区二区| 日韩成人一级片| 男男gaygay亚洲| 天堂在线亚洲视频| 香蕉成人啪国产精品视频综合网| 亚洲一区在线观看视频| 亚洲综合色在线| 性做久久久久久久久| 亚洲高清三级视频| 亚洲国产成人精品视频| 亚洲午夜国产一区99re久久| 亚洲综合色自拍一区| 亚洲国产精品影院| 亚洲福利视频三区| 午夜视频一区二区三区| 亚洲成人资源网| 日本午夜精品视频在线观看| 日精品一区二区三区| 日韩影视精彩在线| 久久国产婷婷国产香蕉| 精久久久久久久久久久| 国产一本一道久久香蕉| 成人av网站免费观看| 成人ar影院免费观看视频| 色伊人久久综合中文字幕| 91国偷自产一区二区三区观看 | 午夜欧美在线一二页| 亚洲18女电影在线观看| 午夜精品爽啪视频| 久久精品国产久精国产爱| 激情五月婷婷综合网| 成人av网站免费观看|