• 大小: 4.65MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-07
  • 语言: C/C++
  • 标签: 蚁群算法  

资源简介

蚁群算法C++实现

资源截图

代码片段和文件信息

#include  
#include  
#include  
using namespace std;  
  
//该程序是以蚁群系统为模型写的蚁群算法程序(强调:非蚂蚁周模型),以三个著名的TSP问题为测试对象  
//通过微调参数,都可以获得较好的解  
  
  
//----------(3)问题三:Elion75 城市 TSP 问题 best_length = 542.31;  
//该程序最好的结果是542.309,可运行多次获得   
//城市节点数目  
#define N 75  
//城市坐标  
double C[N][2]={  
{625} {743} {956} {1070} {1128}  
{1217} {1238} {155} {1514} {1556}  
{1619} {1764} {2030} {2148} {2145}  
{2136} {2253} {2222} {2629} {2613}  
{2659} {2724} {2939} {3050} {3020}  
{3060} {3176} {3334} {3344} {3551}  
{3516} {3560} {366} {3626} {3833}   
{4037} {4066} {4060} {4020} {4146}  
{4326} {4413} {4542} {4535} {4766}  
{4821} {5030} {5040} {5050} {5070}  
{504} {5015} {5142} {5226} {5438}  
{5410} {5534} {5545} {5550} {5565}  
{5557} {5520} {5772} {595} {6015}  
{6257} {6248} {6235} {6224} {644}  
{6527} {6614} {668} {6741} {7064}  
};  
//----------上面参数是固定的,下面的参数是可变的-----------  
//蚂蚁数量  
#define M 75  
//最大循环次数NcMax  
int NcMax =1000;  
///////////////////
double alpha = 2;//信息启发因子,信息素的重要程度
double beta = 5;//期望启发式因子,城市间距离的重要程度
double rou = 0.1; //全局信息素挥发参数
double alpha1 = 0.1;//局部信息素挥发参数
double qzero = 0.1; //状态转移公式中的q0  
//-----------问题三结束------------------------------------------------------------------------  
  
  
//===========================================================================================================  
//局部更新时候使用的的常量,它是由最近邻方法得到的一个长度  
//什么是最近邻方法?:)就是从源节点出发,每次选择一个距离最短的点来遍历所有的节点得到的路径  
//每个节点都可能作为源节点来遍历  
double Lnn;  
//矩阵表示两两城市之间的距离  
double allDistance[N][N];  
  
//计算两个城市之间的距离  
double calculateDistance(int i int j)  
{  
    return sqrt(pow((C[i][0]-C[j][0])2.0) + pow((C[i][1]-C[j][1])2.0));  
}  
  
//由矩阵表示两两城市之间的距离  
void calculateAllDistance()  
{  
    for(int i = 0; i < N; i++)  
    {  
        for(int j = 0; j < N; j++)  
        {  
            if (i != j)  
            {   
                allDistance[i][j] = calculateDistance(i j);  
                allDistance[j][i] = allDistance[i][j];  
            }  
        }  
    }  
}  
  
//获得经过n个城市的路径长度  
double calculateSumOfDistance(int* tour)  
{  
    double sum = 0;  
    for(int i = 0; i< N ;i++)  
    {  
        int row = *(tour + 2 * i);  
        int col = *(tour + 2* i + 1);  
        sum += allDistance[row][col];  
    }  
    return sum;  
}  
  
class ACSAnt;  
  
class AntColonySystem  
{  
private:      
    double info[N][N] visible[N][N];//节点之间的信息素强度节点之间的能见度  
public:   
    AntColonySystem()  
    {  
    }  
    //计算当前节点到下一节点转移的概率  
    double Transition(int i int j);      
    //局部更新规则  
    void UpdateLocalPathRule(int i int j);   
    //初始化  
    void InitParameter(double value);     
    //全局信息素更新  
    void UpdateGlobalPathRule(int* bestTour int globalBestLength);  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-03-22 19:51  yiqunsuanfa\
     目录           0  2016-08-18 10:21  yiqunsuanfa\Debug\
     文件       47104  2017-02-14 16:06  yiqunsuanfa\Debug\yiqunsuanfa.exe
     文件      477864  2017-02-14 16:06  yiqunsuanfa\Debug\yiqunsuanfa.ilk
     文件      707584  2017-02-14 16:06  yiqunsuanfa\Debug\yiqunsuanfa.pdb
     目录           0  2017-03-22 19:14  yiqunsuanfa\ipch\
     目录           0  2017-03-22 19:14  yiqunsuanfa\ipch\yiqunsuanfa-214c0696\
     文件    15335424  2017-03-22 19:14  yiqunsuanfa\ipch\yiqunsuanfa-214c0696\yiqunsuanfa-fc1bebe0.ipch
     目录           0  2016-07-23 20:57  yiqunsuanfa\yiqunsuanfa\
     目录           0  2017-03-22 19:17  yiqunsuanfa\yiqunsuanfa\Debug\
     文件       40174  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\CL.read.1.tlog
     文件        1774  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\CL.write.1.tlog
     文件        2922  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\cl.command.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link-cvtres.read.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link-cvtres.write.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.1132-cvtres.read.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.1132-cvtres.write.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.1132.read.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.1132.write.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.12788-cvtres.read.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.12788-cvtres.write.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.12788.read.1.tlog
     文件           2  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.12788.write.1.tlog
     文件        6638  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.command.1.tlog
     文件       13914  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.read.1.tlog
     文件        3762  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\link.write.1.tlog
     文件        1734  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\mt.command.1.tlog
     文件        1546  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\mt.read.1.tlog
     文件         470  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\mt.write.1.tlog
     文件        2482  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\rc.command.1.tlog
     文件        1434  2017-02-14 16:06  yiqunsuanfa\yiqunsuanfa\Debug\rc.read.1.tlog
............此处省略19个文件信息

评论

共有 条评论