美文网首页数据结构和算法分析
用遗传算法求函数最大值三:主程序和结果

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

作者: 学习编程王同学 | 来源:发表于2018-09-17 12:37 被阅读7次

主程序

主程序如下:

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));
end

figure(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

函数图 适应值图

相关文章

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

    主程序 主程序如下: 执行结果 执行结果:bestX: 7.859238, bestY: 16.995125

  • 用遗传算法求函数最大值一:编码和适应值

    下面使用一个具体的例子来解释遗传算法。 问题如下: 求函数f(x)=9×sin(5x)+8×cos(4x), x∈...

  • 用遗传算法求函数最大值二:选择、交叉和变异

    选择 选择(或复制)操作决定哪些个体可以进入下一代。这里采用轮盘赌法选择,这种方法比较容易实现。 在轮盘赌法中,设...

  • day08-作业

    day08-作业 1.编写一个函数,求1+2+3+...+N 结果: 2、编写一个函数,求多个数中的最大值 结果:...

  • 2018-10-10-day9Homework

    10.10 函数基础作业 编写一个函数,求1+2+3+...+N 结果:15 编写一个函数,求多个数中的最大值 结...

  • day7-作业

    1.编写一个函数,求1+2+3+...+N 结果 2.编写一个函数,求多个数中的最大值 结果 3.编写一一个函数,...

  • day7作业

    1.写一个函数,求1+2+3+...+N 结果: 2.求多个数中的最大值 结果: 3.编写一个函数,实现色子功能,...

  • 数据库基础05聚合函数

    聚合函数 COUNT函数---统计个数 MAX函数---求最大值 MIN函数---求最小值 SUM函数---求和 ...

  • day9-函数基础-作业

    1.编写一个函数,求1+2+3+...+N 代码如下 运行结果 2. 编写一个函数,求多个数中的最大值 代码如下 ...

  • 2019-11-14作业

    编写函数,求1 + 2 + 3 +…N的和 编写一个函数,求多个数中的最大值 编写一个函数,实现摇骰子的功能,打印...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/qutlnftx.html