📄 city.h
字号:
#ifndef CTIY_Z
#define CITY_Z
const size_t NUMOFCITY(30);//蚂蚁的数量和城市的数量不再相同 按照论文的观点
const size_t NUMOFANTS(10);
//这一点在实际应用的是否允许 与问题相关
//初始信息素c(tao0)可能是个小常数 也就是c可能是个常数 待确定
//并且发现c取值为1.0/(n*Lnn)是最好...............................Lnn待定...........
class city
{//假设蚂蚁的个数和城市的个数相同
double alpha;//全局更新中的消散系数
double beta;//状态转移规则中先验信息的相对重要程序
double q0;//状态转移中的参数
double p;//局部更新中的消散系数
double c;//初始时的后验信息素浓度
size_t NCMAX;//迭代次数
double preInfo[NUMOFCITY][NUMOFCITY];
double posInfo[NUMOFCITY][NUMOFCITY];
// double tmpInfo[NUMOFCITY][NUMOFCITY];
double shortestSibling[NUMOFCITY];//就是ACS中的Lnn
double cityCoor[NUMOFCITY][2];
ant antSet[NUMOFANTS];
double shortestPathFinal;//历史最短路径
size_t shortestPath[NUMOFCITY];//历史最短路径的路径图
public:
city():alpha(0.1),beta(2),p(0.1),q0(0.9),c(2),NCMAX(2500),shortestPathFinal(100000){}
bool Init();
void Run();
void RunCycle();
void ReSet();
void ShowShortestPath();
//使用内联 以及const 引用是为了进行优化
inline double ProbTrans(const double & pos,
const double & pre,const double & beta);
double ProbTransSum(const vector <size_t > &,
const size_t & curCity,const double & beta );
bool AntInRoute(const size_t &i,const size_t &j,
const vector<size_t>::const_iterator & first,
const vector<size_t>::const_iterator & last);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -