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

📄 recombin.m

📁 matlab遗传算法工具箱
💻 M
字号:
% RECOMBIN.M       (RECOMBINation high-level function)%% This function performs recombination between pairs of individuals% and returns the new individuals after mating. The function handles% multiple populations and calls the low-level recombination function% for the actual recombination process.%% Syntax:  NewChrom = recombin(REC_F, OldChrom, RecOpt, SUBPOP)%% Input parameters:%    REC_F     - String containing the name of the recombination or%                crossover function%    Chrom     - Matrix containing the chromosomes of the old%                population. Each line corresponds to one individual%    RecOpt    - (optional) Scalar containing the probability of %                recombination/crossover occurring between pairs%                of individuals.%                if omitted or NaN, 1 is assumed%    SUBPOP    - (optional) Number of subpopulations%                if omitted or NaN, 1 subpopulation is assumed%% Output parameter:%    NewChrom  - Matrix containing the chromosomes of the population%                after recombination in the same format as OldChrom.%  Author:    Hartmut Pohlheim%  History:   18.03.94     file createdfunction NewChrom = recombin(REC_F, Chrom, RecOpt, SUBPOP);% Check parameter consistency   if nargin < 2, error('Not enough input parameter'); end   % Identify the population size (Nind)   [Nind,Nvar] = size(Chrom);    if nargin < 4, SUBPOP = 1; end   if nargin > 3,      if isempty(SUBPOP), SUBPOP = 1;      elseif isnan(SUBPOP), SUBPOP = 1;      elseif length(SUBPOP) ~= 1, error('SUBPOP must be a scalar'); end   end   if (Nind/SUBPOP) ~= fix(Nind/SUBPOP), error('Chrom and SUBPOP disagree'); end   Nind = Nind/SUBPOP;  % Compute number of individuals per subpopulation   if nargin < 3, RecOpt = 0.7; end   if nargin > 2,      if isempty(RecOpt), RecOpt = 0.7;      elseif isnan(RecOpt), RecOpt = 0.7;      elseif length(RecOpt) ~= 1, error('RecOpt must be a scalar');      elseif (RecOpt < 0 | RecOpt > 1), error('RecOpt must be a scalar in [0, 1]'); end   end% Select individuals of one subpopulation and call low level function   NewChrom = [];   for irun = 1:SUBPOP,      ChromSub = Chrom((irun-1)*Nind+1:irun*Nind,:);        NewChromSub = feval(REC_F, ChromSub, RecOpt);      NewChrom=[NewChrom; NewChromSub];   end% End of function

⌨️ 快捷键说明

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