⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 city.h

📁 蚁群算法 控制台程序 基于类 不是基本的TSP模型的ant-cycle算法 而是蚁群系统 ant colony system算法
💻 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 + -