weixin_39017744 2019-12-02 22:12 采纳率: 83.3%
浏览 133
已采纳

如何通俗易懂地解释遗传程序?最好能用代码加注释说明解释。

比如我希望通过以下数据中的abcsdfg的值得到h值。请结合代码说明,最好是用python。

a b c d e f g h
10 69 1 9 0.9 478.89 431 28.8
28 41 16 11 0.85 490.59 417 7.5
7 12 13 8 0.95 220 209 4.1

不看题直接甩链接不采纳。

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-12-03 16:17
    关注

    不管你用什么算法(包括遗传算法),你要做的首先是有一个等式,比如
    aw1+bw2+cw3+...=h
    这里的abc...就是你的a-g,h就是你的h
    而w1 w2 w3都是权重,也就是说你要优化的未知量
    然后你的算法的目的就是,把所有的样本(也就是你下面的3行)全部放入上面的公式,找到一组w1 w2 w3...,让它算出来的h,和你实际的h,误差最小。
    这样就算完成了。
    于是你再有数据,你就可以套入公式,算出h,并且h会很接近实际的值。
    当然,aw1+bw2+cw3+...=h,这个公式并不好,你一看就知道,它们都是一些经过坐标圆点的直线,为了增加拟和度,你可以加入非线性函数,以及偏置
    比如sigmoid(aw1+b1)+sigmoid(bw2+b2)+sigmoid(cw3+b3)+...=h
    这个就不展开了。

    具体来说遗传算法,它的作用在于我说的优化求这些参数的近似值这个步骤上。也就是光有公式还不行,因为w1 w2 w3...以至于下面那个表达式的b1 b2 b3... 这些未知数的取值是多少,才能让误差小,我们并不知道。
    遗传算法就是一种可以比较有效地寻找这些近似值的办法。
    你可以把这些未知数变成序列 w1 w2 w3 ... b1 b2 b3 ...,这就是dna
    然后你根据这些未知数,去计算一套h,和真实的h比较,计算误差。
    你的方法就是不断对序列杂交、变化,丢弃误差大的序列,保留误差小的,这就是dna的进化。
    最后就求出了这些未知数,计算完成。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试