为什么我用遗传算法处理这个函数,去寻找他的最大/最小值的时候,结果是这样呢

Andrew Ng机器学习记录 同时被 2 个专栏收录
2 篇文章 0 订阅
1 篇文章 0 订阅

@遗传算法gaot箱的问题

#如题,为什么我用遗传算法处理这个函数,去寻找他的最大/最小值的时候,结果是这样呢?应该不是陷入局部最小值把?
这个是main文件

y = -4:0.2:4;
x = -4:0.1:4;
[x,y]=meshgrid(x,y);  % meshgrid函数的作用就在于把行向量变成矩阵,从而能够在后面计算中把z变成矩阵
z = y.*exp(-x.^2-y.^2); 
figure
mesh(x,y,z)
xlabel('自变量')
ylabel('自变量')
zlabel('因变量')
title('z = y.*exp(-x.^2-y.^2)')


initPop = initializega(50,[-4 4;-4 4],'fitness2');  % 上下界用矩阵来写[-4 4  ;-4 4]
[x endPop bpop trace] = ga([-4 4;-4 4],'fitness2',[],initPop,[1e-6 1 1],'maxGenTerm',250,...
                           'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]);

x 
hold on
plot (endPop(:,1),endPop(:,2),'ro'

下面是适应度函数,写在另一个文件
function [sol,so2, fitnessVal] = fitness2(sol,so2, options)
  x = sol(1);
  y = so2(1);
  fitnessVal = 1/y.*exp(-x.^2-y.^2); 
end 

在这里插入图片描述

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值