主题:求教调用toolbox的方法和关于遗传算法的一些问题
首先请问调用toolbox里的工具箱是不是把它复制到work里然后 编写要运行的程序然后也放到work里就可以了?
然后借用网上一个基于matlab的遗传算法的例子 在-5<=Xi<=5,i=1,2区间内,求解f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值
(其中我已下了goatv5工具箱)下面是例子的分析:
【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3
【程序清单】
%源函数的matlab代码
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%适应度函数的matlab代码
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遗传算法的matlab代码
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')
我的问题是1:sol表示解空间吗还是表示种群2:为什么没有把十进制数转化为2进制的代码3:x=sol(1:numv)是什么意思 工具箱里没有sol函数!!4:适应度函数中怎么会numv=size(sol,2)-1?
诚心请教
[em2]
然后借用网上一个基于matlab的遗传算法的例子 在-5<=Xi<=5,i=1,2区间内,求解f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值
(其中我已下了goatv5工具箱)下面是例子的分析:
【分析】种群大小10,最大代数1000,变异率0.1,交叉率0.3
【程序清单】
%源函数的matlab代码
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%适应度函数的matlab代码
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遗传算法的matlab代码
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')
我的问题是1:sol表示解空间吗还是表示种群2:为什么没有把十进制数转化为2进制的代码3:x=sol(1:numv)是什么意思 工具箱里没有sol函数!!4:适应度函数中怎么会numv=size(sol,2)-1?
诚心请教
[em2]