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

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

?? mainfrm.cpp

?? 模擬退火優化旅行商問題,付城市坐標!vC++代碼!
?? CPP
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//

#include "stdafx.h"
#include "TspSA.h"
#include "TspSADoc.h"
#include "TspSAView.h"
#include "math.h"
#include "MainFrm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

//似乎必須放在下面,如果把這些全局變量定義放在最頂處則報錯 why?
std::vector<SYCity> vecCitys;						//城市列表
std::vector<SYCityDistance> vecCityDistances;		//城市距離列表
int CityNumber = 0;									//城市個數
double InitialTemperature = 0.0;					//初始溫度
int NowInnerIterNumber = 0;							//當前內循環迭代次數
BOOL IsComputing = FALSE;

/////////////////////////////////////////////////////////////////////////////
// CMainFrame

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	//{{AFX_MSG_MAP(CMainFrame)
	ON_WM_CREATE()
	ON_COMMAND(ID_FILE_OPEN, OnFileOpen)
	ON_COMMAND(ID_FILE_START, OnFileStart)
	ON_UPDATE_COMMAND_UI(ID_FILE_START, OnUpdateFileStart)
	ON_UPDATE_COMMAND_UI(ID_FILE_OPEN, OnUpdateFileOpen)
	ON_COMMAND(ID_APP_GETCODE, OnAppGetcode)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,           // status line indicator
};

/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction

CMainFrame::CMainFrame()
{
}

CMainFrame::~CMainFrame()
{
}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		TRACE0("Failed to create status bar\n");
		return -1;      // fail to create
	}
	
	if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
		!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
	{
		TRACE0("Failed to create toolbar\n");
		return -1;      // fail to create
	}

	m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
	EnableDocking(CBRS_ALIGN_ANY);
	DockControlBar(&m_wndToolBar);

	return 0;
}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	cs.style &= ~FWS_ADDTOTITLE;
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	m_strTitle = "www.huisoft.com.cn  模擬退火算法求解TSP問題";
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers

void CMainFrame::OnFileStart() 
{
	CTspSAView *pView = (CTspSAView*)GetActiveView();
	AfxBeginThread( SACompution, (LPVOID)pView );
}

void CMainFrame::OnUpdateFileStart(CCmdUI* pCmdUI) 
{
	if( vecCityDistances.empty() || IsComputing )
		pCmdUI->Enable(FALSE);
	else
		pCmdUI->Enable(TRUE);
}

void CMainFrame::OnUpdateFileOpen(CCmdUI* pCmdUI) 
{
	if( IsComputing )
		pCmdUI->Enable(FALSE);
	else
		pCmdUI->Enable(TRUE);
}

void CMainFrame::OnAppGetcode() 
{
	CString strTemp;
	strTemp.LoadString(IDS_HELP_HOMEPAGE);
	::ShellExecute(NULL, "open", strTemp, NULL, NULL, SW_SHOWNORMAL);	
}

void CMainFrame::OnFileOpen() 
{
	CString strFileName;
	char szFilter[200];
	strcpy( szFilter, "TXT Files (*.txt)|*.txt||" );
	CFileDialog *pFileDialog;
	pFileDialog = new CFileDialog( TRUE, 
								NULL, 
								NULL, 
								OFN_HIDEREADONLY,
								szFilter,
								this );
	if( IDOK == pFileDialog->DoModal() )
	{
		CTspSAView *pView = (CTspSAView*)GetActiveView();
		ClearSA();
		pView->ClearInfos();
		
		CString strValue, strTemp;
		strFileName = pFileDialog->GetPathName();
		CStdioFile DataFile( strFileName, CFile::modeRead );
		CString strReadString;
		int ncityindex = 1;
		while( DataFile.ReadString(strReadString) ) 
		{
			strReadString.TrimLeft();
			strReadString.TrimRight();

			CString cityName, citycodx, citycody;
			int nspace = 0;
			nspace = strReadString.Find(" ");
			if( nspace > 0 )
				cityName = strReadString.Left( nspace );

			strReadString = strReadString.Mid( nspace+1 );
			nspace = strReadString.Find(" ");
			if( nspace > 0 )
				citycodx = strReadString.Left( nspace );

			strReadString = strReadString.Mid( nspace+1 );
			citycody = strReadString;

			SYCity tmpCity;
			tmpCity.m_strName = "城市 "+cityName;
			tmpCity.m_nIndex = ncityindex;
			tmpCity.m_Coordinate.m_fcodx = atof( citycodx );
			tmpCity.m_Coordinate.m_fcody = atof( citycody );

			vecCitys.push_back( tmpCity );

			ncityindex++;
		}
		DataFile.Close();

		InitialSA();
		strTemp = "共讀入城市信息";
		strValue.Format("%d",CityNumber);
		strTemp += strValue;
		strTemp += "個";
		pView->AddString( strTemp );

		strTemp = "計算城市距離完成";
		pView->AddString( strTemp );
	}	

	delete pFileDialog;
}


