c++ 简单的遗传算法实现

本文介绍了作者在学习遗传算法过程中,通过阅读《c++ primer》和参考网上的程序,实现了一个简单的C++遗传算法。文章详细讲解了算法流程,包括编码、终止条件、种群管理以及轮盘赌选择策略。在实现过程中,作者遇到了如何将十进制转换为二进制、选择合适的数据结构存储种群以及轮盘赌算法的应用等问题,并给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单介绍

由于《自然计算》课程布置了一道关于遗传算法的编程题,所以大概花了四天时间来学习遗传算法的基本概念、程序设计流程、c++编程实现。在学习过程中,也遇到了不少问题,通过自己不断的分析思考,查阅书籍(《c++ primer》解决一些成员函数使用的问题)和结合网上的一些已有程序(a href=”http://blog.youkuaiyun.com/ilikeprograming/article/details/25702861”),使得问题一一解决。

算法流程如下:
遗传算法流程

代码块

实现代码如下:
main.cpp

/********************************************************* 
Copyright: zhangchao 
Author: superman
Date: 2016-10-28 
Description: 遗传算法求解最优值
Function: f(x1,x2)=21.5+x1*sin(4*Pi*x1)+x2*sin(20*Pi*x2)
Range: x1[-3,12.1],x2[4.1,5.8]
**********************************************************/ 
#include "geneticAlgorithm.h"

//#define MaxGen 5

int main(int argc,char *argv[])
{       
    multimap<double,double> m_mapData;
    m_mapData.insert(make_pair(-2.687969,5.361653));
    m_mapData.insert(make_pair(0.474101,4.170144));
    m_mapData.insert(make_pair(10.419457,4.661461));
    m_mapData.insert(make_pair(6.159951,4.109598));
    m_mapData.insert(make_pair(-2.301286,4.477282));
    m_mapData.insert(make_pair(11.788084,4.174346));
    m_mapData.insert(make_pair(9.342067,5.121702));
    m_mapData.insert(make_pair(-0.330256,4.694977));
    m_mapData.insert(make_pair(11.671267,4.873501));
    m_mapData.insert(make_pair(11.446273,4.171908));
    srand( unsigned( time(0) ) );//srand(time(NULL)); 产生随机数

    cout<<"----------------------------------------------------------------------------------------------------"<<endl;
    cout<<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值