public void InitializePanelWithTrainerData() {
		DebugBot.DebugFunctionCall("TFitnessUI; InitializePanelWithTrainerData(); ", debugFunctionCalls);
		
		Player currentPlayer = trainerModuleScript.gameController.masterTrainer.PlayerList[trainerModuleScript.gameController.masterTrainer.CurPlayer-1];
		// SET PENDING values from trainer data:
		if(pendingFitnessManager == null) {
			pendingFitnessManager = new FitnessManager(currentPlayer);
			//CopyFitnessComponentList(currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.masterFitnessCompList, pendingFitnessManager.masterFitnessCompList);
			InitializePanelFitnessCompList();
		}
		if(pendingMiniGameManager == null) {
			pendingMiniGameManager = new MiniGameManager(currentPlayer);		
		}
		currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.UpdatePopulationSize(); // Tie this into Population!!!!!
		currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.SetMasterFitnessComponentList(); // add fitnessComp lists from brain and minigame
		pendingFitnessManager.SetMasterFitnessComponentList();

		// OLD:
		List<FitnessComponent> dataFitnessComponentList = currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.masterFitnessCompList;
		CopyFitnessComponentList(dataFitnessComponentList, pendingFitnessManager.masterFitnessCompList);
		// NEW:
		List<FitnessComponent> dataBrainFitnessComponentList = currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.brainFitnessComponentList;
		CopyFitnessComponentList(dataBrainFitnessComponentList, pendingFitnessManager.brainFitnessComponentList);
		List<FitnessComponent> dataGameFitnessComponentList = currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.gameFitnessComponentList;
		CopyFitnessComponentList(dataGameFitnessComponentList, pendingFitnessManager.gameFitnessComponentList);

		InitializePanelFitnessCompList();

		valuesChanged = false;
		applyPressed = false;

		UpdateUIWithCurrentData();
	}
    public void CreateFitnessComponentEvaluationGroup(FitnessManager fitnessManager, int genomeIndex)
    {
        for (int i = 0; i < fitnessManager.fitnessComponentDefinitions.Count; i++)
        {
            switch (fitnessManager.fitnessComponentDefinitions[i].type)
            {
            case FitnessComponentType.DistanceToEnemy:
                FitCompDistanceToEnemy fitCompDistanceToTargetSquared = new FitCompDistanceToEnemy(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompDistanceToTargetSquared);
                break;

            case FitnessComponentType.Random:
                FitCompRandom fitCompRandom = new FitCompRandom(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompRandom);
                break;

            case FitnessComponentType.WinLoss:
                FitCompWinLoss fitCompWinLoss = new FitCompWinLoss(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompWinLoss);
                break;

            default:
                Debug.LogError("No such component type! (" + fitnessManager.fitnessComponentDefinitions[i].type.ToString() + ")");
                break;
            }
        }

        fitnessManager.AddNewFitCompEvalGroup(this, genomeIndex);
    }
