遗传算法GA

1.离散遗传算法和连续遗传算法

        离散遗传算法:个体编码常用有限长二进制编码,便于建立数学模型

        连续遗传算法:个体有整数编码和实数编码,精度更高

2.适应度函数

        区分群体中个体的好坏,保证适应值好的个体在下一代产生更多的子个体,适应值函数的选择对算法的收敛性以及收敛速度影响较大。

3.三个算子

        选择算子:

        常用的选择方法有:精华选择、重组选择、均分选择、适应性调整线性排序、比例选择、自适应选择等。

        交叉算子(遗传算法中最重要的操作):

        维持种群多样性。交叉是两个染色体个体之间随机交换信息的一种操作。当两个个体之间进行杂交操作时,由于杂交通过个体传播可以发生模式的破坏作用,因此研究杂交技术对减少杂交的破坏作用具有重要意义.常用的杂交技术有:一点杂交、二点杂交、均匀杂交、多点杂交、启发式杂交、顺序杂交、混合杂交等

        变异算子:

        变异操作是为了在运算过程中能改变某些成员的值,以避免失去一些有用的基因,防止某些成员的值处于不变状态,是种防止算法早熟的措施。三种变异技术,管理变异,变化的变异概率和单值运算

4.算法步骤(以袋鼠例子)

        (1)染色体编码,寻找一种对问题潜在解进行“数字化”编码的方案,建立表现型和基因型的映射关系。(建立袋鼠跳跃能力与基因的映射关系)

        (2)初始化种群(刚开始袋鼠们被零散地扔到喜马拉雅山脉)

        (3)用适应度函数对每一个个体进行适应度评估(袋鼠跳得越高毒气越稀薄,相当于适应度越大)

        (4)用选择算子按照某种规定择优选择(低处的袋鼠很快被毒死,也就是被淘汰掉,以保证袋鼠总体数目持平)

        (5)让个体基因变异,保持种群多样性。(让袋鼠随机地跳一跳,说不定就刚好跳到了珠穆朗玛峰附近呢)

        (6)然后产生子代(希望存活下来的袋鼠是善于跳向高处的,并生儿育女,把善于跳跃的基因传给后代)

        (7)达到迭代次数或最小误差,算法终止,否则转向步骤3

5.选择策略

        a.轮盘赌选择 

     

        轮盘赌选择法是依据个体的适应度值计算每个个体在子代中出现的概率,并按照此概率随机选择个体构成子代种群,因此该方法也被称为适应度比例法。

        轮盘赌选择策略的出发点是适应度值越好的个体被选择的概率越大。因此,在求解最大化问题的时候,我们可以直接采用适应度值来进行选择。但是在求解最小化问题的时候,我们必须首先将问题的适应度函数进行转换(如采用倒数或相反数),以将问题转化为最大化问题,改进的选择概率公式:

        设最差的适应度值为fmin,如果其为负值,那么选择概率为0(因为分子为0)。而对于校正后的适应度之和(即分母)为0的情况,可以将所有个体的选择概率设为1/n.适应度差别大时会出现问题。

        b.锦标赛选择

        在锦标赛选择中,从种群中随机采样s个个体(注意:采样是有放回的),然后选择最优的个体进入下一代,只有个体的适应度值优于其他s-1个竞争者时才能赢得锦标赛。注意最差的个体永远不会幸存,而最优的个体在其参与的所有锦标赛中都能获胜。

        选择压力可以通过改变锦标赛的大小s来改变,对于较大的s值,弱者被选中的机会较小,常见的有二元锦标赛和三元锦标赛等。与适应度值比例选择相比,锦标赛选择由于缺乏随机噪声,在实际应用中经常被使用,同时锦标赛选择也和遗传算法适应度函数的尺度无关,因为只需要比较绝对值大小,不用考虑正负的问题。

        c.截断选择

        根据适应度值对种群中的个体按照从优到劣的顺序进行排序,只有前n个最好的个体被选择进入下一代。能够快速地在大量种群中选择个体,但是在实际中并不常用。

        d.蒙特卡洛选择

        随机在种群中进行选择,可用于度量其他选择器的性能,一般选择器的性能优于蒙特卡洛。

         e.概率选择

        轮盘赌选择发的变体。不需要排序 。个体i的选择概率服从二项分布

        其中N是个体数量,fi为第i个个体的适应度值

        个体的选择概率P(i)代表适应度值fi。概率选择不需要对种群进行排序,个体i的选择概率服从二项分布

        f.线性排序选择

        降序排序,按照适应度值对个体进行排序,最差个体排在第1位,最优个体排在第N位,根据排位先后,线性地分派给染色体i的选择概率

        g.指数排序选择

        弱线性选择。降序排序,使用指数函数分配生存概率,

        c越小最优个体被选择的概率就越大,如果c=0,则设置最优个体被选择的概率为1,而其他所有个体的选择概率为0。c越接近于1,个体间的选择概率越接近。

        h.玻尔兹曼选择

        b>0时,增大了具有高适应度值的个体被选择的概率;b<0时,则降低概率;b=0时,所有个体的选择概率均为1/N。

        i.随机遍历选择(SUS)

        根据给定概率以最小化波动概率的方式选择个体的方法。相比较于适应度比例选择法,该方法中较劣个体也有很好的机会被选择,从而奖励了不公平性。

        n为要选择的个体数量。随机遍历采样保证了选出的子代,比轮盘赌法更加接近希望得到的结果。

        j.精英选择

         精英选择将一小部分最优的候选解,原封不动的复制到下一代中,这会对性能产生巨大的影响,因为这保证了GA不会浪费时间重新发现以前拒绝的部分解。通过精英主义被保留下来的个体仍然有资格被选为下一代的父代。精英主义也与记忆有关:记住目前找到的最优解。不过精英主义的问题在于会导致GA收敛到局部最优

