遗传算法(使用数字和运算符寻找表达式)

Genetic algorithm(finding expression using digits and operators)

我有以下遗传编程问题(作业): 我需要使用 5 位数字(0 到 9)和任何运算符(+、-、*、/)来生成一个表达式来给出 30 的答案。任何人都可以解释一下我如何使用遗传编程来解决这个问题吗?

首先,它是一个基因编程(GP)problem.You可以google了解更多细节。

在GP中,每个个体代表一个计算机程序,用一棵树来表示structure.In你的问题,它代表一棵数学expression.The下图中的树可以代表表达式'3.4的个体-x'.

叶子节点是从你的数字集中选择的,非叶子节点是从算子集中选择的。

然后,您可以选择一些交叉和变异算子来进化您的表达式。

对于交叉算子,可以select两个父节点中的每一个随机节点,然后交换相应的子树以创建两个offspring,如下图所示。

还有很多对应的变异operators.For例子,随机选择一个节点改变数字或运算符。