Exemple #3
0
    private void SetUpDefaultFitnessComponents(Challenge.Type challengeType, FitnessManager fitnessManager)
    {
        switch (challengeType)
        {
        case Challenge.Type.Test:
            FitnessComponentDefinition newComponent = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(newComponent);
            break;

        case Challenge.Type.Racing:
            FitnessComponentDefinition newComponentRacing = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(newComponentRacing);
            break;

        case Challenge.Type.Combat:
            FitnessComponentDefinition newComponentCombat = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(newComponentCombat);
            break;

        default:
            Debug.LogError("ChallengeType Not Found! " + challengeType.ToString());
            break;
        }

        fitnessManager.SetPendingFitnessListFromMaster(); // make pending list a copy of the primary
    }
    private void EnvironmentCrossover()
    {
        List <EnvironmentGenome> newGenGenomeList = new List <EnvironmentGenome>(); // new population!

        FitnessManager          fitnessManager          = teamsConfig.environmentPopulation.fitnessManager;
        TrainingSettingsManager trainingSettingsManager = teamsConfig.environmentPopulation.trainingSettingsManager;
        float mutationChance   = trainingSettingsManager.mutationChance;
        float mutationStepSize = trainingSettingsManager.mutationStepSize;

        // Keep top-half peformers + mutations:
        for (int x = 0; x < teamsConfig.environmentPopulation.environmentGenomeList.Count; x++)
        {
            if (false)   //x == 0) {
            // Top performer stays
            {
                EnvironmentGenome parentGenome = teamsConfig.environmentPopulation.environmentGenomeList[fitnessManager.rankedIndicesList[x]];
                parentGenome.index = 0;
                newGenGenomeList.Add(parentGenome);
            }
            else
            {
                int parentIndex = fitnessManager.GetAgentIndexByLottery();

                EnvironmentGenome parentGenome = teamsConfig.environmentPopulation.environmentGenomeList[parentIndex];
                EnvironmentGenome newGenome    = parentGenome.BirthNewGenome(parentGenome, newGenGenomeList.Count, teamsConfig.challengeType, mutationChance, mutationStepSize);

                newGenGenomeList.Add(newGenome);
            }
        }

        for (int i = 0; i < teamsConfig.environmentPopulation.environmentGenomeList.Count; i++)
        {
            teamsConfig.environmentPopulation.environmentGenomeList[i] = newGenGenomeList[i];
        }
    }
    private void AgentCrossover(int playerIndex)
    {
        List <BrainGenome> newGenBrainGenomeList = new List <BrainGenome>(); // new population!

        FitnessManager          fitnessManager          = teamsConfig.playersList[playerIndex].fitnessManager;
        TrainingSettingsManager trainingSettingsManager = teamsConfig.playersList[playerIndex].trainingSettingsManager;

        // Keep top-half peformers + mutations:
        for (int x = 0; x < teamsConfig.playersList[playerIndex].agentGenomeList.Count; x++)
        {
            if (x == 0)
            {
                BrainGenome parentGenome = teamsConfig.playersList[playerIndex].agentGenomeList[fitnessManager.rankedIndicesList[x]].brainGenome;
                //parentGenome.index = 0;
                newGenBrainGenomeList.Add(parentGenome);
            }
            else
            {
                BrainGenome newBrainGenome = new BrainGenome();

                int parentIndex = fitnessManager.GetAgentIndexByLottery();

                BrainGenome parentGenome = teamsConfig.playersList[playerIndex].agentGenomeList[parentIndex].brainGenome;

                newBrainGenome.SetToMutatedCopyOfParentGenome(parentGenome, trainingSettingsManager);
                newGenBrainGenomeList.Add(newBrainGenome);
            }
        }

        for (int i = 0; i < teamsConfig.playersList[playerIndex].agentGenomeList.Count; i++)
        {
            teamsConfig.playersList[playerIndex].agentGenomeList[i].brainGenome = newGenBrainGenomeList[i];
        }
    }
Exemple #6
0
    private void SetUpDefaultFitnessComponents(FitnessManager fitnessManager)
    {
        FitnessComponentDefinition newComponentCombat = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 1f, true);

        fitnessManager.fitnessComponentDefinitions.Add(newComponentCombat);

        //fitnessManager.SetPendingFitnessListFromMaster(); // make pending list a copy of the primary
    }
