我的遗传算法有什么问题

时间:2013-02-09 04:57:40

标签: python algorithm genetic-algorithm genetic

我试图了解遗传算法的工作原理。就像我通过尝试在我身上写东西而学到的一切;然而,我的知识非常有限,我不确定我是否正确地做到这一点。

这个算法的目的是看看,如果有一半的人已经被感染,那么一半的牛群会感染疾病需要多长时间。这只是我想到的一个例子,所以我不确定这是否是一个可行的例子。

关于如何提高我的知识的一些反馈会很好。

以下是代码:

import random

def disease():
    herd = []
    generations = 0
    pos = 0
    for x in range(100):
        herd.append(random.choice('01'))
    print herd
    same = all(x == herd[0] for x in herd)
    while same == False:
        same = all(x == herd[0] for x in herd)
        for animal in herd:
            try:
                if pos != 0:
                    after = herd[pos+1]
                    before = herd[pos-1]
                    if after == before and after == '1' and before == '1' and animal == '0':
                        print "infection at", pos
                        herd[pos] = '1'
            #print herd
                pos += 1
            except IndexError:
                pass
        pos = 0
        generations += 1
        random.shuffle(herd)
        #print herd
    print "Took",generations,"generations to infect all members of herd."
if __name__ == "__main__":
    disease()

1 个答案:

答案 0 :(得分:2)

您的代码未实现GeneticAlgorithm。我建议你先从一个开源库开始,在你实现自己的(如果需要的话)

之前了解它是如何工作的

要获得遗传算法,您需要以下内容:

1-您尝试最小化的目标函数

2-染色体表示(例如实际值),用于对目标函数中的决策变量进行建模。您的目标是找到最小化目标函数的最佳染色体

3-开始搜索的初始染色体群(可以是随机的)

4-遗传算子,即适用于当前人群以进入下一代的选择,交叉和变异

5-迭代,直到达到停止标准,例如最大生成数或所需适合度值

这只是遗传算法实现应该具有的简要描述。