weixin_39017744 2019-12-02 22:12 采纳率: 84.2%
浏览 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的进化。
    最后就求出了这些未知数,计算完成。

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

报告相同问题?

悬赏问题

  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal
  • ¥20 OPENVPN连接问题
  • ¥15 flask实现搜索框访问数据库
  • ¥15 mrk3399刷完安卓11后投屏调试只能显示一个设备