遗传算法,如何为生成的源代码定义适应度函数

时间:2018-02-08 18:19:50

标签: java genetic-algorithm genetic-programming

我正在使用一个生成Java源代码的简单遗传算法但是我在定义一个好的适应度函数时遇到了问题,现在我正在使用一个简单的Java编译器来运行代码(一个人很简单包含Java代码的一部分的字符串),然后得到错误的数量,错误越少,适应度越高,但到目前为止,这并没有给我带来好的结果,它达到了所有人口都有的地步同样的健康,永远不会变得更高。

使用Java关键字和一些方法和类名的组合生成个体,因此它生成如下字符串:

  • int method,= float ......
  • 空隙,INT ,,; ......
  • 方法(,;; = .....

是否可以知道生成的代码比另一个更好?也许是其他一些错误的组合。

1 个答案:

答案 0 :(得分:1)

您可能想要使用不同的方法和非常不同的健身功能。改变你所拥有的那个将很难改善。我尝试在一些数学方程上使用遗传算法,他们在我之前停止改进 我得到了令人满意的结果。我花了很多时间在健身功能中添加和删除小东西而没有运气。

例如,您可以考虑使用一些代码度量标准(不需要的操作等,对变量或寄存器的虚拟读/写等)。您可能希望编写自己的VM来为您提供结果。

或者使用非常不同的方法(不是GA,但是如果您知道启发式方法或使用遗传编程,您可以在其中更改包含代码指令的树的分支)找到正确的路径。根据你所说的,你需要做出更重大的改变。

祝你好运。请让我们更新。非常有兴趣知道什么是最好的。