corr()函数matlab_遗传算法简单介绍与MATLAB实现

题目:定义一个二元函数, 。用遗传算法求全局最大值;遗传算法简单介绍与MATLAB实现(二)引入题目一上一篇文章中我们简单的介绍了一了一下遗传算法,其中提到了多元函数f=f(x,y)f=f(x,y),所以在这里我们就定义一个二元函数,作为第一个练手的程序。遗传算法MATLAB程序设定参数首先我们要确定一系列参数N = 100; %种群内个体数目N_chrom = 2; %染色体节点数iter ...
摘要由CSDN通过智能技术生成

题目:

定义一个二元函数,

equation?tex=f%28x%2Cy%29%3Dsinx%2Bcosy%2B0.1%28x%2By%29 。用遗传算法求全局最大值;

遗传算法简单介绍与MATLAB实现(二)

引入题目一

上一篇文章中我们简单的介绍了一了一下遗传算法,其中提到了多元函数f=f(x,y)f=f(x,y),所以在这里我们就定义一个二元函数,作为第一个练手的程序。

遗传算法MATLAB程序

设定参数

首先我们要确定一系列参数

N = 100; %种群内个体数目
N_chrom = 2; %染色体节点数
iter = 2000; %迭代次数
mut = 0.2; %突变概率
acr = 0.2; %交叉概率

其中突变概率指的是某个个体的染色体发生突变的概率。因为实际中并不可能每一个个体都会发生突变,而是存在一定的概率,因此我们在这里定义每一个个体突变发生的概率为0.2。

同理,交叉概率指的就是某个个体与另一个个体发生染色体交叉的概率。

迭代次数指的是整个种群迭代2000多次。

一般来说,并不是突变概率、交叉概率越小或者越大越好。比如说突变概率特别高的话,会让整个种群的最优适应度飘忽不定。如果特别小的话,会让种群迭代的速度特别慢,很难找到最优适应度。这里取0.2是我经过多次试验以后,觉得0.2是一个比较稳定不会乱飘且适应度收敛也不错的一个值。

迭代次数也同理,如果一个特别简单的模型去求最优解,可能五六次迭代就求出来了,那么2000次迭代纯属浪费时间。但是如果是一个特别复杂的模型,那么2000次迭代就有可能不够。具体迭代次数可以自己灵活决定。

chrom_range = [-10 -10; 10 10];%每个节点的值的区间
chrom = zeros(N, N_chrom);%存放染色体的矩阵
fitness = zeros(N, 1);%存放染色体的适应度
fitness_ave = zeros(1, iter);%存放每一代的平均适应度
fitness_best = zeros(1, iter);%存放每一代的最优适应度
chrom_best = zeros(1, N_chrom+1);%存放当前代的最优染色体与适应度

其中的chrom_range指的是每个节点值的区间。在我们的这个模型中,x∈[−10,10],y∈[−10,10]x∈[−10,10],y∈[−10,10]。第一行放的是两个变量的区间下限,第二行放的是区间上限。

chrom和fitness两个矩阵你们可以自己理解一下为什么这样子写。

fitness_ave用来存放每一代的平均适应度,主要是用来最后画图,观察种群在每一次迭代中适应度的变化情况。fitness_best同理。

chrom_best用来存放最优适应度对应的最优染色体与适应度,可以回想一下上一章染色体变异中需要最优适应度,优胜劣汰中需要最优染色体,这个矩阵作用就是如此。

初始化种群

接下来开始初始化参数

chrom = Initialize(N, N_chrom, chrom_range); %初始化染色体
fitness = CalFitness(chrom, N, N_chrom); %计算适应度
chrom_best
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值