Exemple #7
0
    public void BuildTexturesFitnessPerGen(FitnessManager fitnessManager)
    {
        //DataManager dataManager = player.dataManager;
        //BuildTexturesFitnessBasic(dataManager);
        //BuildTexturesFitnessAgentsLastGen(dataManager);
        //BuildTexturesFitnessComponents(dataManager);

        BuildTexturesFitnessBasic(fitnessManager);
    }
	// Constructor Methods:
	public Trial() {
		DebugBot.DebugFunctionCall("Trial; Trial(); Constructor", debugFunctionCalls);

		miniGameManager = new MiniGameManager(playerRef);
		fitnessManager = new FitnessManager(playerRef);
		//miniGameManager.playerRef = playerRef;
		//miniGameManager.gameType = MiniGameManager.MiniGameType.None;
		//masterMiniGame.Shout ();  // DEBUG METHOD
		numberOfPlays = 1;
		maxEvaluationTimeSteps = 30;
		power = 1f;
		weight = 1f;
	}
    // Constructor Methods:
    public Trial()
    {
        DebugBot.DebugFunctionCall("Trial; Trial(); Constructor", debugFunctionCalls);

        miniGameManager = new MiniGameManager(playerRef);
        fitnessManager  = new FitnessManager(playerRef);
        //miniGameManager.playerRef = playerRef;
        //miniGameManager.gameType = MiniGameManager.MiniGameType.None;
        //masterMiniGame.Shout ();  // DEBUG METHOD
        numberOfPlays          = 1;
        maxEvaluationTimeSteps = 30;
        power  = 1f;
        weight = 1f;
    }
    // Representative system will be expanded later - for now, just defaults to Top # of performers
    public PlayerPopulation(int index, BodyGenome bodyTemplate, int numGenomes, int numPerfReps)
    {
        this.index = index;

        // Re-Factor:
        bodyGenomeTemplate = new BodyGenome();
        bodyGenomeTemplate.CopyBodyGenomeFromTemplate(bodyTemplate);
        //graphKing = new TheGraphKing();

        popSize = numGenomes;
        //this.numBaseline = numBaseline;

        // Create blank AgentGenomes for the standard population
        agentGenomeList    = new List <AgentGenome>();
        historicGenomePool = new List <AgentGenome>();
        //baselineGenomePool = new List<AgentGenome>();

        for (int j = 0; j < numGenomes; j++)
        {
            AgentGenome agentGenome = new AgentGenome(j);
            agentGenome.InitializeBodyGenomeFromTemplate(bodyGenomeTemplate);
            agentGenome.InitializeRandomBrainFromCurrentBody(0.2f);
            agentGenomeList.Add(agentGenome);
        }
        //RepopulateBaselineGenomes();
        //AppendBaselineGenomes();

        // Representatives:
        numPerformanceReps = numPerfReps;
        //Debug.Log("historicGenomePool count b4: " + historicGenomePool.Count.ToString());
        int numStartingHistoricalReps = 20;

        for (int h = 0; h < numStartingHistoricalReps; h++)
        {
            historicGenomePool.Add(agentGenomeList[h]); // init
        }
        //Debug.Log("historicGenomePool count after: " + historicGenomePool.Count.ToString());
        ResetRepresentativesList();

        fitnessManager = new FitnessManager();
        SetUpDefaultFitnessComponents(fitnessManager, this.index);
        //fitnessManager.ResetHistoricalData();
        //fitnessManager.ResetCurrentHistoricalDataLists();
        fitnessManager.InitializeForNewGeneration(agentGenomeList.Count);

        trainingSettingsManager = new TrainingSettingsManager(0.075f, 0.04f, 0.015f, 0.003f);
    }
