public void SavePopulation(string name, List <Individual> population)
    {
        PopulationToSave i = new PopulationToSave();

        i.mutationRate   = Parameters.mutationRate;
        i.crossoverRate  = Parameters.crossoverRate;
        i.populationSize = Parameters.populationSize;
        i.hiddenNodes    = Parameters.hiddenNodes;
        i.hiddenLayers   = Parameters.hiddenLayers;
        i.Population     = population;
        i.name           = name;


        string fileName = null;

        for (int j = 1; j < 21; j++)
        {
            fileName = "pop" + j + ".bin";
            if (!File.Exists(fileName))
            {
                break;
            }
            else if (j == 20)
            {
                File.Delete(fileName);
            }
        }


        FileStream stream    = File.Create(fileName);
        var        formatter = new BinaryFormatter();

        formatter.Serialize(stream, i);
        stream.Close();
    }
Example #2
0
    public GeneticAlgorithm(int populationSize, int geneSize, Random rand)
    {
        Generation = 1;
        Population = new List <Individual>();
        this.Rand  = rand;
        sv         = new SaveLoad();

        if (Parameters.load)
        {
            if (Parameters.file.Contains("pop"))
            {
                PopulationToSave pop = sv.LoadPopulation(Parameters.file);
                Population     = pop.Population;
                populationSize = pop.populationSize;
                geneSize       = pop.hiddenLayers * pop.hiddenNodes + Parameters.outputs;
            }
            else
            {
                IndividualToSave ind = sv.LoadIndividual(Parameters.file);
                geneSize = ind.individual.genes.Length;
                Parameters.hiddenNodes  = ind.hiddenNodes;
                Parameters.hiddenLayers = ind.hiddenLayers;
                Population.Add(ind.individual);
            }
        }

        while (Population.Count < populationSize)
        {
            Population.Add(new Individual(geneSize, rand));
        }
    }
Example #3
0
    public void OnPopClickLoad()
    {
        PopulationToSave populationToSave = sl.LoadPopulation("test.bin");

        Start();
        ga.Population = populationToSave.Population;
    }
    public PopulationToSave LoadPopulation(string name)
    {
        var              formatter = new BinaryFormatter();
        FileStream       stream    = File.OpenRead(name);
        PopulationToSave i         = (PopulationToSave)formatter.Deserialize(stream);

        stream.Close();
        return(i);
    }
Example #5
0
 public void switchState()
 {
     if (dropdown.value != 0)
     {
         if (dropdown.value == 1)
         {
             listOfCars.Clear();
             thisDropdown.options.Clear();
             thisDropdown.options.Add(new Dropdown.OptionData()
             {
                 text = ""
             });
             for (int i = 0; i < 21; i++)
             {
                 if (File.Exists("car" + i + ".bin"))
                 {
                     IndividualToSave ind = sv.LoadIndividual("car" + i + ".bin");
                     thisDropdown.options.Add(new Dropdown.OptionData()
                     {
                         text = ind.name
                     });
                     listOfCars.Add(thisDropdown.options.Count - 1, "car" + i + ".bin");
                 }
             }
         }
         else
         {
             listOfPopulations.Clear();
             thisDropdown.options.Clear();
             thisDropdown.options.Add(new Dropdown.OptionData()
             {
                 text = ""
             });
             for (int i = 1; i < 21; i++)
             {
                 if (File.Exists("pop" + i + ".bin"))
                 {
                     PopulationToSave ind = sv.LoadPopulation("pop" + i + ".bin");
                     thisDropdown.options.Add(new Dropdown.OptionData()
                     {
                         text = ind.name
                     });
                     listOfPopulations.Add(thisDropdown.options.Count - 1, "pop" + i + ".bin");
                 }
             }
         }
     }
     else
     {
         thisDropdown.options.Clear();
     }
 }