一个封装遗传算法基本操作的类

来源:互联网 发布:淘宝如何进货 编辑:程序博客网 时间:2024/06/11 02:06

      最近一直在做项目的最后一部分,关于优化的问题,我用遗传算法进行了优化计算,现在终于算是搞定了。下面首先简单的介绍一下遗传算法,然后给出我对遗传算法基本操作封装的一个类,最后给出如何使用这个类的一个工程例子。

      遗传算法是一种现代优化算法,是根据生物进化思想而得出的一种全局优化算法。生物的进化是一个奇妙的优化过程,它通过基因遗传,基因杂交,基因变异等规律产生适应环境变化的优良物种。它是一种模拟生物进化过程的一种全局寻优的方法。由于它具有很多的优点,如:随机性较大,不需要精确的规则;容易形成通用的算法;收敛速度快等等,因此在现代优化计算中,使用遗传算法的频率是很高的。

    使用遗传算法求解一个具体的问题时,一般要经过以下几个步骤:编码(常用的有0-1编码)、种群初始化、选择操作、交叉操作、变异操作等。其中前两个操作会随着具体的问题不同而有所不同,而后面的三个操作基本上是相同的。而后面的三个操作是遗传算法的核心操作,主要是为了产生新一代种群。下面就针对遗传算法的基本操作作了一个简单的封装,具体的代码如下:

.h头文件:

.cpp文件:

    这个类封装了遗传算法的基本操作,使用这个类的对象可以进行种群初始化(给出了染色体长度),选择操作,交叉操作,变异操作以及查找种群中最佳和最差个体等。由于,计算个体的适应度值会随着具体问题的不同而有所不同,在本类中没有给出计算适应度值的成员函数。下面是一个运用此操作类进行遗传算法计算的工程例子,运行效果如下图所示:(这个工程在我的资源中可以下载)

     主对话框 参数设定对话框

以下是这个工程的具体代码:

主对话框代码:

重设遗传算法参数的对话框:

原创粉丝点击