資源簡介
資源包括詳細的代碼和注釋,代碼由VS2005 編寫,附有可執(zhí)行文件和源代碼。附有說明文檔可供參考。

代碼片段和文件信息
#include?“StdAfx.h“
#include?“.\ant.h“
CAnt::CAnt(void)
{
m_pMapAry=Create2DArray(N_MAX_MAP_WIDTHN_MAX_MAP_HEIGHT);
}
CAnt::~CAnt(void)
{
Free2DArray(m_pMapAryN_MAX_MAP_WIDTH);
}
void?CAnt::Init()
{
//清空螞蟻走的路徑
m_tabuAry.RemoveAll();?
//設(shè)置螞蟻走過的地方為地圖初始狀態(tài)
for?(int?i=0;i {
for?(int?j=0;j {
m_pMapAry[i][j]=g_pMapAry[i][j];
}
}
//加入起始點,并設(shè)置起始點為去過了
m_ptCurrent=g_ptStart;
m_tabuAry.Add(m_ptCurrent);?
m_pMapAry[m_ptCurrent.x][m_ptCurrent.y]=1;?
//設(shè)置完成搜索標(biāo)志為false
m_blComplete=false;
?//螞蟻走過的路徑長度設(shè)置為0
m_dbPathLength=0.0;
}
//檢查從(x0y0)到(xy)是否允許
bool?CAnt::CheckXY(int?x0int?y0int?xint?y)
{
//越界
if?((x<0)?||?(x>=N_MAP_WIDTH))
{
return?false;
}
//越界
if?((y<0)?||?(y>=N_MAP_HEIGHT))
{
return?false;
}
//該位置是障礙或者去過了
if?((m_pMapAry[x][y]?==?BARRIER)?||?(m_pMapAry[x][y]?==?MOVED))
{
return?false;
}
//如果沒有越界且位置為空,要檢查如果是斜穿,斜穿點的兩邊是否有障礙
if?((x-x0?==?-1)?&&?(y-y0?==-1))?//新位置在左上角
{
if?((m_pMapAry[x+1][y]?==?BARRIER)?&&?(m_pMapAry[x][y+1]?==?BARRIER))
{
return?false;
}
}
if?((x-x0?==?1)?&&?(y-y0?==-1))?//新位置在右上角
{
if?((m_pMapAry[x-1][y]?==?BARRIER)?&&?(m_pMapAry[x][y+1]?==?BARRIER))
{
return?false;
}
}
if?((x-x0?==?-1)?&&?(y-y0?==1))?//新位置在左下角
{
if?((m_pMapAry[x][y-1]?==?BARRIER)?&&?(m_pMapAry[x+1][y]?==?BARRIER))
{
return?false;
}
}
if?((x-x0?==?1)?&&?(y-y0?==1))?//新位置在右下角
{
if?((m_pMapAry[x-1][y]?==?BARRIER)?&&?(m_pMapAry[x][y-1]?==?BARRIER))
{
return?false;
}
}
//上面都不返回,則可以到達
return?true;
}
//選擇下一個點
//返回值?為點的坐標(biāo)位置
CPoint?CAnt::ChooseNextCity()
{
CPoint?pt(-1-1);??//返回結(jié)果,先暫時把其設(shè)置為-1-1
//==============================================================================
//計算當(dāng)前點和周圍8個點的信息素總和
//為了用循環(huán)進行處理,編碼方便,當(dāng)前所在點也計算一下
double?dbTotal=0.0;
double?prob[9]={-1-1-1-1-1-1-1-1-1};?//?保存城市被選中的概率
int?nIndex=-1;
int?nCount=0;?//周圍有幾個點可以去
for?(int?x=m_ptCurrent.x-1;x<=m_ptCurrent.x+1;x++)
{
for?(int?y=m_ptCurrent.y-1;y<=m_ptCurrent.y+1;y++)
{
nIndex++;
if?(CheckXY(m_ptCurrent.xm_ptCurrent.yxy)?==?true)
{
prob[nIndex]=g_pMapTrail[x][y]/(g_pMapLen[x][y]*g_pMapLen[x][y]);
dbTotal=dbTotal+prob[nIndex];
nCount++;
}
}
}
//周圍沒有點可以去,則直接返回
if?(nCount?==0)
{
return?pt;
}
////==============================================================================
//對周圍點進行輪盤選擇
nIndex=-1;?//記錄周圍那個點被選擇
int?nIndexFirst=-1;?//記錄第一個可以去的點
double?dbTemp=rnd(0.0dbTotal);?//取一個隨機數(shù)
for?(int?i=0;i<9;i++)
{
if?(prob[i]>=0)?//點可以去
{
dbTemp=dbTemp-prob[i];?//這個操作相當(dāng)于轉(zhuǎn)動輪盤
if?(dbTemp?<=?0.0)?//輪盤停止轉(zhuǎn)動,記下點位置,直接跳出循環(huán)
{
nIndex=i;
break;
}
//保存第一個可以去的點
//如果沒有點選中就用這個點作為結(jié)果返回
if?(nIndexFirst?==?-1)?
{
nIndexFirst=i;
}
}
}
//如果經(jīng)過上面操作沒有點被選中
//就把第一個可去的點作為結(jié)果返回
if?(nIndex?==?-1)
{
nInd
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1105920??2010-04-12?11:53??機器人路徑規(guī)劃\可執(zhí)行文件\mfc80.dll
?????文件?????632656??2010-04-12?11:53??機器人路徑規(guī)劃\可執(zhí)行文件\msvcr80.dll
?????文件??????77824??2011-06-28?14:59??機器人路徑規(guī)劃\可執(zhí)行文件\Robot.exe
?????文件??????11127??2011-06-23?14:47??機器人路徑規(guī)劃\源代碼\Robot\Ant.cpp
?????文件???????1343??2011-06-28?14:59??機器人路徑規(guī)劃\源代碼\Robot\Ant.h
?????文件???????1516??2011-06-28?08:40??機器人路徑規(guī)劃\源代碼\Robot\Common.cpp
?????文件???????2835??2011-06-28?14:59??機器人路徑規(guī)劃\源代碼\Robot\Common.h
?????文件???????1426??2011-06-21?19:44??機器人路徑規(guī)劃\源代碼\Robot\DlgNewMap.cpp
?????文件????????615??2011-06-21?19:30??機器人路徑規(guī)劃\源代碼\Robot\DlgNewMap.h
?????文件??????13416??2011-06-23?18:45??機器人路徑規(guī)劃\源代碼\Robot\MapView.cpp
?????文件???????1136??2011-06-23?18:39??機器人路徑規(guī)劃\源代碼\Robot\MapView.h
?????文件???????7955??2011-01-19?20:07??機器人路徑規(guī)劃\源代碼\Robot\MyButton.cpp
?????文件???????1250??2011-01-12?13:30??機器人路徑規(guī)劃\源代碼\Robot\MyButton.h
?????文件???????2855??2011-06-16?21:05??機器人路徑規(guī)劃\源代碼\Robot\ReadMe.txt
?????文件???????7734??2011-06-21?19:33??機器人路徑規(guī)劃\源代碼\Robot\res\btnbmp.bmp
?????文件???????3126??2011-06-21?13:12??機器人路徑規(guī)劃\源代碼\Robot\res\rbt.bmp
?????文件???????5430??2011-06-21?18:24??機器人路徑規(guī)劃\源代碼\Robot\res\robot.ico
?????文件????????361??2011-06-16?21:05??機器人路徑規(guī)劃\源代碼\Robot\res\Robot.rc2
?????文件???????1592??2011-06-23?16:26??機器人路徑規(guī)劃\源代碼\Robot\resource.h
?????文件???????1636??2011-06-16?21:05??機器人路徑規(guī)劃\源代碼\Robot\Robot.cpp
?????文件????????435??2011-06-16?21:05??機器人路徑規(guī)劃\源代碼\Robot\Robot.h
?????文件???????6561??2011-06-23?16:28??機器人路徑規(guī)劃\源代碼\Robot\Robot.rc
?????文件???????6628??2011-06-21?19:03??機器人路徑規(guī)劃\源代碼\Robot\Robot.vcproj
?????文件??????13427??2011-06-23?16:28??機器人路徑規(guī)劃\源代碼\Robot\RobotDlg.cpp
?????文件???????1623??2011-06-23?16:26??機器人路徑規(guī)劃\源代碼\Robot\RobotDlg.h
?????文件????????136??2011-06-16?21:05??機器人路徑規(guī)劃\源代碼\Robot\stdafx.cpp
?????文件???????2508??2011-06-16?21:13??機器人路徑規(guī)劃\源代碼\Robot\stdafx.h
?????文件???????4867??2011-06-28?13:45??機器人路徑規(guī)劃\源代碼\Robot\Tsp.cpp
?????文件????????811??2011-06-28?14:59??機器人路徑規(guī)劃\源代碼\Robot\Tsp.h
?????文件????????880??2011-06-16?21:05??機器人路徑規(guī)劃\源代碼\Robot.sln
............此處省略10個文件信息
評論
共有 條評論