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(); }
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); }
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; } }