Пример #1
0
    public void TaskChanged()
    {
        var settings = LoadEvolutionSettings();

        settings.task = EvolutionTaskUtil.TaskFromString(taskDropdown.captionText.text);
        SaveEvolutionSettings(settings);
    }
Пример #2
0
    /// <summary>
    /// Loads the simulation from save file of format version 1.
    /// </summary>
    /// <param name="filename">The Filename has to end on .txt .</param>
    /// <param name="content">The Content of the save file.</param>
    private static void LoadSimulationFromSaveFileV1(string filename, string content, SplitOptions splitOptions, CreatureBuilder creatureBuilder, Evolution evolution)
    {
        var creatureName = filename.Split('-')[0].Replace(" ", "");

        var components = content.Split(splitOptions.SPLIT_ARRAY, System.StringSplitOptions.None);

        // extract the save data from the file contents.
        var taskType = EvolutionTaskUtil.TaskForNumber(int.Parse(components[0].Replace(Environment.NewLine, "")));

        var timePerGen = int.Parse(components[1].Replace(Environment.NewLine, ""));

        var creatureData = components[2];

        CreatureSaver.LoadCreatureFromContents(creatureData, creatureBuilder);

        var bestChromosomesData = new List <string>(components[3].Split(splitOptions.NEWLINE_SPLIT, StringSplitOptions.None));
        var bestChromosomes     = new List <ChromosomeStats>();

        foreach (var chromosomeData in bestChromosomesData)
        {
            if (chromosomeData != "")
            {
                var chromosomeInfo  = ChromosomeInfo.FromString(chromosomeData);
                var chromosomeStats = new ChromosomeStats(chromosomeInfo.chromosome, new CreatureStats());
                chromosomeStats.stats.fitness = chromosomeInfo.fitness;

                bestChromosomes.Add(chromosomeStats);
            }
        }

        var chromosomeComponents = components[4].Split(splitOptions.NEWLINE_SPLIT, StringSplitOptions.None);
        var currentChromosomes   = new List <string>();

        foreach (var chromosome in chromosomeComponents)
        {
            if (chromosome != "")
            {
                currentChromosomes.Add(chromosome);
            }
        }

        var currentGeneration = bestChromosomes.Count + 1;

        var settings = new EvolutionSettings();

        settings.task           = taskType;
        settings.simulationTime = timePerGen;
        settings.populationSize = currentChromosomes.Count;

        var networkSettings = new NeuralNetworkSettings();

        evolution.Settings = settings;

        creatureBuilder.ContinueEvolution(evolution, () => {
            CreatureSaver.SaveCurrentCreatureName(creatureName);
            evolution.ContinueEvolution(currentGeneration, settings, networkSettings, bestChromosomes, currentChromosomes);
        });
    }
Пример #3
0
    /// <summary>
    /// Returns the chosen task based on the value of the taskDropDown;
    /// </summary>
    public EvolutionTask GetTask()
    {
        var taskString = taskDropdown.captionText.text.ToUpper();
        var task       = EvolutionTaskUtil.TaskFromString(taskString);

        var settings = LoadEvolutionSettings();

        settings.task = task;
        SaveEvolutionSettings(settings);

        return(task);
    }
Пример #4
0
    public static EvolutionSettings Decode(string encoded)
    {
        var parts    = encoded.Split('#');
        var settings = new EvolutionSettings();

        settings.keepBestCreatures = bool.Parse(parts[1]);
        settings.simulationTime    = int.Parse(parts[2]);
        settings.populationSize    = int.Parse(parts[3]);
        settings.simulateInBatches = bool.Parse(parts[4]);
        settings.batchSize         = int.Parse(parts[5]);
        settings.task         = EvolutionTaskUtil.TaskFromString(parts[6]);
        settings.mutationRate = int.Parse(parts[7]);

        return(settings);
    }