gpt4 book ai didi

python - 如何修复 "gp.generate tried to add a primitive but there is none available"?

转载 作者:行者123 更新时间:2023-11-28 18:38:50 25 4
gpt4 key购买 nike

我正在尝试使用 DEAP 构建类型化遗传编程解决方案.

我用黑白三角形的照片和不同三角形的 3 个顶点启动程序。希望程序能够提出一个程序,将给定三角形的顶点移动到更靠近照片中的顶点。我为它提供随机常量、算术原语加法、减法等,if-then-else。并在给定坐标处测试 is_black 和 is_white。

我已经设置了所有基元,但我一直遇到这个错误,这似乎是在告诉我添加更多提供或使用(不确定是哪个?!)照片的基元。

我发现这个错误很难,因为:

  • 我有使用照片作为输入的原语。
  • 没有有生成照片作为输出的图元。
  • 我不想变形照片,只是消耗它。

我认为获胜的程序将是一长串命令,例如“如果 (10,10) 是黑色,将 (3,2) 添加到顶点 1”,这些命令有些令人作呕地重复。

但是对于 deap 的工作原理,我可能有些地方理解不正确。如何克服此类错误消息?

  File "/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/random.py", line 255, in choice
raise IndexError('Cannot choose from an empty sequence')
IndexError: The gp.generate function tried to add a primitive of type '<class 'triangles.Photo'>', but there is none available.

此错误通常在 gp.gengrow 尝试生成起始种群时触发。

可能/可能不相关的是我对终端的了解不多:我不清楚它们如何适用于我的问题。

我希望能听到蟋蟀的声音,但如果有人真的对这个问题感兴趣并想看代码,或者至少是原始集,我可以把它贴上去或贴在某个地方。认为它已经足够漫无边际了;虽然我专注于特定的错误消息,但我希望更多的是我对 GP/DEAP 工作的一般(不)理解有问题。

最佳答案

我已找到解决此问题的方法。

当我只在终端中需要输入类型时(就像你所做的那样),我创建了一个恒等函数:

pset.addPrimitive(idem, [MyClass], MyClass)

它创建了正确深度的嵌套 idems 的长分支:idem(idem(idem(x)))...

然后我将原始树字符串化,用单个“x”替换所有那些嵌套的 idems,并使用 deap.gp.PrimitiveTree.from_string(string, pset) 再次转换原始树中的字符串。

它不优雅,也不是 pythonic,但它适合我。

关于python - 如何修复 "gp.generate tried to add a primitive but there is none available"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29597252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com