我的遗传算法哪里有问题

0 投票
1 回答
567 浏览
提问于 2025-04-17 15:19

我正在尝试理解遗传算法是怎么工作的。就像我学习其他东西一样,我试着自己写点东西;不过,我的知识非常有限,不太确定自己是否在正确的方向上。

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

如果能给我一些反馈,告诉我怎么提高自己的知识,那就太好了。

以下是代码:

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 个回答

2

你的代码没有实现 GeneticAlgorithm。我建议你先看看一个开源库,了解一下它是怎么工作的,然后再考虑自己实现(如果有必要的话)。

要有一个遗传算法,你需要以下几个部分:

1- 你想要最小化的目标函数。

2- 染色体的表示方式(比如实际数值),用来表示你目标函数中的决策变量。你的目标是找到最好的染色体,使得目标函数的值最小。

3- 一开始的染色体种群,用来开始你的搜索(可以随机生成)。

4- 遗传操作,比如选择、交叉和变异,这些操作会应用到当前的种群上,以便生成下一代。

5- 不断重复这个过程,直到达到停止的标准,比如最大代数或期望的适应度值。

这只是对遗传算法实现应该包含的内容的简单描述。

撰写回答