gpt4 book ai didi

algorithm - 通过遗传算法生成代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:14:45 24 4
gpt4 key购买 nike

进化编程似乎是解决许多优化问题的好方法。这个想法很简单,实现起来也没有问题。

我想知道是否有任何方法可以进化地用 ruby​​/python 脚本(或任何其他语言)创建程序?

这个想法很简单:

  1. 创建一组程序
  2. 执行遗传操作(轮盘赌选择或任何其他选择),从最佳程序继承创建新程序等。
  3. 循环点2直到找到满足我们条件的程序

但是还是有一些问题:

  1. 染色体将如何表示?例如,一个染色体细胞是否应该是一行代码?
  2. 染色体是如何产生的?如果它们是代码行,我们如何生成它们以确保它们在语法上是正确的等等?

可以生成的程序示例:

创建将 N 个数字作为输入并返回其平均值作为输出的脚本。

如果有人尝试创建此类算法,我会很高兴看到任何链接/来源。

最佳答案

如果您确定要执行此操作,则需要 genetic programming ,而不是遗传算法。 GP 允许你开发树结构的程序。你会做的是给它一堆原始操作(while($register), read($register), increment($register), decrement($register), divide($result $numerator $denominator), print , progn2(这是 GP 所说的“依次执行两个命令”)。

你可以产生这样的东西:

progn2(
progn2(
read($1)
while($1
progn2(
while($1
progn2( #add the input to the total
increment($2)
decrement($1)
)
)
progn2( #increment number of values entered, read again
increment($3)
read($1)
)
)
)
)
progn2( #calculate result
divide($1 $2 $3)
print($1)
)
)

您将使用它与真实解决方案的接近程度作为您的适应度函数。这就是问题所在,无论如何您都必须按照传统方式进行计算*。然后有一些东西可以将其翻译成(您选择的语言)的代码。请注意,由于其中存在潜在的无限循环,您将不得不在一段时间后停止执行(无法解决暂停问题),而且它可能无法正常工作。嘘。另请注意,我提供的代码将尝试除以零。

*有很多方法可以解决这个问题,但通常不会太远。

关于algorithm - 通过遗传算法生成代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732917/

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