資源簡介
這是一個連續域的蟻群算法,界面友好,便于操作,里面有逆波蘭轉換代碼。

代碼片段和文件信息
#include?“StdAfx.h“
#include?“.\ant.h“
CAnt::CAnt(void)
{
}
CAnt::~CAnt(void)
{
}
void?CAnt::Init()
{
//清空螞蟻走的路徑
memset(m_nPath0sizeof(m_nPath));
//設置評估值為0
m_dbVal=0.0;
//已經去過的節點數量設置為0
m_nMovedNodeCount=0;?
}
//選擇下一個節點
//返回值?為節點編號
int?CAnt::ChooseNextNode()
{
int?nSelectedNode=-1;?//返回結果,先暫時把其設置為-1
//==============================================================================
//計算所在列總的信息素
double?dbTotal=0.0;
for?(int?i=0;i<=N_SPLIT_COUNT;i++)
{
dbTotal=dbTotal+?g_Trial[m_nMovedNodeCount][i];
}
//==============================================================================
//輪盤選擇
double?dbTemp=0.0;
if?(dbTotal?>?0.0)?//總的信息素值大于0
{
dbTemp=rnd(0.0dbTotal);?//取一個隨機數
for?(int?i=0;i<=N_SPLIT_COUNT;i++)
{
dbTemp=dbTemp-g_Trial[m_nMovedNodeCount][i];?//這個操作相當于轉動輪盤,如果對輪盤選擇不熟悉,仔細考慮一下
if?(dbTemp?0.0)?//輪盤停止轉動,記下節點編號,直接跳出循環
{
nSelectedNode=i;
break;
}
}
}
//==============================================================================
//返回結果
return?nSelectedNode;
}
void?CAnt::Move()
{
int?nCityNo=ChooseNextNode();?//選擇下一個節點
m_nPath[m_nMovedNodeCount]=nCityNo;?//螞蟻走的路徑
m_nMovedNodeCount++;?//已經去過的節點數量
}
//搜索一次
void?CAnt::Search()
{
Init();
while?(m_nMovedNodeCount? {
Move();
}
Eval();
}
//評估螞蟻求得的方程解
void?CAnt::Eval()
{
int?i=0;
m_dbVal=0.0;
//根據選擇的路徑,計算各個變量的值
double?dbX[N_MAX_X_COUNT];
for?(i=0;i {
dbX[i]=g_XAry[i].dbLow+(g_XAry[i].dbUpper-g_XAry[i].dbLow)*((double)m_nPath[i])/((double)N_SPLIT_COUNT);
}
//得到函數值
CString?strX=““;
CString?strXValue=““;
CString?strExp=““;
strExp.Format(“%s“g_cFunExp);
for?(i=N_X_COUNT;i>=1;i--)
{
strX.Format(“x%d“i);
strXValue.Format(“%.10f“dbX[i-1]);
strXValue.Replace(“-““!“);
strExp.Replace(strXstrXValue);
}
m_dbVal=g_fun.Cal(strExp);
//m_dbVal=func(dbX);
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????2168??2011-10-20?19:54??antfunc\Ant.cpp
?????文件????????448??2011-10-20?19:54??antfunc\Ant.h
?????文件???????1540??2011-10-20?19:54??antfunc\antfunc.clw
?????文件???????2077??2011-10-20?19:54??antfunc\antfunc.cpp
?????文件????????454??2011-10-20?19:54??antfunc\antfunc.dep
?????文件???????4580??2011-10-20?19:54??antfunc\antfunc.dsp
?????文件????????520??2011-10-20?19:54??antfunc\antfunc.dsw
?????文件???????1335??2011-10-20?19:54??antfunc\antfunc.h
?????文件???????8352??2011-10-20?19:54??antfunc\antfunc.mak
?????文件??????50688??2011-10-20?19:54??antfunc\antfunc.opt
?????文件???????2396??2011-10-20?19:54??antfunc\antfunc.plg
?????文件????????879??2011-10-20?19:54??antfunc\antfunc.sln
????..A..H.?????32256??2011-10-20?20:05??antfunc\antfunc.suo
?????文件???????8900??2011-10-20?19:54??antfunc\antfunc.vcproj
?????文件???????1821??2011-10-20?19:54??antfunc\Common.cpp
?????文件???????6872??2011-10-20?19:54??antfunc\Fun.cpp
?????文件???????2724??2011-10-20?19:54??antfunc\Fun.h
?????文件???????3597??2011-10-20?19:54??antfunc\ReadMe.txt
?????文件???????1078??2011-10-20?19:54??antfunc\res\antfunc.ico
?????文件????????399??2011-10-20?19:54??antfunc\res\antfunc.rc2
?????文件???????1093??2011-10-20?19:54??antfunc\resource.h
?????文件????????209??2011-10-20?19:54??antfunc\StdAfx.cpp
?????文件???????1073??2011-10-20?19:54??antfunc\StdAfx.h
?????文件???????6018??2011-10-20?19:54??antfunc\Tsp.cpp
?????文件????????708??2011-10-20?19:54??antfunc\Tsp.h
?????文件???????8784??2011-10-20?20:01??antfunc\Release\BuildLog.htm
?????文件???28114944??2011-10-20?20:01??antfunc\Release\antfunc.pch
?????文件?????527360??2011-10-20?20:01??antfunc\Release\vc90.idb
?????文件??????16552??2011-10-20?19:54??antfunc\Release\StdAfx.obj
?????文件??????25545??2011-10-20?20:01??antfunc\Release\Ant.obj
............此處省略22個文件信息
評論
共有 條評論