遗传算法

遗传算法是一种模拟生物进化过程的全局搜索方法,通过优胜劣汰选择、交叉和变异操作来逐步优化解决方案。本文详细介绍了遗传算法的基本思想、计算过程,并通过Schaffer、Rastrigin和Griewank函数的实例分析了种群数量N对适应度及收敛速度的影响。实验表明,种群数量和解空间维度对找到最优解的迭代次数和最佳适应度有显著影响。
摘要由CSDN通过智能技术生成

遗传算法

介绍

遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最佳解。

基本思想

可以参考文章->遗传算法基本思想
遗传算法说白了就是一个优胜劣汰的过程。
在种群(由经过基本编码的一定数目的个体组成)产生后,按照适者生存和优胜劣汰的基本原理,逐代演化出越来越好的近似解,每一代根据种群中的个体适应度大小挑选个体,并借助遗传算子进行组合交叉和变异,产生新的种群,这个种群比之前的种群更适应环境,末代种群中的最优异个体,可以当做问题近似最优解。

计算过程

这里将上面的基本思想的文字简化为流程图

Created with Raphaël 2.2.0 开始 初始化群体 适应性评价,保存最优染色体 选择 交配 变异 满足终止条件? 结束 yes no

代码实现

参数

  1. 种群的规模N
  2. 染色体长度L
  3. 变异概率pm:增加群体进化的多样性,决定进化过程中群体发生变异的基因的平均数。
  4. 交配概率pc:决定了进化过程种群参加交配的染色体平均数目pc×N。
  5. 进化代数
  6. 适应度评价:影响算法对种群的选择,恰当的评估函数应能够对染色体优劣做出合适区分,保证选择机制的有效性,从而提高群体的进化能力。

遗传算法 GA.m

% Optimizing a function  using Simple Genetic Algorithm with elitist preserved

%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480


%下面为代码。函数最大值为3904.9262,此时两个参数均为-2.0480,有时会出现局部极值,此时一个参数为-2.0480,一个为2.0480。变
%异概率pm=0.05,交叉概率pc=0.8。

clc;clear all;

format long;%设定数据显示格式

%初始化参数

T=500;%仿真代数

N=80;% 群体规模

pm=0.05;pc=0.8;%交叉变异概率

umax=30;umin=-30;%参数取值范围

L=10;%单个参数字串长度,总编码长度Dim*L
Dim=5;%Dim维空间搜索

bval=round(rand(N,Dim*L));%初始种群,round函数为四舍五入

bestv=-inf;%最优适应度初值
funlabel=2;       %选择待优化的函数,1为Rastrigin,2为Schaffer,3为Griewank
Drawfunc(funlabel);%画出待优化的函数,只画出二维情况作为可视化输出

%迭代开始

for ii=1:T

%解码,计算适应度

    for i=1:N  %对每一代的第i个粒子
        for k=1:Dim
            y(k)=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值