📄 plus.m
字号:
function res = plus(g1,g2)
% PLUS - overloaded operator
%
if g1~=g2
error('genes do not match');
end
if isa(g1,'cdv')
mask=make_mask(g1.bits);
for k=1:g1.bits
if mask(k)==0;
new_dna(k)=g1.dna(k);
else
new_dna(k)=g2.dna(k);
end
end
% $$$ d1=g1.dna
% $$$ d2=g2.dna
% $$$ new_dna=new_dna
res=g1;
res.dna=new_dna;
res.value=convert(res);
elseif isa(g1,'ddv')
mask=make_mask(g1.bits);
for k=1:g1.bits
if mask(k)==0;
new_dna(k)=g1.dna(k);
else
new_dna(k)=g2.dna(k);
end
end
if in_range(new_dna,get(g1,'p_val'))
res=g1;
res.dna=new_dna;
res.value=convert(res);
else
disp('rec')
res=g1+g2;
end
% $$$ d1=g1.dna
% $$$ d2=g2.dna
% $$$ new_dna=new_dna
end
function mask = make_mask(b)
% MAKE_MASK -
mask=rand(1,b);
for k=1:b
if mask(k)<0.5
mask(k)=0;
else
mask(k)=1;
end
end
function bool = in_range(dna,val)
% IN_RANGE -
%
x=0;
for k=1:length(dna)
x=x+2^(k-1)*dna(k);
end
x=x+1;
bool=x<=length(val);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -