weixin_39017744 2019-12-02 22:12 采纳率: 80%
浏览 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 状态机/汽车转向灯/Sateflow
  • ¥15 这个有点复杂 有没有人看看
  • ¥15 用python如何确定子孙元素在父元素中的位置
  • ¥15 obj文件滤除异常高程
  • ¥15 用mathematicas或者matlab计算三重积分
  • ¥15 Loop unrolling的runtime计算
  • ¥100 NVMe-oF的Target端,开启attr_offload后,测试失败。
  • ¥100 有偿照片马赛克去掉,保留原始数据
  • ¥15 c# winform http报错,如何解决?
  • ¥15 统计软件及应用-r软件