double GetProbability(double dDelta,double dTemp)
{//一切玄機在此!!!
	return exp( - dDelta / dTemp );
}


UINT SACompution(LPVOID pParam)
{
	IsComputing = TRUE;
	double NowTemperature = InitialTemperature;//當前迭代溫度
	int nIndex(0),NowExternalIterNumber(0),NowInnerIterNumber(0);
	CString format,strTemp("開始計算.........");
	CTspSAView *pView = (CTspSAView*)pParam;
	HWND ViewHWND = pView->GetSafeHwnd();


	::SendMessage( ViewHWND, WYWM_INFOVIEWAPPENDINFO, (WPARAM)(&strTemp), (LPARAM)0 );
	SYRouter ResultRouter;
	double memLens = ResultRouter.m_fTotalDistance;//記憶優化路程

	srand( (unsigned)time( NULL ) );
	while(1)
	{
		strTemp = FormRouterString( ResultRouter );
		format.Format("溫度:%4.2f  次數: %2d,%2d;",NowTemperature,NowExternalIterNumber,nIndex);
		strTemp += format;
		::SendMessage( ViewHWND, WYWM_INFOVIEWAPPENDINFO, (WPARAM)(&strTemp), (LPARAM)0 );
		double dDelta = 0.0;
		
		if( NowTemperature <= 0.001 ) {break;}//判斷是否結束模擬退火
		while(1)
		{
			nIndex++;
			SYRouter SelRouter(ResultRouter.m_CityRouter);//求目標函數
			dDelta = (SelRouter.m_fTotalDistance-ResultRouter.m_fTotalDistance);
			if( dDelta < 0.0 ){
				ResultRouter = SelRouter;
				memLens = (memLens < SelRouter.m_fTotalDistance)?memLens:SelRouter.m_fTotalDistance;
			}
			else if(GetProbability(dDelta,NowTemperature) > (double)(rand() % 10000) / 10000.0){//隨機接受新解
				ResultRouter = SelRouter;	memLens = (memLens < SelRouter.m_fTotalDistance)?memLens:SelRouter.m_fTotalDistance;
			}
			if( NowInnerIterNumber <= CityNumber*CityNumber*CityNumber){NowInnerIterNumber++;}//判斷是否結束某一溫度下的內層循環
			else{break;}
		}		
		NowExternalIterNumber++;
		NowInnerIterNumber = 0;
		NowTemperature     *= 0.96;//計算外層循環的下降后的溫度
	}

	strTemp = "最終優化結果:";
	strTemp += FormRouterString( ResultRouter );
	::SendMessage( ViewHWND, WYWM_INFOVIEWAPPENDINFO, (WPARAM)(&strTemp), (LPARAM)0 );

	format.Format("記憶優化結果: 路程%.2f;",memLens);
	strTemp = format;
	::SendMessage( ViewHWND, WYWM_INFOVIEWAPPENDINFO, (WPARAM)(&strTemp), (LPARAM)0 );

	IsComputing = FALSE;
	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品女上位| 天堂在线亚洲视频| 亚洲国产综合色| 久久精品国产亚洲5555| 91在线视频免费91| 久久久久久久综合| 青青草原综合久久大伊人精品| 懂色av一区二区三区蜜臀| 69av一区二区三区| 亚洲综合色婷婷| 成人黄色小视频| 欧美精品一区二区三区一线天视频| 亚洲成人久久影院| 日本韩国精品在线| 国产精品色眯眯| 国产成人免费在线观看| 精品久久久久久久久久久院品网| 秋霞电影一区二区| 在线成人免费观看| 亚洲国产cao| 欧美三级日韩三级| 亚洲黄色免费网站| 91伊人久久大香线蕉| 国产精品热久久久久夜色精品三区 | 久久久青草青青国产亚洲免观| 亚洲大片精品永久免费| 欧美在线短视频| 亚洲一区二区三区美女| 欧美影院一区二区| 亚洲成精国产精品女| 在线看国产一区| 亚洲最色的网站| 欧美三级在线看| 肉丝袜脚交视频一区二区| 欧美精品一级二级| 免费看黄色91| 精品国产成人在线影院| 黄网站免费久久| 国产亚洲欧美在线| 不卡在线视频中文字幕| **性色生活片久久毛片| 色哟哟国产精品免费观看| 伊人色综合久久天天人手人婷| 色婷婷精品大在线视频| 午夜日韩在线观看| 日韩欧美精品三级| 国产一区亚洲一区| 成人免费在线播放视频| 欧美亚洲综合网| 日韩 欧美一区二区三区| 精品久久久久久久久久久久久久久久久 | 99久久精品国产一区二区三区 | 久久伊99综合婷婷久久伊| 国产乱码精品一区二区三| 国产精品国产a级| 欧美色视频一区| 美女www一区二区| 中文字幕乱码一区二区免费| 91在线国内视频| 日产欧产美韩系列久久99| 久久天天做天天爱综合色| 91麻豆精品在线观看| 三级成人在线视频| 国产精品久久夜| 欧美日韩国产成人在线免费| 国产精品一区在线| 亚洲国产一区二区视频| 久久尤物电影视频在线观看| 欧洲一区二区av| 国产高清久久久| 亚洲成人av免费| 国产精品久久三| 日韩丝袜情趣美女图片| 色哟哟亚洲精品| 国产一区二区看久久| 亚洲成av人片在线观看无码| 久久精品日韩一区二区三区| 欧美在线观看一二区| 国产美女精品人人做人人爽| 亚洲国产日韩在线一区模特| 久久精品人人爽人人爽| 欧美日韩国产乱码电影| 99热精品国产| 激情综合五月婷婷| 日韩专区欧美专区| 亚洲日本在线天堂| 久久久久久久网| 精品剧情v国产在线观看在线| 色丁香久综合在线久综合在线观看| 韩国成人精品a∨在线观看| 五月天丁香久久| 亚洲中国最大av网站| 国产精品电影院| 国产亚洲精品免费| 精品国产三级a在线观看| 欧美日韩精品一二三区| 91小视频在线免费看| 国产不卡视频在线播放| 狠狠色丁香九九婷婷综合五月| 日韩成人免费看| 亚欧色一区w666天堂| 亚洲自拍另类综合| 一区二区日韩电影| 亚洲欧美福利一区二区| 国产精品久久久久影视| 欧美高清在线一区二区| 久久日韩精品一区二区五区| 欧美成人aa大片| 日韩欧美专区在线| 日韩精品在线一区二区| 9191精品国产综合久久久久久| 91搞黄在线观看| 日本黄色一区二区| 欧美色图一区二区三区| 欧美日韩国产首页在线观看| 欧美日韩一区二区三区四区| 欧美亚洲动漫另类| 欧美亚洲国产bt| 欧美一区二区三区日韩视频| 3d动漫精品啪啪1区2区免费| 4438x亚洲最大成人网| 日韩三级av在线播放| 久久综合国产精品| wwwwww.欧美系列| 欧美激情在线一区二区三区| 国产精品乱人伦| 亚洲美女偷拍久久| 亚洲成av人影院| 麻豆91在线播放免费| 国产伦理精品不卡| 成人av动漫在线| 欧美在线免费观看亚洲| 91精品国产aⅴ一区二区| 精品成人佐山爱一区二区| 国产日韩欧美精品一区| 成人欧美一区二区三区白人 | 国产精品成人免费| 亚洲激情综合网| 免费在线一区观看| 国产精品一区二区在线播放| 91视频在线看| 日韩你懂的在线播放| 国产欧美精品区一区二区三区 | 欧美日韩一区二区三区视频| 欧美一卡二卡在线| 国产欧美精品区一区二区三区| 亚洲色图20p| 久久精品99国产精品| voyeur盗摄精品| 91.com视频| 18成人在线观看| 男女性色大片免费观看一区二区 | 国产精品区一区二区三| 亚洲尤物在线视频观看| 狠狠色丁香婷综合久久| 在线视频一区二区三区| 久久久亚洲高清| 亚洲图片自拍偷拍| 国产成人av一区二区三区在线| 在线观看国产一区二区| 久久久久久久久久久久久久久99| 亚洲一区二区三区四区在线观看 | 国产精品日韩成人| 日韩电影在线免费看| 不卡在线观看av| 精品国产欧美一区二区| 夜夜嗨av一区二区三区中文字幕 | 激情丁香综合五月| 欧美图片一区二区三区| 国产精品三级av在线播放| 玖玖九九国产精品| 欧洲精品视频在线观看| 国产精品青草综合久久久久99| 蜜桃久久av一区| 在线播放日韩导航| 夜夜嗨av一区二区三区四季av | 91精品国产综合久久婷婷香蕉| 中文字幕在线观看一区| 黄色小说综合网站| 欧美一区二区三区在线电影| 亚洲欧美日韩系列| 成人午夜大片免费观看| 日韩精品一区二区三区视频在线观看| 亚洲综合视频网| 色噜噜狠狠成人网p站| 国产精品妹子av| 国产伦精品一区二区三区免费| 欧美精品一卡二卡| 亚洲国产一区二区在线播放| 9人人澡人人爽人人精品| 国产日韩欧美一区二区三区综合| 久久精品99国产精品| 日韩亚洲欧美一区二区三区| 丝袜亚洲另类丝袜在线| 欧美日韩视频在线第一区| 亚洲综合无码一区二区| 欧美午夜片在线观看| 婷婷国产v国产偷v亚洲高清| 精品视频1区2区| 天堂va蜜桃一区二区三区漫画版|