コード例 #1
0
    void RunNextTrial()
    {
        int currentFinalIndex = (currentInitialTargetId + 1) % targets.Length;

        if (currentInitialTargetId < targets.Length)
        {
            TrialMeasurements lastTrial = null;
            if (blockMeasurements.trialsData.Count > 0)
            {
                lastTrial = blockMeasurements.trialsData[blockMeasurements.trialsData.Count - 1];
            }
            if (task == ExperimentTask.ReciprocalDragging)
            {
                currentTrial = new DragTestController(currentInitialTargetId, targets[currentInitialTargetId], targets[currentFinalIndex], this, cursor, lastTrial);
            }
            else
            {
                currentTrial = new TappingTrialController(currentInitialTargetId, targets[currentInitialTargetId], targets[currentFinalIndex], this, cursor, lastTrial);
            }
            currentTrial.StartTrial();
        }
        else
        {
            FinishBlockOfTrials();
        }
    }
コード例 #2
0
    public void FixedUpdate()
    {
        Time.timeScale = TimeScale;

        if (!IsTrialRunning)
        {
            if (TrialCount < PopulationSize)
            {
                int index = TrialCount;

                TrialController.StartTrial(leftRules[index], rightRules[index]);
                IsTrialRunning = true;
            }
            else
            {
                using (var file = new StreamWriter(FilePath, true))
                    file.WriteLine(GenerationCount + "," + leftRules.Average(x => x.Fitness) + "," + leftRules.Max(x => x.Fitness) + "," + leftRules.Min(x => x.Fitness));

                Debug.Log("BREEDING!");
                leftRules  = GeneticAlgorithm.BreedNewGeneration(leftRules, MutationChance);
                rightRules = GeneticAlgorithm.BreedNewGeneration(rightRules, MutationChance);
                Debug.Log("Finished Breeding!");

                TrialCount = 0;
                GenerationCount++;

                if (GenerationCount >= GenerationLimit)
                {
                    TimeScale = 0;
                }
            }
        }
    }