public static void MakeValidRandomEquation(Equation eq)
 {
     do
     {
         eq.Cleanup();
         MakeRandomEquation(eq);
         eq.CalcTotalOffSet();
     } while (!Tools.IsANumber(eq.OffSet));
 }
Exemple #2
0
        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);
        }