开学了,各种忙起来了。
上一篇介绍了AForge.NET在人工神经网络上的一点点使用,但是老觉不过瘾。matlab用着实在不习惯,就又琢磨了一下进化计算。
进化计算简介
进化计算算不上新的方法了,已经有大量研究人员作出了努力,这导致了大量的进化计算算法出现。他们不仅研究算法本身,还致力于扩大算法的应用范围。
众所周知,现实世界存在大量复杂问题,它们中一部分无法用常规方法在合理的时间内获得精确解,而另一部分甚至没有行之有效的解决方案。
最著名的例子就是TSP问题,该问题意在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。
而进化计算可以应用于这些问题,因为大多数情况下这类问题允许我们在合理时间内给出较优解。
进化计算并不能保证找到特定问题的最佳解决方案,但是可以找到一个很好的解决办法,该方案可能是非常接近的最佳解决方案。
进化算法的分支和运用
进化计算是一些算法的统称,主要包括Genetic Algorithms (GA遗传算法), Genetic Programming (GP遗传规划) 和 Gene Expression Programming (GEP基因表达式编程)。
进化算法主要可以解决以下类别问题:
1.函数优化
2.符号回归
3.时间序列预测
4.旅行商问题
遗传算法简介
Genetic Algorithms(遗传算法)最早由John Holland基于进化观点在1960提出。从那时起相关研究不断进行。
大部分研究成果运用到很多领域,并取得了很好的效果。虽然遗传算法的历史悠久,但是目前还是不断有新的方法被提出,扩宽了运用领域。
遗传算法基于达尔文的“适者生存”理论和遗传学机理的生物进化过程。算法作用于每一代的基因,而每个基因都是问题的可能解。
一般遗传算法的运用有以下4个步骤:
1.随机选择个体,并进行交叉
2.变异
3.计算适应度
4.选择下一个世代的个体
算法的停止条件一般是指定的迭代数目完成或者得到一个可靠解。
交叉算法中最简单的单点交叉,即随机选择两个基因的一个点,交换两个基因的一部分。
| 基因1:0 |



















