public static void MakeValidRandomEquation(Equation eq) { do { eq.Cleanup(); MakeRandomEquation(eq); eq.CalcTotalOffSet(); } while (!Tools.IsANumber(eq.OffSet)); }
public override Genome EvolveSpecie() { StartFinding(); BestCandidate = new Equation(EInfo, Randomizer); do { ResetSingle(BestCandidate); RandomCand.MakeRandomEquation(BestCandidate); BestCandidate.CalcTotalOffSet(); } while (!Tools.IsANumber(BestCandidate.OffSet)); Equation EvolvedEquation = new Equation(EInfo, Randomizer) { OffSet = float.NaN }; Equation OldEquation = new Equation(EInfo, Randomizer) { OffSet = float.NaN }; bool BestCandEvolved = false; _toCalc = EInfo.coordInfo.expectedResults.Length; while (_toCalc <= EInfo.coordInfo.expectedResults.Length) { int StuckCounter = 0; do { BestCandEvolved = GetNextGen(EvolvedEquation, OldEquation, _toCalc); StuckCounter = SetStuckCounter(StuckCounter, BestCandEvolved); UpdateInfo(); SpecEnviroment.CheckBestCandidate(this.SpecInfo.GetCopy()); //} while (StuckCounter <= EInfo.MaxStuckGens && BestCandidate.OffSet != 0); } while (StuckCounter <= EInfo.MaxStuckGens); break; //_toCalc++; //BestCandidate.OffSet = double.MaxValue; } return(this); }