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

📄 arithxover.m

📁 (用matlab编写的十进制的遗传算法程序)实数编码遗传算法
💻 M
字号:
function [c1,c2] = arithXover(p1,p2,bounds,Ops)
% Arith crossover takes two parents P1,P2 and performs an interpolation
% along the line formed by the two parents.
%
% function [c1,c2] = arithXover(p1,p2,bounds,Ops)
% p1      - the first parent ( [solution string function value] )
% p2      - the second parent ( [solution string function value] )
% bounds  - the bounds matrix for the solution space
% Ops     - Options matrix for arith crossover [gen #ArithXovers]

% Pick a random mix amount
a = rand;
numVar=size(p1,2)-1;
b=round(rand*(numVar-1)+1);
p1;
p2;

for i=1:numVar
   if i<=b
      c1(1:i)=p1(1:i);
      c2(1:i)=p2(1:i);
   else
    % c1(1:numVar)=p1(1:numVar)*a+p2(1:numVar)*(1-a);
    % c2(1:numVar)=p1(1:numVar)*(1-a)+p2(1:numVar)*a;
     c1(1:numVar+1)=p1(1:numVar+1)*a+p2(1:numVar+1)*(1-a);
     c2(1:numVar+1)=p1(1:numVar+1)*(1-a)+p2(1:numVar+1)*a;

   end
end

%pause

      
%a = rand(numVar,1);

% Create the children
%c1 = p1*a     + p2*(1-a);
%c2 = p1*(1-a) + p2*a; 

%c1(1:numVar)=p1(1:numVar)*a+p2(1:numVar)*(1-a);
%c2(1:numVar)=p1(1:numVar)*(1-a)+p2(1:numVar)*a;


%c1 = p1*a     + p2*(1-a);
%c2 = p1*(1-a) + p2*a; 

%pause

%c1(1:numVar) = p1(1:numVar)*a(1:numVar)+ p2(1:numVar)*(1-a(1:numVar));
%c2(1:numVar) = p1(1:numVar)*(1-a(1:numVar)) + p2(1:numVar)*a(1:numVar); 

⌨️ 快捷键说明

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