资源简介
简单蚁群算法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个文件信息
相关资源
- C++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
评论
共有 条评论