如何实现选择和交叉使用遗传算法求C中数的平方根

Los*_*ost 7 c c++ algorithm genetic-algorithm

我试图用遗传算法找出一个浮点数的平方根.
我初始化了随机数和健身函数.如何从人口和统一交叉中实施父母的选择?

UmN*_*obe 2

选择
gilad 给出的函数(您正在使用的函数)看起来不错。为什么不遵循标准程序呢?你可以在维基百科上找到一些想法

交叉
如果您将候选向量视为 32 位向量(实际上是 31 位),那么进行统一交叉就是以一半的概率选择任一父向量的位。

这个想法是:

  • 抛硬币
  • 如果头接替父母一,
  • 如果尾巴占据父母两个

以编程方式从 2 个父母创建孩子的有效方法是生成一个随机的 32 位数字r,并给定父母ab执行以下操作:

 child = (r & a) | (~r & b);
Run Code Online (Sandbox Code Playgroud)