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

📄 mapclass.h

📁 一个很好的蚁群算法程序,我读研的时候写的.
💻 H
字号:

#include <iostream>
#include <fstream>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>

using namespace std;

const int iCityNumber=52;
double dRou=0.9;

typedef struct {

	int iCityIndex;
	double dcoordinate_x;
	double dcoordinate_y;
}City;

double  rnd(double low,double uper)
{
	double p = (rand()/(double)RAND_MAX)*((uper)-(low))+(low);
	return p;
};


class MapInfo {
private:
	City A_citys[iCityNumber];
	double w_dCityDistance[iCityNumber][iCityNumber];
	double w_dPheromone[iCityNumber][iCityNumber];

public:	

	double w_dDeltaPheromone[iCityNumber][iCityNumber];

	MapInfo(){
	
		for(int i=0; i<iCityNumber;i++)
			for(int j=0;j<iCityNumber;j++){
			
				w_dPheromone[i][j]=1.0;
                w_dDeltaPheromone[i][j]=0.0;

			}
	}
    
	void clear(){

		for(int i=0; i<iCityNumber;i++)
			for(int j=0;j<iCityNumber;j++){
			
				w_dPheromone[i][j]=1.0;
               

			}
	

	}
	void ReadCityInfo()
	{
	//	cout<<"Map.ReadCityInfo()"<<endl;
		ifstream in("BERLIN52.TXT");
		for(int i=0;i<iCityNumber;i++)
		{
			in>>A_citys[i].iCityIndex>>A_citys[i].dcoordinate_x>>A_citys[i].dcoordinate_y;
		//	cout<<A_citys[i].iCityIndex<<" "<<A_citys[i].dcoordinate_x<<" "<<A_citys[i].dcoordinate_y<<endl;
		}
		in.close();
		computeDistance();

	}
	void computeDistance()
	{
	//	cout<<"Map.computeDistance()"<<endl;
		for(int i=0;i<iCityNumber;i++)
			for(int j=0;j<iCityNumber;j++)
			{
				w_dCityDistance[i][j]=sqrt(pow(A_citys[i].dcoordinate_x-A_citys[j].dcoordinate_x,2)+pow(A_citys[i].dcoordinate_y-A_citys[j].dcoordinate_y,2));
 
			}

	}

	double GetDistance(int i,int j){
	
	//	cout<<"Map.GetDistance()"<<endl;
		return w_dCityDistance[i][j];
	}

	double GetPheromone(int i,int j){

	   // cout<<"Map.GetPheromone()"<<endl;
		return w_dPheromone[i][j];
	}
	void LocalUpdating(int i,int j,double DeltaPheromon)
	{
		 
         w_dPheromone[i][j]=dRou*w_dPheromone[i][j]+(1-dRou)*DeltaPheromon;//(1-dRou)*;
         w_dPheromone[j][i]=w_dPheromone[i][j];
	}

    void AddDeltaPheromone(int i,int j ,double DeltaPheromon){
	
       // cout<<"Map.AddDeltaPheromone()"<<endl;  
		w_dDeltaPheromone[i][j]+=DeltaPheromon;
	
	}

	void UpdatePheromone(){
	
	//	cout<<"Map.UpdatePheromone()"<<endl; 
		for(int i=0;i<iCityNumber;i++){
		
			for(int j=0;j<iCityNumber;j++)
			{
				w_dPheromone[i][j]=dRou*w_dPheromone[i][j]+w_dDeltaPheromone[i][j];
			}
		}
	
	}

	void ResetDeltaPheromone(){
	//cout<<"Map.ResetDeltaPheromone()"<<endl;
	
		for(int i=0;i<iCityNumber;i++)
			for(int j=0;j<iCityNumber;j++){
			
				w_dDeltaPheromone[i][j]=0.0;	
			}
	}
	

};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -