public void SaveIndividual(string name, Individual individual)
    {
        IndividualToSave i = new IndividualToSave();

        i.mutationRate   = Parameters.mutationRate;
        i.crossoverRate  = Parameters.crossoverRate;
        i.populationSize = Parameters.populationSize;
        i.hiddenNodes    = Parameters.hiddenNodes;
        i.hiddenLayers   = Parameters.hiddenLayers;
        i.individual     = individual;
        i.name           = name;

        string fileName = null;

        for (int j = 1; j < 21; j++)
        {
            fileName = "car" + 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();
    }
Ejemplo n.º 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));
        }
    }
    public IndividualToSave LoadIndividual(string name)
    {
        var              formatter = new BinaryFormatter();
        FileStream       stream    = File.OpenRead(name);
        IndividualToSave i         = (IndividualToSave)formatter.Deserialize(stream);

        stream.Close();
        return(i);
    }
Ejemplo n.º 4
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();
     }
 }
    // Start is called before the first frame update
    void Start()
    {
        collisions.isOn = Parameters.collisions;
        wallDeath.isOn  = Parameters.wallDeath;


        List <Dropdown> listOfD = new List <Dropdown>();

        listOfCars = new Hashtable();
        listOfD.Add(dropdown1);
        listOfD.Add(dropdown2);
        listOfD.Add(dropdown3);
        sv = new SaveLoad();
        dropdown2.ClearOptions();
        bool alreadyDone = false;

        foreach (Dropdown d in listOfD)
        {
            d.options.Clear();
            d.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");
                    d.options.Add(new Dropdown.OptionData()
                    {
                        text = ind.name
                    });
                    if (!alreadyDone)
                    {
                        listOfCars.Add(d.options.Count - 1, "car" + i + ".bin");
                    }
                }
            }
            alreadyDone = true;
        }
    }