zoukankan      html  css  js  c++  java
  • 我对遗传算法理解

    1、始祖值

    2、随机交叉

    3、优秀标准

    4、精英策略

    5、收敛

    <?php
    
    //始祖值,
    $a=1;
    echo "<pre>";print_r ($a);echo "</pre>";
    
    //散列值
    $any = array(2,4,7,8,10,12,51,32,11);
    echo "<pre>";print_r ($any);echo "</pre>";
    
    //交叉并启动精英策略,假设后代的和越大越优秀
    foreach ($any as $key=>$value){
        $c[] = $value+$a;
    }
    echo "<pre>";print_r ($c);echo "</pre>";
    $pos = array_search(max($c), $c);
    echo $c[$pos];//得到一个优秀的后代
    $hd = $c[$pos];
    
    $a1=array();
    array_push($a1,$c[$pos]);//把优秀的送到精英营里
    echo "<pre>";print_r ($a1);echo "</pre>";
    
    //把优秀的从原来的队伍里除名
    unset($c[$pos]);
    echo "<pre>";print_r ($c);echo "</pre>";
    
    //再来一次交叉,这次始祖是52
    foreach ($c as $key=>$value){
        $c1[] = $value + $hd;
    }
    echo "<pre>";print_r ($c1);echo "</pre>";
    
    //再取一个优秀的后代
    $pos1 = array_search(max($c1), $c1);
    echo $c1[$pos1];//得到一个优秀的后代
    
    //第一代是1,到了第三代就是85了。。。。
    
    ?>

    初次认识学习,代码肯定是错的----------------用的是遍历,而不是随机,所以最后的值早就在我自己埋下的bug里了,其实,物种的优胜略汰是在随机的交配过程中产生的

    遗传算法还具有以下几方面的特点:
    (1)遗传算法从问题解的串集开始搜索,而不是从单个解开始。这是遗传算法与传统优化算法的极大区别。传统优化算法是从单个初始值迭代求最优解的;容易误入局部最优解。遗传算法从串集开始搜索,覆盖面大,利于全局择优。
    (2)遗传算法同时处理群体中的多个个体,即对搜索空间中的多个解进行评估,减少了陷入局部最优解的风险,同时算法本身易于实现并行化。
    (3)遗传算法基本上不用搜索空间的知识或其它辅助信息,而仅用适应度函数值来评估个体,在此基础上进行遗传操作。适应度函数不仅不受连续可微的约束,而且其定义域可以任意设定。这一特点使得遗传算法的应用范围大大扩展。
    (4)遗传算法不是采用确定性规则,而是采用概率的变迁规则来指导他的搜索方向。
    (5)具有自组织、自适应和自学习性。遗传算法利用进化过程获得的信息自行组织搜索时,适应度大的个体具有较高的生存概率,并获得更适应环境的基因结构。
    (6)此外,算法本身也可以采用动态自适应技术,在进化过程中自动调整算法控制参数和编码精度,比如使用模糊自适应法[2]  。

    http://baike.baidu.com/link?url=fB2PAn8LA6EWFHfgfOx2b7nh86jZp3eHuNMrLqpMv_woSCj-C8JbWwcyuHmJcnsPVijqtQI_zcxOBToIxWrvVq

  • 相关阅读:
    http 事务
    URI、URL、URN
    媒体类型(MIME类型)
    资源
    WEB客户端和服务器
    如何解决新浪微博返回结果中的中文编码问题
    新浪微博 使用OAuth2.0调用API
    新浪微博 授权机制研究
    hmac库 密钥相关的哈希运算消息认证码
    ValueError: Expecting property name: line 1 column 1 (char 1)
  • 原文地址:https://www.cnblogs.com/hellowzd/p/5713540.html
Copyright © 2011-2022 走看看