?? arithxover.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 + -