📄 recombin.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 + -