Exemple #11
0
    private void SetUpDefaultFitnessComponents(Challenge.Type challengeType, FitnessManager fitnessManager)
    {
        switch (challengeType)
        {
        case Challenge.Type.Test:
            //FitnessComponentDefinition fitTest1 = new FitnessComponentDefinition(FitnessComponentType.WinLoss, FitnessComponentMeasure.Last, 1f, true);
            //fitnessManager.fitnessComponentDefinitions.Add(fitTest1);
            //FitnessComponentDefinition fitTest2 = new FitnessComponentDefinition(FitnessComponentType.DistanceToTargetSquared, FitnessComponentMeasure.Avg, 1f, false);
            //fitnessManager.fitnessComponentDefinitions.Add(fitTest2);
            FitnessComponentDefinition fitTest1 = new FitnessComponentDefinition(FitnessComponentType.ContactHazard, FitnessComponentMeasure.Avg, 1f, false);
            fitnessManager.fitnessComponentDefinitions.Add(fitTest1);
            FitnessComponentDefinition fitTest2 = new FitnessComponentDefinition(FitnessComponentType.DistToOrigin, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitTest2);
            FitnessComponentDefinition fitTest3 = new FitnessComponentDefinition(FitnessComponentType.Velocity, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitTest3);
            break;

        case Challenge.Type.Racing:
            FitnessComponentDefinition fitCompRacing1 = new FitnessComponentDefinition(FitnessComponentType.ContactHazard, FitnessComponentMeasure.Avg, 1f, false);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompRacing1);
            FitnessComponentDefinition fitCompRacing2 = new FitnessComponentDefinition(FitnessComponentType.Velocity, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompRacing2);
            break;

        case Challenge.Type.Combat:
            FitnessComponentDefinition fitCompCombat1 = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 0.1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat1);
            FitnessComponentDefinition fitCompCombat2 = new FitnessComponentDefinition(FitnessComponentType.Health, FitnessComponentMeasure.Avg, 0.5f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat2);
            FitnessComponentDefinition fitCompCombat3 = new FitnessComponentDefinition(FitnessComponentType.DamageInflicted, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat3);
            FitnessComponentDefinition fitCompCombat4 = new FitnessComponentDefinition(FitnessComponentType.WinLoss, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat4);
            break;

        default:
            Debug.LogError("ChallengeType Not Found! " + challengeType.ToString());
            break;
        }

        fitnessManager.SetPendingFitnessListFromMaster(); // make pending list a copy of the primary
    }
    public void InitializePanelWithTrainerData()
    {
        DebugBot.DebugFunctionCall("TFitnessUI; InitializePanelWithTrainerData(); ", debugFunctionCalls);

        Player currentPlayer = trainerModuleScript.gameController.masterTrainer.PlayerList[trainerModuleScript.gameController.masterTrainer.CurPlayer - 1];

        // SET PENDING values from trainer data:
        if (pendingFitnessManager == null)
        {
            pendingFitnessManager = new FitnessManager(currentPlayer);
            //CopyFitnessComponentList(currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.masterFitnessCompList, pendingFitnessManager.masterFitnessCompList);
            InitializePanelFitnessCompList();
        }
        if (pendingMiniGameManager == null)
        {
            pendingMiniGameManager = new MiniGameManager(currentPlayer);
        }
        currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.UpdatePopulationSize();          // Tie this into Population!!!!!
        currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.SetMasterFitnessComponentList(); // add fitnessComp lists from brain and minigame
        pendingFitnessManager.SetMasterFitnessComponentList();

        // OLD:
        List <FitnessComponent> dataFitnessComponentList = currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.masterFitnessCompList;

        CopyFitnessComponentList(dataFitnessComponentList, pendingFitnessManager.masterFitnessCompList);
        // NEW:
        List <FitnessComponent> dataBrainFitnessComponentList = currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.brainFitnessComponentList;

        CopyFitnessComponentList(dataBrainFitnessComponentList, pendingFitnessManager.brainFitnessComponentList);
        List <FitnessComponent> dataGameFitnessComponentList = currentPlayer.masterTrialsList[currentPlayer.currentTrialForEdit].fitnessManager.gameFitnessComponentList;

        CopyFitnessComponentList(dataGameFitnessComponentList, pendingFitnessManager.gameFitnessComponentList);

        InitializePanelFitnessCompList();

        valuesChanged = false;
        applyPressed  = false;

        UpdateUIWithCurrentData();
    }
    /*public void RepopulateBaselineGenomes() {
     *  if (baselineGenomePool == null) {
     *      baselineGenomePool = new List<AgentGenome>();
     *  }
     *  else {
     *      baselineGenomePool.Clear();
     *  }
     *
     *
     *  for (int j = 0; j < numBaseline; j++) {
     *
     *      AgentGenome baselineGenome = new AgentGenome(j);
     *      baselineGenome.InitializeBodyGenomeFromTemplate(bodyGenomeTemplate);
     *      float increment = (float)j / (float)(numBaseline - 1);
     *      float weightScale = 0f; // how much to scale initial random weights
     *      baselineGenome.InitializeRandomBrainFromCurrentBody(increment * (float)j * weightScale);
     *      baselineGenomePool.Add(baselineGenome);
     *  }
     * }*/

    private void SetUpDefaultFitnessComponents(FitnessManager fitnessManager, int index)
    {
        //FitnessComponentDefinition fitCompCombat1 = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 0.0f, true);
        //fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat1);
        if (index == 0)
        {
            FitnessComponentDefinition fitCompCombat2 = new FitnessComponentDefinition(FitnessComponentType.DistanceToEnemy, FitnessComponentMeasure.Avg, 1f, false);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat2);
        }
        else
        {
            //FitnessComponentDefinition fitCompCombat1 = new FitnessComponentDefinition(FitnessComponentType.Random, FitnessComponentMeasure.Avg, 1f, true);
            //fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat1);
            FitnessComponentDefinition fitCompCombat3 = new FitnessComponentDefinition(FitnessComponentType.DistanceToEnemy, FitnessComponentMeasure.Avg, 1f, true);
            fitnessManager.fitnessComponentDefinitions.Add(fitCompCombat3);
        }

        FitnessComponentDefinition fitComp4 = new FitnessComponentDefinition(FitnessComponentType.WinLoss, FitnessComponentMeasure.Last, 1f, true);

        fitnessManager.fitnessComponentDefinitions.Add(fitComp4);
        //fitnessManager.SetPendingFitnessListFromMaster(); // make pending list a copy of the primary
    }
