我是一名Python程序员,在这种情况下,我必须模拟列表元素组合的遗传进化。 这个想法如下:
li #initial list
combinations=get_combinations(li) #not all possible combinations
results=[]
for c in combinations: results.append(do_stuff(li)) #do_stuff returns percantage of accuracu
最后,我有两个列表:combinations
,它保留了li
元素和results
的某些组合,为每个组合保留了精确度。我们的想法是选择具有最高精度的组合。
无法检查li
的所有组合 - 这需要数月的计算时间。我必须从一些随机开始(我猜?)然后以最好的方式工作。我应该使用什么库?如何在这里模拟进化?
编辑:
或者:元素集演变,直到达到k%以上的准确度。
答案 0 :(得分:4)
你基本上有四种可能性:
然而,随着组合数量呈指数增长,这是难以处理的。
生成随机组合,直到你得到一个足够好的。
从一些组合开始。然后对它做一个小改动。如果新的优于当前的那个,则将其设置为当前的并重复该过程。
可以大大改进上述方法。根据我的经验,最好的改进之一是Simmulated Annealing
使用模拟自然进化的算法。最基本的进化算法看起来像这样:
直到不符合停止条件:
必须存在重组或突变。通常每个都是以一些概率执行的。
挑战在于寻找一种能够进行有效重组和突变的良好代表。