📄 plus.m
字号:
function res = plus(g1,g2)% PLUS - overloaded operator % if g1~=g2 error('genes do not match');endif 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_dnaendfunction 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; endendfunction bool = in_range(dna,val)% IN_RANGE - % x=0;for k=1:length(dna) x=x+2^(k-1)*dna(k);endx=x+1;bool=x<=length(val);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -