Exemple #1
0
 /// <summary>
 /// Starts Training
 /// </summary>
 private void StartTraining()
 {
     balacing.IterationCompleted += Balacing_IterationCompleted;
     balacing.IterationStarted   += Balacing_IterationStarted;
     Genetics.Individuum <Genetics.Decision> best = balacing.Do();
     Console.WriteLine("Best: " + best.Fitness.ToString() + ", Iterations: " + iterations.ToString() + " => results saved!");
     TrainingFinished?.Invoke(this, EventArgs.Empty);
 }
Exemple #2
0
        /// <summary>
        /// Outputs best individuum after each iteration
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Balacing_IterationCompleted(object sender, Genetics.IterationArgs <Genetics.Decision> e)
        {
            sw.Stop();
            bool save    = false;
            bool spacing = false;

            if (best != null)
            {
                if (e.Best.Fitness > best.Fitness) //individuum has a higher fitness
                {
                    save = true;
                }
                else if (e.Best.Fitness == best.Fitness)         //Individuum has the same fitness
                {
                    for (int i = 0; i < e.Best.Data.Length; i++) //Check if data array are not-equal
                    {
                        if (e.Best.Data[i] != best.Data[i])
                        {
                            save = true; //not equal save
                            break;
                        }
                    }
                }
            }
            else
            {
                save    = true;
                spacing = true;
            }

            if (save)
            {
                best = e.Best; //set new best

                StringBuilder sb = new StringBuilder();
                if (spacing)
                {
                    sb.Append(Environment.NewLine);
                    sb.Append("=============================================");
                    sb.Append(Environment.NewLine);
                    sb.Append("=============================================");
                    sb.Append(Environment.NewLine);
                    sb.Append("=========== NEW TRAININGS SESSION ===========");
                    sb.Append(Environment.NewLine);
                    sb.Append("=============================================");
                    sb.Append(Environment.NewLine);
                    sb.Append("=============================================");
                    sb.Append(Environment.NewLine);
                }
                sb.Append("Iteration: ");
                sb.Append(e.Iteration.ToString());
                sb.Append(Environment.NewLine);
                sb.Append("Best: ");
                sb.Append(e.Best.Fitness.ToString());
                sb.Append(Environment.NewLine);

                sb.Append("Duration: ");
                sb.Append(sw.ElapsedMilliseconds.ToString());
                sb.Append(Environment.NewLine);

                sb.Append("Primary weapon: ");
                sb.Append(level.PrimaryWeapons[e.Best.Data[0].Value].Name);
                sb.Append(Environment.NewLine);

                sb.Append("Primary suspressed: ");
                sb.Append(e.Best.Data[1].Value == 1 ? "Yes" : "No");
                sb.Append(Environment.NewLine);

                sb.Append("Secndary weapon:");
                sb.Append(level.SecondaryWeapons[e.Best.Data[2].Value].Name);
                sb.Append(Environment.NewLine);

                sb.Append("Secondary suspressed: ");
                sb.Append(e.Best.Data[3].Value == 1 ? "Yes" : "No");
                sb.Append(Environment.NewLine);

                sb.Append("Entry index: ");
                sb.Append(e.Best.Data[4].Value.ToString());
                sb.Append(" Entry Position: ");
                sb.Append(entryPositions[e.Best.Data[4].Value].ToString());
                sb.Append(Environment.NewLine);

                sb.Append("Exit index: ");
                sb.Append(e.Best.Data[5].Value.ToString());
                sb.Append(" Exit Position: ");
                sb.Append(entryPositions[e.Best.Data[5].Value].ToString());
                sb.Append(Environment.NewLine);
                sb.Append("===================================================");
                sb.Append(Environment.NewLine);

                File.AppendAllText("decisions.txt", sb.ToString());
            }
            Console.WriteLine("Iteration " + (e.Iteration + 1).ToString() + " completed: Best = " + e.Best.Fitness.ToString());
        }