遗传编程中的实数(常数)

时间:2013-10-27 00:13:01

标签: numbers machine-learning artificial-intelligence constants genetic-programming

我无法弄清楚遗传编程的A.I.可以确定最终方程中何时应该有一个常数。如果我采用公式F(m)= ma; F(m)= m9.8,A.I。怎么样知道9.8实际是什么数字?我理解,不是将最终数字放在二叉树中,而是实际上可以放置一个描述常量的符号,然后以某种方式计算或猜测它的值是什么。

谢谢

1 个答案:

答案 0 :(得分:2)

给定一组预定义的常量(终端集的一部分),它们将被组合形成新的常量(使用树形表示,任何只有数字常量的子树,因为叶子本身可以被认为是一个新的数字常数)。

即使使用单个常量(c),系统也会创建:

  • 1.0常数(常数除以自身:c / c);
  • 2.0常量(1.0 + 1.0c / c + c / c);
  • 0.5常数(1.0 / 2.0c / c / (c / c + c / c));
  • 许多常量将以这种方式创建(如果你幸运的话...... 9.8)。

有时会使用名为“短暂随机常数”(Koza)的特殊终端。对于初始总体中的每个短暂,生成指定范围内的随机数。然后将这些随机常数移动并合并。

无论如何,即使使用短暂的随机常数,GP也很难产生正常的常数(Koza说“数字常数的发现是GP壁橱中的骨架”)。

因此,在进化过程中/之后可以使用其他技术,例如:数字突变,爬山......

这些混合系统通常在成功率方面有显着改善(至少对于回归问题)。