我正在尝试理解遗传算法是如何工作的。就像我通过尝试在我的博客上写些东西来学到的一样;然而,我的知识非常有限,我不确定我这样做是否正确。
这个算法的目的是看看如果一半的人已经感染了疾病,那么这个群体中的一半人需要多长时间才能感染疾病。这只是我在脑海中想出的一个例子,所以我不确定这是不是一个可行的例子。
一些关于我如何提高知识的反馈将是很好的。
代码如下:
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()发布于 2013-02-09 13:49:19
您的代码不实现GeneticAlgorithm。我建议你先从一个开源库开始,了解它是如何工作的,然后再实现你自己的(如果需要的话)
要使用遗传算法,您需要具备以下条件:
1-要最小化的目标函数
对目标函数中的决策变量进行建模的2-染色体表示法(例如,实值)。你的目标是找到使目标函数最小化的最佳染色体。
3-开始搜索的染色体的初始群体(可以是随机的)
4-遗传算子,即选择、交叉和变异,应用于当前群体以获得下一代
5-迭代直到达到停止标准,例如最大世代数或期望的适应值
这只是对遗传算法实现应该具有的内容的简要描述。
https://stackoverflow.com/questions/14785134
复制相似问题