天气与日历 切换到窄版

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

遗传算法C++实现

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
遗传算法是美国的J.Holland教授和他的学生于1975年受生物进化论的启发而提出并建立发展起来的。现在在诸多研究领域都有其应用。

主要涉及TSP求解问题;后来研究者的改进遗传算法也有很多。

遗传算法借鉴的是生物进化过程,遵循“适者生存”的规律。流程大概如下:



Step1
输入:种群大小、染色体长度、交叉概率、变异概率、停止规则

Step2
初始化种群

Step3
计算个体适应度

Step4
选择操作

Step5
交叉操作

Step6
变异操作



关于Step5和Step6,也有很多改进规则。
[code]#define POP_SIZE 600 // 群体大小
#define MAX_GEN 1000 // 最大迭代次数
#define PC 0.99                 // 交叉概率
#define PM 0.2                 // 变异概率
#define VariableNum 7 //
#define alpha 0.6         // 隐含的算法选择压力
[/code]

变异实现代码:

[code]void CAlgorithm::mutation(double x[POP_SIZE][VariableNum + 1])
{
        for (int i = 0; i < POP_SIZE; i++)
        {
                for (int j = 0; j < VariableNum; j++)
                {
                        if (rand() / 32767.0 < PM)
                        {
                                switch (rand()%3)
                                {
                                case 0:
                                {
                                        x[i][j] = Boundary[j][0] + (Boundary[j][1] - Boundary[j][0]) * rand() / 32767.0;
                                        break;
                                }
                                case 1:
                                {
                                        x[i][j] = x[i][j] + (Boundary[j][1] - x[i][j]) * rand() / 32767.0;
                                        break;
                                }
                                case 2:
                                {
                                        x[i][j] = Boundary[j][0] + (x[i][j] - Boundary[j][0]) * rand() / 32767.0;
                                        break;
                                }
                                default:
                                        break;
                                }
                        }
                }
        }
}[/code]

 

 

 

 

遗传算法C++实现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 10:34 , Processed in 0.112149 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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