Changeset 31 for cpp/geno_fx/geno_fx.cpp
 Timestamp:
 10/21/09 23:45:09 (14 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

cpp/geno_fx/geno_fx.cpp
r3 r31 55 55 double Geno_fx::mutateNeuProperty(double current,Neuro *n,int i) 56 56 { 57 if (i==1) return mutateCreep ('f',current,10,10);57 if (i==1) return mutateCreepNoLimit('f',current,10,10); 58 58 ParamInterface *pi; 59 59 if (i>=100) {i=100; pi=&n>getClass()>getProperties();} 60 60 else pi=&n>extraProperties(); 61 double newval ;61 double newval=current; 62 62 /*bool ok=*/getMutatedProperty(*pi,i,current,newval); 63 63 return newval; … … 103 103 } 104 104 105 double Geno_fx::mutateCreep (char type,double current,double mn,double mx)105 double Geno_fx::mutateCreepNoLimit(char type,double current,double mn,double mx) 106 106 { 107 107 double result=RndGen.Gauss(current,(mxmn)/2/5); // /halfinterval, 5 times narrower 108 108 if (type=='d') {result=int(result+0.5); if (result==current) result+=randomN(2)*21;} 109 else result=floor(result*1000)/1000.0; 109 else result=floor(result*1000+0.5)/1000.0; //round 110 return result; 111 } 112 113 double Geno_fx::mutateCreep(char type,double current,double mn,double mx) 114 { 115 double result=mutateCreepNoLimit(type,current,mn,mx); 116 //reflect: 117 if (result>mx) result=mx(resultmx); else 118 if (result<mn) result=mn+(mnresult); 119 //absorb (just in case 'result' exceeded the allowed range so much): 110 120 if (result>mx) result=mx; else 111 121 if (result<mn) result=mn;
Note: See TracChangeset
for help on using the changeset viewer.