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

📄 city.h

📁 蚁群算法TSP模型的ant-cycle算法实现 尽可能少的采用STL
💻 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 + -