nonunifmutation.m

来自「18个遗传算法程序matlab源码」· M 代码 · 共 28 行

M
28
字号
function [parent] = nonUnifMutate(parent,bounds,Ops)% Non uniform mutation changes one of the parameters of the parent% based on a non-uniform probability distribution.  This Gaussian% distribution starts wide, and narrows to a point distribution as the% current generation approaches the maximum generation.%% function [newSol] = nonUnifMutate(parent,bounds,Ops)% parent  - the first parent ( [solution string function value] )% bounds  - the bounds matrix for the solution space% Ops     - Options for nonUnifMutate[gen #nonUnifMutations maxGen b]cg=Ops(1); 			         	% Current Generationmg=Ops(3);                    % Maximum Number of Generationsb=Ops(4);                     % Shape parameterdf = bounds(:,2) - bounds(:,1); 	% Range of the variablesnumVar = size(parent,2)-1; 		% Get the number of variables% Pick a variable to mutate randomly from 1 to number of varsmPoint = round(rand * (numVar-1)) + 1;md = round(rand); 			% Choose a direction of mutationif md 					% Mutate towards upper bound  newValue=parent(mPoint)+delta(cg,mg,bounds(mPoint,2)-parent(mPoint),b);else 					% Mutate towards lower bound  newValue=parent(mPoint)-delta(cg,mg,parent(mPoint)-bounds(mPoint,1),b);endparent(mPoint) = newValue; 		% Make the child

⌨️ 快捷键说明

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