如何将Grammatical Evolution字符串应用于解决方案

时间:2018-03-16 02:04:05

标签: genetic-algorithm evolutionary-algorithm

我正在学习语法进化,但我似乎无法理解的一件事是如何使用从语法演变为解决实际问题的字符串。它被转换成神经网络还是转换成方程或其他东西?它如何接收输入和打印输出?

1 个答案:

答案 0 :(得分:0)

语法进化(GE)区分基因型和表型(genotype–phenotype distinction),这意味着进化的基因型本身不是解决方案,但映射到解决方案。

突变和交叉是在基因型上进行的,但为了评估适合度,应首先将基因型转化为表型。在语法进化中,这意味着生成符合所选语法的字符串。然后,此解决方案字符串应执行,并评估执行结果以估计解决方案的适用性。

如何实际执行生成的解决方案?

这在很大程度上取决于GE系统的实施。

如果它以某种真正的编程语言生成解决方案,则应使用相应的工具链编译和/或执行它们,运行一些测试输入,并评估输出以估计适应性。

如果GE系统能够在内部执行解决方案,则不涉及外部工具链。根据语法(而不是非结构化文本)生成类似于语法树的结构可能会很方便,因为执行这样的结构非常容易。

如何执行语法树?

存在一整类所谓的树行走解释器 - 不是超级高性能,但实现起来相当简单。通常这样的解释器首先解析源文本并构建语法树,然后执行它;但是在GE系统中,可以直接生成语法树,因此不需要解析。

我可以建议"A tree-walk interpreter"一本免费提供的书"Crafting interpreters"作为构建这样一个翻译的好例子。