6.交叉策略

        a.单点交叉

        单点交叉通过选取两条染色体,在随机选择的位置点上进行分割并交换右侧的部分,从而得到两个不同的子染色体。单点交叉是经典的交叉形式,与多点交叉或均匀交叉相比,它交叉混合的速度较慢(因为将染色体分成两段进行交叉,这种方式交叉粒度较大),然而对于选取交叉点位置具有一定内在含义的问题而言,单点交叉可以造成更小的破坏。

        b.两点交叉

        在个体染色体中随机设置了两个交叉点,然后再进行部分基因交换。 在相互配对的两个个体编码串中随机设置两个交叉点; 交换两个个体在所设定的两个交叉点之间的部分染色体

        c.多点交叉

        在个体染色体中随机设置多个交叉点,然后进行基因交换。

        d.部分匹配交叉

        保证了每个染色体中的基因仅出现一次,通过该交叉策略在一个染色体中不会出现重复的基因,执行交叉后一般会得到两个无效的染色体,个别基因会出现重复的情况,为了修复染色体,可以在交叉区域内建立每个染色体的匹配关系,然后在交叉区域外对重复基因应用此匹配关系就可以消除冲突。有冲突检测。

        e.均匀交叉

        依次扫描染色体的每个基因,以概率与对位基因进行交叉

        f.顺序交叉

        在两个父代染色体中随机选择起始和结束位置,将父代染色体1该区域内的基因复制到子代1相同位置上,再在父代染色体2上将子代1中缺少的基因按照顺序填入。另一个子代以类似方式得到。无冲突检测。

        g.位置交叉

        h.基于顺序交叉

        在两个父代染色体中随机选择几个位置,位置可以不连续,先在父代染色体2中找到父代染色体1被选中基因的位置,再用父代染色体2中其余的基因生成子代,并保证位置对应,将父代染色体1中被选择的基因按顺序放入子代剩余位置中。另一个子代以类似方式得到

        i.循环交叉

        在某个父代上随机选择1个基因,然后找到另一个父代相应位置上的基因编号,再回到第一个父代找到同编号的基因的位置,重复先前工作,直至形成一个环,环中的所有基因的位置即为最后选中的位置

        j.子路径交换交叉

        在父1中随机选择一组基因,在父2中找到具有相同编号的基因进行交换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在MATLAB中,遗传算法可以通过ga函数来实现。这个函数主要用于解决优化问题,特别是在求解Bin Packing问题中,可以利用遗传算法来进行求解。 在使用ga函数时,可以通过设置一些参数来控制算法的行为。例如,可以使用gaoptimset函数来设置迭代次数、种群大小、是否并行以及函数是否向量化等参数。例如,可以设置迭代次数为200,种群大小为50,是否并行为true,并指定函数是否向量化为'on'。 另外,在使用遗传算法求解问题时,可以使用fprintf函数将结果输出到文件中。例如,可以使用fprintf函数将变量x的数值按照一定的格式输出到文件中。这样可以方便地查看求解结果。 综上所述,遗传算法ga函数是MATLAB中用于求解优化问题的一个函数,可以通过设置参数来控制算法的行为,并使用fprintf函数将结果输出到文件中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [利用遗传算法(GA)、粒子群算法(PSO)、萤火虫算法(FA)和入侵杂草优化(IWO)求解Bin Packing问题的MATLA](https://download.csdn.net/download/weixin_39168167/88251667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [matlab 遗传算法 ga函数实现并行](https://download.csdn.net/download/weixin_38751177/14885265)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [matlab遗传算法ga函数](https://blog.csdn.net/weixin_39789792/article/details/116158890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHENG__ZI_#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值