Exemple #14
0
    // Representative system will be expanded later - for now, just defaults to Top # of performers
    public PlayerPopulation(Challenge.Type challengeType, BodyGenome bodyTemplate, int numGenomes, int numBaseline, int numReps)
    {
        bodyGenomeTemplate = new BodyGenome();
        bodyGenomeTemplate.CopyBodyGenomeFromTemplate(bodyTemplate);

        graphKing = new TheGraphKing();

        popSize          = numGenomes;
        this.numBaseline = numBaseline;

        // Create blank AgentGenomes for the standard population
        agentGenomeList    = new List <AgentGenome>();
        historicGenomePool = new List <AgentGenome>();
        baselineGenomePool = new List <AgentGenome>();

        for (int j = 0; j < numGenomes; j++)
        {
            AgentGenome agentGenome = new AgentGenome(j);
            agentGenome.InitializeBodyGenomeFromTemplate(bodyGenomeTemplate);
            agentGenome.InitializeRandomBrainFromCurrentBody(0.0f);
            agentGenomeList.Add(agentGenome);
        }
        RepopulateBaselineGenomes();
        AppendBaselineGenomes();

        // Representatives:
        numPerformanceReps = numReps;
        ResetRepresentativesList();
        historicGenomePool.Add(agentGenomeList[0]); // init

        fitnessManager = new FitnessManager();
        SetUpDefaultFitnessComponents(challengeType, fitnessManager);
        fitnessManager.ResetHistoricalData();
        fitnessManager.ResetCurrentHistoricalDataLists();
        fitnessManager.InitializeForNewGeneration(agentGenomeList.Count);

        trainingSettingsManager = new TrainingSettingsManager(0.01f, 0.8f, 0.2f, 0.005f);
    }
