• 大小: 4.41MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-14
  • 语言: C/C++
  • 标签: 蚁群算法  c++  

资源简介

简单蚁群算法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 < cityNum; 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 < cityNum; i++)
{
if (tabooTable.at(i) == 1)
{
ptemp = transtion(currentCity i info visible allCity);
sum += ptemp;
}
}
for (int i = 0; i < cityNum; 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 < cityNum; 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个文件信息

评论

共有 条评论