city.h

来自「蚁群算法TSP模型的ant-cycle算法实现 尽可能少的采用STL」· C头文件 代码 · 共 48 行

H
48
字号
#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 + =
减小字号Ctrl + -
显示快捷键?