潘峰
演化计算:基于实践的认知(5)
2021-6-27 11:06
阅读:1600

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


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


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


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


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

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

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

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

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

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

......

空想误事,赶紧实践!



转载本文请联系原作者获取授权,同时请注明本文来自潘峰科学网博客。

链接地址:https://wap.sciencenet.cn/blog-260510-1292971.html?mobile=1

收藏

分享到:

当前推荐数:0
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?