⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 initia~1.m

📁 王小平《遗传算法——理论、应用与软件实现》随书光盘
💻 M
字号:
function [pop] = initialize(num,bounds,evalFN,evalOps,options)
% function [pop]=initialize(populationSize, variableBounds,evalFN,
%                           evalOps,options)
%    initialize creates a matrix of random numbers with 
%    a number of rows equal to the populationSize and a number
%    columns equal to the number of rows in bounds plus 1 for
%    the f(x) value which is found by applying the evalFN.
%
% pop            - the initial, evaluated, random population 
% populatoinSize - the size of the population, i.e. the number to create
% variableBounds - a matrix which contains the bounds of each variable, i.e.
%                  [var1_high var1_low; var2_high var2_low; ....]
% evalFN         - the evaluation fn, usually the name of the .m file for %                  evaluation% evalOps        - any options to be passed to the eval function defaults []% options        - options to the initialize function, ie. %                  [eps float/binary prec] where eps is the epsilon value %                  and the second option is 1 for float and 0 for binary, 
%                  prec is the precision of the variables defaults [1e-6 1]

if nargin<5
  options=[1e-6 1];
end
if nargin<4
  evalOps=[];
end
if any(evalFN<48) %Not a .m file
  if options(2)==1 %Float GA
    estr=['x=pop(i,:); pop(i,xZomeLength)=', evalFN ';'];  
  else %Binary GA
    estr=['x=b2f(pop(i,:),bounds,bits); pop(i,xZomeLength)=', evalFN ';']; 
  end
else %A .m file
  if options(2)==1 %Float GA
    estr=['[pop(i,xZomeLength) pop(i,:)]=' evalFN '(pop(i,:),[0 evalOps]);'];  
  else %Binary GA
    estr=['x=b2f(pop(i,:),bounds,bits);[v x]=' evalFN ...
	'(x,[0 evalOps]); pop(i,:)=[f2b(x,bounds,bits) v];'];  
    end
end
numVars     = size(bounds,1); 		%Number of variables
rng         = (bounds(:,2)-bounds(:,1))'; %The variable ranges'
if options(2)==1 %Float GA
  xZomeLength = numVars+1; 		%Length of string is numVar + fit
  pop         = zeros(num,xZomeLength); 	%Allocate the new population
  pop(:,1:numVars)=(ones(num,1)*rng).*(rand(num,numVars))+...
    (ones(num,1)*bounds(:,1)');
else %Binary GA
  bits=calcbits(bounds,options(1));
  xZomeLength = sum(bits)+1; 		%Length of string is numVar + fit
  pop = round(rand(num,sum(bits)+1));
end
for i=1:num
 eval(estr);
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -