遗传算法导论

时间:2011-12-29 05:20:38

标签: r genetic-algorithm

首先让我澄清一下,我已经看到了This Genetic Algorithm Resource个问题但它没有回答我的问题。

我正在做生物信息学项目。我必须获取有关细胞核磁共振谱(E.Coli)的数据,并找出细胞中存在的不同分子(代谢物)。

要做到这一点,我将在R语言中使用遗传算法。我没有时间阅读有关遗传算法的大书。哎呀!我甚至没有时间阅读小书。(这是linked question没有回答的内容)

所以我需要知道哪些资源可以帮助我快速了解遗传算法的作用以及它们是如何做到的。我已经阅读了Wikipedia entrythis webpage以及有关该主题的几篇IEEE论文。

R中的任何工作代码(即使在C中)或指向要使用的R模块(如果有)的指针都会有所帮助。

3 个答案:

答案 0 :(得分:10)

遗传算法的简要(和见解)介绍在http://www.burns-stat.com/pages/Tutor/genetic.html

用{R}编写的简单GA可以在http://www.burns-stat.com/pages/Freecode/genopt.R获得。“文档”在'S Poetry'http://www.burns-stat.com/pages/Spoetry/Spoetry.pdf和代码中。

答案 1 :(得分:4)

我从您的问题中假设您有一些函数F(metabolites),它产生spectrum,但您没有反函数F'(spectrum)来返回metabolitesmetabolites的搜索空间很大,而不是蛮力,你想尝试一种近似的方法(如遗传算法)来进行更有效的随机搜索。

为了应用任何此类近似方法,您必须定义一个评分函数,该函数比较目标光谱和试验光谱之间的相似性。此功能越平滑,搜索功能越好。如果它只能产生真/假,它将是一个纯粹的随机搜索,你最好用蛮力。

鉴于F和你的分数(又称健身)功能你需要做的就是构建一组可能的代谢组合,通过F运行它们,对所有得到的光谱进行评分,然后使用交叉和变异来产生一个结合了最佳候选人的新人口。选择如何进行交叉和变异通常是特定于域的,因为您可以通过避免创建无意义的基因组来大大加快过程。最佳突变率将非常小,但也需要针对您的域进行调整。

在不了解您的域名的情况下,我无法说出您的群体中的单个成员应该是什么样子,但它可能只是一个代谢物列表(允许排序和重复,如果这很有趣)或一串布尔值所有可能的代谢物的价值(具有顺序不变的优点,并且产生交叉和突变的明显可能性)。该串具有以下缺点:过滤掉无义基因可能成本更高(例如,仅具有1种代谢物或超过1000种可能没有意义)。避免产生无意义而不仅仅是将其赋予低适应性更快。

如果您拥有F和评分功能,还有其他近似方法。最简单的可能是Simulated Annealing。另一个我没有尝试过的是Bees Algorithm,它似乎是多启动模拟退火,通过适应度加权(SA和GA之间的交叉)。

答案 2 :(得分:1)

我发现了Peter J. Denning撰写的文章“计算科学:遗传算法”(American Scientist, vol 80, 1, pp 12-14)。如果您想了解遗传算法的作用,那么这篇文章很简单,也很有用,而且只有3页需要阅读!!