zoukankan      html  css  js  c++  java
  • Roulette Wheel Selection

    轮盘法, 用于遗传算法中的selection方法。

    轮盘赌算法
    
    /*
    * 按设定的概率,随机选中一个个体
    * P[i]表示第i个个体被选中的概率
    */
    int RWS()
    {
        m = 0;
        r =Random(0,1); //r为0至1的随机数
        for(i=1;i<=N; i++)
        {
                /* 产生的随机数在m~m+P[i]间则认为选中了i
                 *  因此i被选中的概率是P[i]
                 */
                 m = m + P[i];
                 if(r<=m) return i;
        }
    }

    有N个序列,经过计算每一个的fitness, fitness[0...N-1], 他们的和记做sum, P[i]=fitness[i]/sum.

    基本遗传算法伪代码
    
    /*
    * Pc:交叉发生的概率
    * Pm:变异发生的概率
    * M:种群规模
    * G:终止进化的代数
    * Tf:进化产生的任何一个个体的适应度函数超过Tf,则可以终止进化过程
    */
    初始化Pm,Pc,M,G,Tf等参数。随机产生第一代种群Pop
     
    do
    {     
      计算种群Pop中每一个体的适应度F(i)。
      初始化空种群newPop
      do
      {
        根据适应度以比例选择算法从种群Pop中选出2个个体
        if ( random ( 0 , 1 ) < Pc )
        {
          对2个个体按交叉概率Pc执行交叉操作
        }
        if ( random ( 0 , 1 )  < Pm )
        {
          对2个个体按变异概率Pm执行变异操作
        }
           将2个新个体加入种群newPop中
        } until ( M个子代被创建 )
        用newPop取代Pop
    }until ( 任何染色体得分超过Tf, 或繁殖代数超过G )

    转自:http://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html

  • 相关阅读:
    java web使用WebSocket
    solr的使用
    mybatis中模糊查询的实现方式
    Java反射的简单使用
    TCP/IP协议 资料整理
    Java单向链表的实现
    Spring boot使用JWT来做接口登录验证
    sql性能优化
    前端实践项目(四)使用koa搭建开发环境
    前端实践项目 目录
  • 原文地址:https://www.cnblogs.com/gaoqichao/p/2682417.html
Copyright © 2011-2022 走看看