📄 mapclass.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 + -