前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用遗传算法求函数最大值三:主程序和结果

用遗传算法求函数最大值三:主程序和结果

作者头像
mwangblog
发布2018-10-18 17:58:36
5070
发布2018-10-18 17:58:36
举报
文章被收录于专栏:mwangblogmwangblog

主程序

主程序如下:

代码语言:javascript
复制
clear
clc

popsize         = 30;       % 种群规模chromlength     = 10;       % 染色体长度pc              = 0.5;      % 交叉概率pm              = 0.05;     % 变异概率maxgen          = 20;       % 最大迭代数lx = 5; ux = 10;

bestfit = zeros(1, maxgen);
bestobjvalue = zeros(2, maxgen);% 优化pop = initpop(popsize, chromlength);
objvalue = calobjvalue(pop, lx, ux);
fitvalue = calfitvalue(objvalue,'max');for i = 1:maxgen
    pop = selection(pop, fitvalue);     % 选择
    pop = crossover(pop, pc);           % 交叉
    pop = mutation(pop, pm);            % 变异

    objvalue = calobjvalue(pop, lx, ux);
    fitvalue = calfitvalue(objvalue, 'max');

    bestindex = bestindividual(pop, fitvalue, 'max');
    x = calx(pop, lx, ux);
    bestfit(1, i) = fitvalue(bestindex);
    bestobjvalue(1, i) = x(bestindex);
    bestobjvalue(2, i) = objvalue(bestindex);    % fprintf('bestX: %f, bestY: %f\n', bestobjvalue(1, i), bestobjvalue(2, i));endfigure(1);
fplot(@(x) 9 .* sin(5 .* x) + 8 .* cos(4 .* x), [lx, ux]);
hold on;
plot(bestobjvalue(1,:), bestobjvalue(2,:),'bo');
xlabel('x');
ylabel('y=9sin(5x)+8cos(4x)');
title('函数图');
grid on;
hold off;

figure(2);
plot(1:maxgen, bestfit(1,:));
xlabel('进化代数');
ylabel('最优适应度值');
title('最优适应度值图');
grid on;

bestX = bestobjvalue(1, end);
bestY = bestobjvalue(2, end);
fprintf('bestX: %f, bestY: %f\n', bestX, bestY);

执行结果

执行结果:bestX: 7.859238, bestY: 16.995125

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 mwangblog 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主程序
  • 执行结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档