君子不器分享 http://blog.sciencenet.cn/u/foreverph

博文

演化计算:基于面向对象设计的认知(1)

已有 1358 次阅读 2021-6-14 02:07 |个人分类:算法|系统分类:科研笔记

自2003年暑假学习演化计算后,也曾尝试学习一下一个基本的遗传算法,但一直没有进行下去,觉得太复杂了。

其实简单的遗传算法描述是容易理解的,只是一些用C语言写的代码太复杂,让人一看就不想再学了。像写一个“Hello,world”一样写智能算法,这一直是我想要的。

2020年寒假20多天的居家,总算静下心来,终于完成了遗传算法的Java实现,此后继续学习了6个演化算法,觉得有所收获,在此分享。

面向对象的软件工程是为解决“软件危机”而提出的,而基于面向对象设计的遗传算法,自然极大降低了学习的难度。

以求解一个一元函数的极大值为例:

1)个体,即问题的可能解。它是我们研究的对象,个体类包含属性为:编码串,自变量的最大、小值,码长;方法有:个体构建器、解码器、计算适度器。(该个体类其他多个智能算法同样可用)

2)种群,由个体对象通过组合机制构成,简单的说就是个体的数组。种群类中的属性为:个体的父代数组,个体的子代数组,交叉率,变异率;包括方法:初始化方法、选择算子、交叉算子、变异算子和集成器(算子组合)。

3)主类,创建一个种群类的实例,通过迭代多次输出最优适度个体即可。





https://blog.sciencenet.cn/blog-260510-1291054.html

上一篇:孩子的教育现状
下一篇:演化计算:基于面向对象设计的认知(2)
收藏 IP: 111.121.89.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-11 14:05

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部