我的遗传算法哪里有问题
我正在尝试理解遗传算法是怎么工作的。就像我学习其他东西一样,我试着自己写点东西;不过,我的知识非常有限,不太确定自己是否在正确的方向上。
这个算法的目的是想看看如果一半的群体已经感染了疾病,那么另一半被感染的时间会有多长。这只是我脑海中想到的一个例子,所以我不确定这个例子是否真的可行。
如果能给我一些反馈,告诉我怎么提高自己的知识,那就太好了。
以下是代码:
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- 不断重复这个过程,直到达到停止的标准,比如最大代数或期望的适应度值。
这只是对遗传算法实现应该包含的内容的简单描述。