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