Exemple #15
0
    //public int numBaselineReps = 0;

    public EnvironmentPopulation(EnvironmentGenome templateGenome, int numGenomes, int numReps)
    {
        this.templateGenome = templateGenome;
        popSize             = numGenomes;
        //this.numBaseline = numBaseline;

        environmentGenomeList = new List <EnvironmentGenome>();
        historicGenomePool    = new List <EnvironmentGenome>();
        //baselineGenomePool = new List<EnvironmentGenome>();

        for (int e = 0; e < numGenomes; e++)
        {
            // Create new environmentGenome
            EnvironmentGenome envGenome = new EnvironmentGenome(e);
            envGenome.InitializeRandomGenomeFromTemplate(templateGenome);
            // Add to envGenomesList:
            environmentGenomeList.Add(envGenome);

            // Create parallel initial batch of genomes to be used as baseline comparison
            //EnvironmentGenome baseGenome = new EnvironmentGenome(e);
            //baseGenome.InitializeRandomGenomeFromTemplate(templateGenome);
            //baselineGenomePool.Add(baseGenome);
        }
        //AppendBaselineGenomes();

        // Representatives:
        numPerformanceReps = numReps;
        ResetRepresentativesList();
        historicGenomePool.Add(environmentGenomeList[0]); // init

        fitnessManager = new FitnessManager();
        SetUpDefaultFitnessComponents(fitnessManager);
        //fitnessManager.ResetHistoricalData();
        fitnessManager.InitializeForNewGeneration(environmentGenomeList.Count);

        trainingSettingsManager = new TrainingSettingsManager(0.25f, 0.05f, 0f, 0f);
    }
    public void SetStatusFromData(TrainingManager trainerRef)
    {
        this.trainerRef = trainerRef;
        int focusPop = trainerRef.evaluationManager.exhibitionTicketList[trainerRef.evaluationManager.exhibitionTicketCurrentIndex].focusPopIndex;

        if (focusPop < 1)
        {
            // env
            currentFitnessManagerRef = trainerRef.teamsConfig.environmentPopulation.fitnessManager;
        }
        else
        {
            currentFitnessManagerRef = trainerRef.teamsConfig.playersList[focusPop - 1].fitnessManager;
        }
        Debug.Log("FitnessUI SetStatusFromData! numFitComps: " + currentFitnessManagerRef.pendingFitnessComponentDefinitions.Count.ToString());

        // FITNESS COMPONENTS LIST!
        foreach (Transform child in transformFitnessCompTableSpace)
        {
            GameObject.Destroy(child.gameObject);
        }
        for (int i = 0; i < currentFitnessManagerRef.pendingFitnessComponentDefinitions.Count; i++)
        {
            GameObject fitnessComponentListRow = (GameObject)Instantiate(goFitnessCompRowPrefab);

            FitnessCompRowUI fitnessComponentRowScript = fitnessComponentListRow.GetComponent <FitnessCompRowUI>();

            fitnessComponentRowScript.fitnessIndex      = i; // CHANGE LATER!!!!!!!
            fitnessComponentRowScript.trainerRef        = trainerRef;
            fitnessComponentRowScript.fitnessFunctionUI = this;
            fitnessComponentRowScript.SetStatusFromData();
            fitnessComponentListRow.transform.SetParent(transformFitnessCompTableSpace);
        }

        buttonNewComponentType.GetComponentInChildren <Text>().text = newComponentType.ToString();
    }
Exemple #17
0
    public void CreateFitnessComponentEvaluationGroup(FitnessManager fitnessManager, int genomeIndex)
    {
        for (int i = 0; i < fitnessManager.fitnessComponentDefinitions.Count; i++)
        {
            switch (fitnessManager.fitnessComponentDefinitions[i].type)
            {
            case FitnessComponentType.DistanceToTargetSquared:
                FitCompDistanceToTargetSquared fitCompDistanceToTargetSquared = new FitCompDistanceToTargetSquared(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompDistanceToTargetSquared);
                break;

            case FitnessComponentType.Velocity:
                FitCompVelocity fitCompVelocity = new FitCompVelocity(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompVelocity);
                break;

            case FitnessComponentType.ContactHazard:
                FitCompContactHazard fitCompContactHazard = new FitCompContactHazard(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompContactHazard);
                break;

            case FitnessComponentType.DamageInflicted:
                FitCompDamageInflicted fitCompDamageInflicted = new FitCompDamageInflicted(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompDamageInflicted);
                break;

            case FitnessComponentType.Health:
                FitCompHealth fitCompHealth = new FitCompHealth(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompHealth);
                break;

            case FitnessComponentType.Random:
                FitCompRandom fitCompRandom = new FitCompRandom(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompRandom);
                break;

            case FitnessComponentType.WinLoss:
                FitCompWinLoss fitCompWinLoss = new FitCompWinLoss(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompWinLoss);
                break;

            case FitnessComponentType.DistToOrigin:
                FitCompDistFromOrigin fitCompDistFromOrigin = new FitCompDistFromOrigin(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompDistFromOrigin);
                break;

            case FitnessComponentType.Altitude:
                FitCompAltitude fitCompAltitude = new FitCompAltitude(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompAltitude);
                break;

            case FitnessComponentType.Custom:
                FitCompCustom fitCompCustom = new FitCompCustom(fitnessManager.fitnessComponentDefinitions[i]);
                fitCompList.Add(fitCompCustom);
                break;

            default:
                Debug.LogError("No such component type! (" + fitnessManager.fitnessComponentDefinitions[i].type.ToString() + ")");
                break;
            }
        }

        fitnessManager.AddNewFitCompEvalGroup(this, genomeIndex);
    }
