Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何执行python列表元素组合的遗传进化?_Python_Genetic Algorithm_Evolutionary Algorithm - Fatal编程技术网

如何执行python列表元素组合的遗传进化?

如何执行python列表元素组合的遗传进化?,python,genetic-algorithm,evolutionary-algorithm,Python,Genetic Algorithm,Evolutionary Algorithm,我是一名Python程序员,在这种情况下,我必须模拟list元素组合的遗传演变。 其想法如下: 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 最后,我有两个列表:组合,它保

我是一名Python程序员,在这种情况下,我必须模拟list元素组合的遗传演变。 其想法如下:

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
最后,我有两个列表:组合,它保留了li元素和结果的一些组合,它为每个组合保留了一个percantive值o准确性。这样做的目的是选择精度最高的组合

不可能检查所有li的组合,这需要数月的计算时间。我想我得从一些随机的开始?然后努力做到最好。我应该使用什么图书馆?在这里如何符号化进化

编辑:


或者:元素集不断演化,直到其精度超过k%。

基本上有四种可能性:

1.探索所有组合 然而,随着组合的数量呈指数增长,这是难以解决的

2.随机搜索 生成随机组合,直到得到一个足够好的组合

3.本地搜索 从一些组合开始。然后做一个小小的改变。如果新版本比当前版本好,则将其设置为当前版本并重复此过程

上述方法可以大大改进。根据我的经验,最好的改进之一就是

4.进化算法 使用模拟自然进化的算法。最基本的进化算法如下所示:

初始化候选解决方案的总体。 在不满足停止条件之前:

从总体中选择两个候选解决方案,其中较好的解决方案被选择的几率较高。 可选*以某种方式重新组合两个解决方案取决于表示,即将它们组合在一起以创建新的解决方案。 可选*轻微更改或变异新解决方案。 将新的解决方案重新放入总体中,丢弃一些不足以保持总体大小不变的其他解决方案。 必须存在重组或突变。通常,每一项都有一定的可能性


我们面临的挑战是找到一种良好的表达方式,以实现有效的重组和突变。

您基本上有四种可能:

1.探索所有组合 然而,随着组合的数量呈指数增长,这是难以解决的

2.随机搜索 生成随机组合,直到得到一个足够好的组合

3.本地搜索 从一些组合开始。然后做一个小小的改变。如果新版本比当前版本好,则将其设置为当前版本并重复此过程

上述方法可以大大改进。根据我的经验,最好的改进之一就是

4.进化算法 使用模拟自然进化的算法。最基本的进化算法如下所示:

初始化候选解决方案的总体。 在不满足停止条件之前:

从总体中选择两个候选解决方案,其中较好的解决方案被选择的几率较高。 可选*以某种方式重新组合两个解决方案取决于表示,即将它们组合在一起以创建新的解决方案。 可选*轻微更改或变异新解决方案。 将新的解决方案重新放入总体中,丢弃一些不足以保持总体大小不变的其他解决方案。 必须存在重组或突变。通常,每一项都有一定的可能性


挑战是找到一个好的表示,允许有效的重组和变异。

如果你真的不能检查所有的组合,而且它们没有被用任何可用的方式排序,那么看起来你不会能够得到一个自信的答案,哪一个是最准确的。不,不。好的,我愿意在中间相遇。它一直在发展,直到一个组合的分数达到>k%的准确度不确定这是否是答案等级,因此作为评论:在配方部分,有一个简单的随机组合函数,您可以在计算时间允许的情况下执行几次。谢谢,这是一个好的开始,但后来我需要的不仅仅是随机挑选。。。如果你真的不能检查所有的组合,我认为我必须把结果组合在一起,而且它们并不是以任何可用的方式被订购的,看起来你似乎无法得到一个自信的答案,哪一个是最准确的。不,不。好的,我愿意在中间相遇。它一直在发展,直到一个组合的分数达到>k%的准确度不确定这是否是答案等级,因此作为评论:在配方部分,有一个简单的随机组合函数,您可以在计算时间允许的情况下执行几次。谢谢,这是一个好的开始,但后来我需要的不仅仅是随机挑选。。。我想我必须把结果结合起来谢谢
非常地就是这样:非常感谢!就这样: