简单介绍
由于《自然计算》课程布置了一道关于遗传算法的编程题,所以大概花了四天时间来学习遗传算法的基本概念、程序设计流程、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<<