||
在前面的(1-4)节中,主要是快速引入一个简单演化算法的应用例子,并提供可实践的完整代码让有兴趣的爱好者学习,这也是我们认为对演化计算的研究起点应该从实践开始。
前面的(1-4)是基于面向对象设计的实践,为什么要基于面向对象?那是因为基于面向过程的程序设计是从机器的角度思考问题,程序由函数模块组成。而面向对象其实就是面向问题,以系统的观点看问题(系统是由若干要素以及要素之间的相互关系组成)。要素抽象为个体对象,多个对象构成种群关系,这样的认知就清楚了。
毛主席在反对本本主义中说:”没有调查,就没有发言权”。同样在我们的演化计算学习中可以这样说,没有编一个演化程序实践,谈演化计算太虚。当然,我们也需要演化计算的数学理论不断深入研究,对于指导设计和应用具有指导性作用。”实践、认识、再实践、再认识,这种形式,循环往返以至无穷,而实践和认识之每一循环的内容,都比较地进到了高一级的程度“,这是毛主席《实践论》中的论述,可以用来指导我们的学习。还记得第一次听康老师讲并行演化计算时问老师的话。问:”怎么才能学好遗传算法“,答:”你编一个程序实践就慢慢清楚了“。回想那时的问题好幼稚,但更惭愧的是对老师的建议没有去践行,一直停留在”知“上,而没有”行“。”知行合一“,王阳明的哲学思想不得不让人叹服。”从哲学社会科学中汲取力量“,这对于我们IT行业同样如此。
当然,我们强调从实践开始是指在了解基本的算法原理基础上,而不是对代码毫不了解,只知道原样拷贝代码,机械运行,然后依然茫然。所以准确一点说是:先学,再思,必须用。这样才是学习之道。
完成一个演化程序的运行,了解每一行代码的作用后,我们可以思考很多:
1)编码:使用其他进制编码如何,更好还是更好还是更差?还有浮点数编码呢?
2)算子改进:轮盘赌选择之外的选择算子怎么样?交叉算子、变异的各种改进?还能设计什么算子...
3)运行环境:如何利用多核CPU进行并行计算,提高效率?
4)融合算法:GA与其他算法融合如何?
5)应用:如何用来解决其他问题?
......
空想误事,赶紧实践!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 13:47
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社