matlab使用遗传算法找函数极值
2018-02-05 13:14
543 查看
使用遗传算法寻找函数极值
这是函数的三维图
计算出的最优个体:
x =
这里取值范围已经超出界限了,我也不知道哪里出错了,有明白的大佬请指正。
我要是弄明白了也会及时修改代码。
%% I. 清空环境变量 clear all clc %% II. 绘制函数曲面 xx = -2:0.01:2; yy = -2:0.01:2; [x,y] = meshgrid(xx,yy); z = x*cos(2*pi*y) + y*sin(2*pi*x) ; mesh(x,y,z) shading interp xlabel('x');ylabel('y');zlabel('z') title('z = x*cos(2*pi*y) + y*sin(2*pi*x)') axis tight %% III. 初始化种群 %初始种群50, initPop = initializega(100,[[-1 1],[-1 1]],'fitness'); aa = ones(2,1)*[-2,2]; %% IV. 遗传算法优化 [x endPop bpop trace] = ga([-2 2],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,... 'normGeomSelect',0.08,'arithXover',2,'nonUnifMutation',[2 25 3]); %% V. 输出最优解并绘制最优点 x hold on xx = endPop(:,1); yy = endPop(:,2); [x,y] = meshgrid(xx,yy); z = x*cos(2*pi*y) + y*sin(2*pi*x) ; plot3 (x,y,z,'ro') %% VI. 绘制迭代进化曲线 figure(2) plot(trace(:,1),trace(:,3),'b:') hold on plot(trace(:,1),trace(:,2),'r-') xlabel('Generation'); ylabel('Fittness'); legend('Mean Fitness', 'Best Fitness')
function [sol, fitnessVal] = fitness(sol, options) x = sol(1); y = sol(2); fitnessVal = x*cos(2*pi*y) + y*sin(2*pi*x); end
这是函数的三维图
计算出的最优个体:
x =
1.2274 10.7630
这里取值范围已经超出界限了,我也不知道哪里出错了,有明白的大佬请指正。
我要是弄明白了也会及时修改代码。
相关文章推荐
- [置顶] matlab2c使用c++实现matlab函数开发配置全解
- 遗传算法工具箱求函数极值
- Matlab中fread函数的高级使用方法及其帮助文档中容易引起歧义的地方
- MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 3,全局变量,计时器和状态机
- matlab中fix, floor, ceil, round 函数的使用方法
- 神经网络matlab函数使用
- MATLAB基本的使用方法归纳(图像,矩阵及函数)
- matlab plot函数使用总结
- 使用matlab Statistical Toolbox 中Multivariate Analysis类别下的函数来做分类实验
- [MATLAB]all()函数的使用
- matlab中fix, floor, ceil, round 函数的使用方法
- 使用matlab函数构建三维立方体的几种方法
- matlab中关于函数文件和脚本文件使用实例
- matlab premnmx归一化函数的使用 1、premnmx 预处理数据使数据的最小值和最大值分别为-1和1. [PN,minp,maxp,TN,mint,maxt] = premnmx(P,T)
- 使用axes函数在matlab绘图中实现图中图的绘制
- 新版Matlab中神经网络训练函数Newff的使用方法
- Matlab计时函数使用
- matlab 图像保存函数及使用方法
- 使用matlab实现简单的遗传算法(一)
- matlab函数使用说明之——load函数