91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 47KB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-01
  • 語言: C/C++
  • 標簽: 蟻群算法??

資源簡介

基于蟻群算法的機器人路徑規劃C語言代碼

資源截圖

代碼片段和文件信息

#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();?

//設置螞蟻走過的地方為地圖初始狀態
for?(int?i=0;i {
for?(int?j=0;j {
m_pMapAry[i][j]=g_pMapAry[i][j];
}
}

//加入起始點,并設置起始點為去過了
m_ptCurrent=g_ptStart;
m_tabuAry.Add(m_ptCurrent);?
m_pMapAry[m_ptCurrent.x][m_ptCurrent.y]=1;?

//設置完成搜索標志為false
m_blComplete=false;

?//螞蟻走過的路徑長度設置為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;
}

//選擇下一個點
//返回值?為點的坐標位置
CPoint?CAnt::ChooseNextCity()
{

CPoint?pt(-1-1);??//返回結果,先暫時把其設置為-1-1

//==============================================================================
//計算當前點和周圍8個點的信息素總和
//為了用循環進行處理,編碼方便,當前所在點也計算一下
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);?//取一個隨機數
for?(int?i=0;i<9;i++)
{
if?(prob[i]>=0)?//點可以去
{
dbTemp=dbTemp-prob[i];?//這個操作相當于轉動輪盤
if?(dbTemp?<=?0.0)?//輪盤停止轉動,記下點位置,直接跳出循環
{
nIndex=i;
break;
}

//保存第一個可以去的點
//如果沒有點選中就用這個點作為結果返回
if?(nIndexFirst?==?-1)?
{
nIndexFirst=i;
}
}
}

//如果經過上面操作沒有點被選中
//就把第一個可去的點作為結果返回
if?(nIndex?==?-1)
{
nInd

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????880??2011-06-16?21:05??Robot.sln

????..A..H.?????70144??2011-06-23?18:47??Robot.suo

?????文件??????11127??2011-06-23?14:47??Robot\Ant.cpp

?????文件????????949??2011-06-20?15:29??Robot\Ant.h

?????文件???????1516??2011-06-23?14:30??Robot\Common.cpp

?????文件???????2441??2011-06-23?14:36??Robot\Common.h

?????文件???????1426??2011-06-21?19:44??Robot\DlgNewMap.cpp

?????文件????????615??2011-06-21?19:30??Robot\DlgNewMap.h

?????文件??????13416??2011-06-23?18:45??Robot\MapView.cpp

?????文件???????1136??2011-06-23?18:39??Robot\MapView.h

?????文件???????7955??2011-01-19?20:07??Robot\MyButton.cpp

?????文件???????1250??2011-01-12?13:30??Robot\MyButton.h

?????文件???????2855??2011-06-16?21:05??Robot\ReadMe.txt

?????文件???????7734??2011-06-21?19:33??Robot\res\btnbmp.bmp

?????文件???????3126??2011-06-21?13:12??Robot\res\rbt.bmp

?????文件???????5430??2011-06-21?18:24??Robot\res\robot.ico

?????文件????????361??2011-06-16?21:05??Robot\res\Robot.rc2

?????文件???????1592??2011-06-23?16:26??Robot\resource.h

?????文件???????1636??2011-06-16?21:05??Robot\Robot.cpp

?????文件????????435??2011-06-16?21:05??Robot\Robot.h

?????文件???????6561??2011-06-23?16:28??Robot\Robot.rc

?????文件???????6628??2011-06-21?19:03??Robot\Robot.vcproj

?????文件??????13427??2011-06-23?16:28??Robot\RobotDlg.cpp

?????文件???????1623??2011-06-23?16:26??Robot\RobotDlg.h

?????文件????????136??2011-06-16?21:05??Robot\stdafx.cpp

?????文件???????2508??2011-06-16?21:13??Robot\stdafx.h

?????文件???????4597??2011-06-23?14:48??Robot\Tsp.cpp

?????文件????????364??2011-06-23?13:41??Robot\Tsp.h

?????目錄??????????0??2011-06-21?19:03??Robot\res

?????目錄??????????0??2011-06-23?18:47??Robot

............此處省略3個文件信息

評論

共有 條評論