資源簡介
簡單蟻群算法C++代碼

代碼片段和文件信息
#include?“Ant.h“
Ant::Ant(double?lnnint?startcityint?citynum)
{
startCity?=?startcity;
cityNum?=?citynum;
Lnn?=?lnn;
}
Ant::~Ant()
{
}
//選擇下一節點
int?Ant::chooseNextCity(multimap?&info?multimap?&visible?vector?&allCity)
{
int?nextCity?=?-1;
double?q?=?rand()?/?(double)RAND_MAX;
//double?q?=?double(rand()?%?1000)?/?double(1000);
if?(q?<=?qzero)
{
//先驗規則選擇
double?pmax?=?-1;//最大概率
//double?p?=?-1;//轉移到某城市的概率
for?(int?i?=?0;?i? {
if?(tabooTable.at(i)?==?1)
{
double?p?=?transtion(currentCity?i?info?visible?allCity);
if?(p>pmax)
{
pmax?=?p;
nextCity?=?i;
}
}
}
}
else
{
//輪盤賭的方式選擇
double?p?=?double(rand()?%?1000)?/?double(1000);
double?sum?=?0;
double?ptemp?=?0;
//構建輪盤
for?(int?i?=?0;?i? {
if?(tabooTable.at(i)?==?1)
{
ptemp?=?transtion(currentCity?i?info?visible?allCity);
sum?+=?ptemp;
}
}
for?(int?i?=?0;?i? {
if?(tabooTable.at(i)?==?1?&&?sum>0)
{
ptemp?+=?transtion(currentCity?i?info?visible?allCity)/sum;
//命中
if?(ptemp?>=?p?||?(ptemp?>?0.99999999?&&?p?>?0.99999999))
{
nextCity?=?i;
break;
}
}
}
}
return?nextCity;
}
//轉移到某節點的概率
double?Ant::transtion(int?i?int?j?multimap?&info?multimap?&visible?vector?&allCity)
{
double?p?=?0;
if?(i?==?j)
p?=?0;
else
//轉移到下一節點的概率
//p?=?pow(info.find(CityPair(allCity.at(currentCity)?allCity.at(i)))->second?alpha)*pow(visible.find(CityPair(allCity.at(currentCity)?allCity.at(i)))->second?beta);
p?=?pow(info.find(CityPair(allCity.at(i)?allCity.at(j)))->secondalpha)*pow(visible.find(CityPair(allCity.at(i)?allCity.at(j)))->secondbeta);
return?p;
}
//移動到下一節點
void?Ant::moveToNextCity(int?nextCity)
{
tabooTable.at(nextCity)?=?0;
path.push_back(currentCity);
currentCity?=?nextCity;
}
//螞蟻搜索行為
vector?Ant::search(multimap?&info?multimap?&visible?vector?&allCity)
{
//每次搜索前重置禁忌表
tabooTable.clear();
//清空路徑
path.clear();
//禁忌表初始化為1(即1為沒有走過,0為走過)
tabooTable.resize(cityNum?1);
currentCity?=?startCity;
int?nextCity?=?startCity;
int?endCity?=?startCity;
tabooTable.at(currentCity)?=?0;
//time_t?t;
//srand((unsigned)time(&t));//srand函數是隨機數發生器的初始化函數,不用的話每次產生同樣的隨機數
for?(int?i?=?0;?i? {
endCity?=?currentCity;
nextCity?=?chooseNextCity(info?visible?allCity);
if?(nextCity?>=?0)
{
update(currentCity?nextCityinfoallCity);
moveToNextCity(nextCity);
}
}
moveToNextCity(startCity);
update(currentCity?startCity?infoallCity);
return?path;
}
//局部信息素更新
void?Ant::update(int?i?int?j?multimap?&info?vector?&allCity)
{
info.find(CityPair(allCity.at(i)?allCity.at(j)))->second?=?info.find(CityPair(a
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????..A..H.?????77312??2017-04-15?17:26??蟻群算法vision1.0\.vs\蟻群算法vision1.0\v14\.suo
?????文件?????224256??2017-04-14?17:59??蟻群算法vision1.0\Debug\蟻群算法vision1.0.exe
?????文件????1144104??2017-04-14?17:59??蟻群算法vision1.0\Debug\蟻群算法vision1.0.ilk
?????文件????2616320??2017-04-14?17:59??蟻群算法vision1.0\Debug\蟻群算法vision1.0.pdb
?????文件??????43520??2017-04-15?17:25??蟻群算法vision1.0\Release\蟻群算法vision1.0.exe
?????文件?????785049??2017-04-15?17:25??蟻群算法vision1.0\Release\蟻群算法vision1.0.iobj
?????文件?????198816??2017-04-15?17:25??蟻群算法vision1.0\Release\蟻群算法vision1.0.ipdb
?????文件????1011712??2017-04-15?17:25??蟻群算法vision1.0\Release\蟻群算法vision1.0.pdb
?????文件????????183??2017-04-15?17:26??蟻群算法vision1.0\蟻群算法vision1.0\30ProblemOutput.txt
?????文件???????3294??2017-04-15?17:26??蟻群算法vision1.0\蟻群算法vision1.0\Ant.cpp
?????文件???????1222??2017-04-15?17:24??蟻群算法vision1.0\蟻群算法vision1.0\Ant.h
?????文件???????2972??2017-04-15?16:40??蟻群算法vision1.0\蟻群算法vision1.0\AntControl.cpp
?????文件????????495??2017-04-15?11:31??蟻群算法vision1.0\蟻群算法vision1.0\AntControl.h
?????文件????????418??2017-04-10?11:59??蟻群算法vision1.0\蟻群算法vision1.0\City.cpp
?????文件????????307??2017-04-10?11:59??蟻群算法vision1.0\蟻群算法vision1.0\City.h
?????文件???????3543??2017-04-15?11:24??蟻群算法vision1.0\蟻群算法vision1.0\CityControl.cpp
?????文件????????596??2017-04-14?17:56??蟻群算法vision1.0\蟻群算法vision1.0\CityControl.h
?????文件????????881??2017-04-10?15:38??蟻群算法vision1.0\蟻群算法vision1.0\CityPair.cpp
?????文件????????332??2017-04-10?14:51??蟻群算法vision1.0\蟻群算法vision1.0\CityPair.h
?????文件?????267199??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\Ant.obj
?????文件?????360587??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\AntControl.obj
?????文件???????7047??2017-04-14?16:15??蟻群算法vision1.0\蟻群算法vision1.0\Debug\City.obj
?????文件?????497260??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\CityControl.obj
?????文件???????8745??2017-04-14?16:15??蟻群算法vision1.0\蟻群算法vision1.0\Debug\CityPair.obj
?????文件?????424840??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\GreedCityControl.obj
?????文件?????388096??2017-04-12?09:52??蟻群算法vision1.0\蟻群算法vision1.0\Debug\vc120.idb
?????文件?????471040??2017-04-12?09:52??蟻群算法vision1.0\蟻群算法vision1.0\Debug\vc120.pdb
?????文件?????486400??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\vc140.idb
?????文件?????561152??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\vc140.pdb
?????文件?????493726??2017-04-14?17:59??蟻群算法vision1.0\蟻群算法vision1.0\Debug\源.obj
............此處省略51個文件信息
評論
共有 條評論