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

博文

演化计算:基于实践的认知(5)

已有 1535 次阅读 2021-6-27 11:06 |个人分类:算法|系统分类:科研笔记

在前面的(1-4)节中,主要是快速引入一个简单演化算法的应用例子,并提供可实践的完整代码让有兴趣的爱好者学习,这也是我们认为对演化计算的研究起点应该从实践开始。


前面的(1-4)是基于面向对象设计的实践,为什么要基于面向对象?那是因为基于面向过程的程序设计是从机器的角度思考问题,程序由函数模块组成。而面向对象其实就是面向问题,以系统的观点看问题(系统是由若干要素以及要素之间的相互关系组成)。要素抽象为个体对象,多个对象构成种群关系,这样的认知就清楚了。


毛主席在反对本本主义中说:”没有调查,就没有发言权”。同样在我们的演化计算学习中可以这样说,没有编一个演化程序实践,谈演化计算太虚。当然,我们也需要演化计算的数学理论不断深入研究,对于指导设计和应用具有指导性作用。”实践、认识、再实践、再认识,这种形式,循环往返以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度“,这是毛主席《实践论》中的论述,可以用来指导我们的学习。还记得第一次听康老师讲并行演化计算时问老师的话。问:”怎么才能学好遗传算法“,答:”你编一个程序实践就慢慢清楚了“。回想那时的问题好幼稚,但更惭愧的是对老师的建议没有去践行,一直停留在”知“上,而没有”行“。”知行合一“,王阳明的哲学思想不得不让人叹服。”从哲学社会科学中汲取力量“,这对于我们IT行业同样如此。


当然,我们强调从实践开始是指在了解基本的算法原理基础上,而不是对代码毫不了解,只知道原样拷贝代码,机械运行,然后依然茫然。所以准确一点说是:先学,再思,必须用。这样才是学习之道。


完成一个演化程序的运行,了解每一行代码的作用后,我们可以思考很多:

1)编码:使用其他进制编码如何,更好还是更好还是更差?还有浮点数编码呢?

2)算子改进:轮盘赌选择之外的选择算子怎么样?交叉算子、变异的各种改进?还能设计什么算子...

3)运行环境:如何利用多核CPU进行并行计算,提高效率?

4)融合算法:GA与其他算法融合如何?

5)应用:如何用来解决其他问题?

......

空想误事,赶紧实践!





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

上一篇:演化计算:基于面向对象设计的认知(4)
下一篇:演化计算:以变异为主导的演化(6)
收藏 IP: 111.121.92.*| 热度|

0

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

数据加载中...

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

GMT+8, 2024-4-26 14:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部