Exemple #18
0
    /*public void BuildTexturesCurAgentPerTick(Player player, MiniGameManager miniGameManager, int agentIndex) {
     *  DataManager dataManager = player.dataManager;
     *  BuildTexturesCurAgentBrainDiagramTick(player, miniGameManager, agentIndex);
     * }
     *
     * public void BuildTexturesCurAgentPerAgent(Player player, int agentIndex) {
     *  DataManager dataManager = player.dataManager;
     *  BuildTexturesCurAgentBrainDiagramAgent(player, agentIndex);
     * }*/

    //#region fitness graph methods
    public void BuildTexturesFitnessBasic(FitnessManager fitnessManager)
    {
        int texWidthAlltime = fitnessManager.alltimeBaselineVersusAvgScoreRatiosList.Count;

        texFitnessAlltime.Resize(texWidthAlltime, 1);
        int texWidthCurrent = fitnessManager.curBaselineVersusAvgScoreRatiosList.Count;

        texFitnessCurrent.Resize(texWidthCurrent, 1);
        for (int y = 0; y < 1; y++)   // not needed for this due to 1 pixel height
        {
            for (int x = 0; x < texWidthAlltime; x++)
            {
                float pixValueMinRatio = fitnessManager.alltimeBaselineVersusMinScoreRatiosList[x];
                float pixValueAvgRatio = fitnessManager.alltimeBaselineVersusAvgScoreRatiosList[x];
                float pixValueMaxRatio = fitnessManager.alltimeBaselineVersusMaxScoreRatiosList[x];

                float valueRange = fitnessManager.alltimeMaxRatioValue - fitnessManager.alltimeMinRatioValue;
                if (valueRange == 0f)
                {
                    pixValueMinRatio = 1f;
                    pixValueAvgRatio = 1f;
                    pixValueMaxRatio = 1f;
                }
                else
                {
                    pixValueMinRatio = (pixValueMinRatio - fitnessManager.alltimeMinRatioValue) / valueRange;
                    pixValueAvgRatio = (pixValueAvgRatio - fitnessManager.alltimeMinRatioValue) / valueRange;
                    pixValueMaxRatio = (pixValueMaxRatio - fitnessManager.alltimeMinRatioValue) / valueRange;
                }

                texFitnessAlltime.SetPixel(x, y, new Color(pixValueMinRatio, pixValueMaxRatio, pixValueAvgRatio));
            }

            // CURRENT!!!::::
            for (int x = 0; x < texWidthCurrent; x++)
            {
                float pixValueMinRatio = fitnessManager.curBaselineVersusAvgScoreRatiosList[x];
                float pixValueAvgRatio = fitnessManager.curBaselineVersusAvgScoreRatiosList[x];
                float pixValueMaxRatio = fitnessManager.curBaselineVersusAvgScoreRatiosList[x];

                float valueRange = fitnessManager.curMaxRatioValue - fitnessManager.curMinRatioValue;
                if (valueRange == 0f)
                {
                    pixValueMinRatio = 1f;
                    pixValueAvgRatio = 1f;
                    pixValueMaxRatio = 1f;
                }
                else
                {
                    pixValueMinRatio = (pixValueMinRatio - fitnessManager.curMinRatioValue) / valueRange;
                    pixValueAvgRatio = (pixValueAvgRatio - fitnessManager.curMinRatioValue) / valueRange;
                    pixValueMaxRatio = (pixValueMaxRatio - fitnessManager.curMinRatioValue) / valueRange;
                }

                texFitnessCurrent.SetPixel(x, y, new Color(pixValueMinRatio, pixValueMaxRatio, pixValueAvgRatio));
            }
        }
        texFitnessAlltime.Apply();
        texFitnessCurrent.Apply();

        //string fitValues = "Raw: ";
        //for (int x = 0; x < texWidth; x++) {
        //    fitValues += dataManager.generationDataList[x].avgAgentScoreRaw.ToString() + ", ";
        //}
        Debug.Log("TheGraphKing BuildTexturesFitnessBasic Length: " + texFitnessAlltime.width.ToString() + ", cur: " + texFitnessCurrent.width.ToString());
    }