📄 city.h
字号:
#ifndef CTIY_Z
#define CITY_Z
#include <limits>
using namespace std;
const size_t NUMOFCITY(30);//也可以根据数据决定个数 但是那时需要new申请 效率可能有影响
const size_t NUMOFANT(15);
class city
{
double alpha;//状态转移规则中后沿信息的相对重要程序
double beta;//状态转移规则中先验信息的相对重要程序
double p;//消散系数
size_t Q;//常量 释放信息素
double c;//初始时的后验信息素浓度
size_t NCMAX;//迭代次数
double preInfo[NUMOFCITY][NUMOFCITY];
double posInfo[NUMOFCITY][NUMOFCITY];
double tmpInfo[NUMOFCITY][NUMOFCITY];
double cityCoor[NUMOFCITY][2];
//假定蚂蚁个数=城市个数 否则可以使用new进行动态申请
ant antSet[NUMOFANT];
double shortestPathFinal;
size_t shortestPath[NUMOFCITY];
public:
city():alpha(1),beta(5),p(0.5),Q(100),c(2),NCMAX(500),shortestPathFinal(numeric_limits<double>::max())
{
}
bool Init();
void Run();
void RunCycle();
void ReSet();
void ShowShortestPath();
//使用内联 以及const 引用是为了进行优化
inline double ProbTrans(const double & pos,const double & alphaV,
const double & pre,const double & beta);
double ProbTransSum(const vector <size_t > &,
const size_t & curCity,const double & alphaV,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 + -