天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 54|回复: 0

TSP_GA(旅行商问题_遗传算法)

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
#ifndef _GA_H_
#define _GA_H_
        #define CITY_NUM 10                                // TSP_城市个数
        #define GROUP_NUM 30                                // 群体规模
        #define SON_NUM 32                                // 产生儿子的个数        SON_NUM = GROUP_NUM + 2

        const double P_INHERIATANCE = 0.01;        // 变异概率
        const double P_COPULATION = 0.8;        // 杂交概率
        const int ITERATION_NUM = 5500;                // 遗传次数(迭代次数)
        const double MAX_INT = 9999999.0;

        typedef struct{
                int vex_num, arc_num;                        // 顶点数 边数
                int vexs[CITY_NUM];                        // 顶点向量
                double arcs[CITY_NUM][CITY_NUM];        // 邻接矩阵
        }Graph;

        typedef struct{
                double length_path;
                int path[CITY_NUM];
                double P_Reproduction;
        }TSP_solution;

        TSP_solution TSP_Groups[GROUP_NUM];                // 存储群体
        TSP_solution Son_solution[SON_NUM];                // 存储杂交后的个体
        int Length_SonSoliton = 0;                        // 遗传产生的孩子的个数
        TSP_solution BEST;

        void CreateGraph(Graph &G);
        void InitialGroup(Graph G);
        double CalculateLength(Graph G,TSP_solution newSolution);
        void TSP_Evolution(Graph G);        // 模拟生物进化 - 解决TSP问题       

        int Evo_Select(Graph G);                // 选择函数
        void Evo_Cross(Graph G, TSP_solution TSP_Father, TSP_solution TSP_Mother);        // 杂交函数
        void Evo_Variation(Graph G, int Index_Variation);        // 变异函数
        void Evo_UpdateGroup(Graph G);
        void TSP_Evaluate(Graph G);                // TSP - 评价函数       

        int *Get_Conflict(int Conflict_Father[], int Conflict_Mother[], int Length_Cross, int &Length_Conflict);        // 返回冲突的数组
        TSP_solution Handle_Conflict(Graph G, TSP_solution ConflictSolution, int *Detection_Conflict, int *Model_Conflict, int Length_Conflict);        // 解决冲突

        void Calc_Probablity(Graph G, double total_length);        // 计算概率
        bool Check_path(Graph G, TSP_solution CurrentSolution);
        void Display(Graph G);
        void Dis_BEST(Graph G);
#endif

 

 

 

 

TSP_GA(旅行商问题_遗传算法)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:36 , Processed in 0.157340 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表