private CPopulationFitness calculateSimPopulationFitness(CPopulationInfo populationInfo) { try { ProtocolManager.Open(); Console.WriteLine("Evaluating generation " + populationInfo.Generation); return(ProtocolManager.Client.calculateSimPopulationFitness(populationInfo)); } catch (Exception exception) { Console.WriteLine("Lost connection to evaluator (" + exception.StackTrace + ")"); Console.WriteLine("Sleeping for 2 seconds, creating new connection."); ProtocolManager.Close(); Thread.Sleep(2000); return(calculateSimPopulationFitness(populationInfo)); } }
public List <FitnessInfo> Evaluate(List <FastCyclicNetwork> phenomes) { var populationInfo = new CPopulationInfo { Phenomes = FastCyclicNetworkAdapter.Convert(phenomes), Generation = (int)_ea.CurrentGeneration }; ProtocolManager.Open(); var fitnessInfo = ProtocolManager.Client.calculateSixMultiplexerPopulationFitness(populationInfo); EvaluationCount += (uint)fitnessInfo.EvaluationCount; var result = new List <FitnessInfo>(fitnessInfo.FitnessInfos.Count); for (var i = 0; i < fitnessInfo.FitnessInfos.Count; i++) { var fi = fitnessInfo.FitnessInfos[i]; StopConditionSatisfied |= fi.StopConditionSatisfied; // Verify that the stop condition is actually really satisfied; if not, there is an error in the Java evaluator and we throw an exception if (fi.StopConditionSatisfied) { var sharpneatFitness = _binarySixMultiplexerEvaluator.Evaluate(phenomes[i]); var reallySatisfied = sharpneatFitness._fitness >= 1000; if (!reallySatisfied) { Console.Out.WriteLine("ERROR: " + sharpneatFitness._fitness + " versus " + fi.Fitness); throw new Exception("Noes there is an error in my Java code :("); } else { Console.Out.WriteLine("Yeey, the result is really correct: " + sharpneatFitness._fitness + " versus " + fi.Fitness); } } result.Add(new FitnessInfo( fi.Fitness, fi.AuxFitness.Select(aux => new AuxFitnessInfo(aux.Name, aux.Value)).ToArray()) ); } return(result); }
public List <FitnessInfo> Evaluate(List <FastCyclicNetwork> phenomes) { var populationInfo = new CPopulationInfo { Phenomes = FastCyclicNetworkAdapter.Convert(phenomes), Generation = (int)_ea.CurrentGeneration }; var fitnessInfo = calculateSimPopulationFitness(populationInfo); EvaluationCount += (uint)fitnessInfo.EvaluationCount; var result = new List <FitnessInfo>(fitnessInfo.FitnessInfos.Count); foreach (var fi in fitnessInfo.FitnessInfos) { StopConditionSatisfied |= fi.StopConditionSatisfied; result.Add(new FitnessInfo( fi.Fitness, fi.AuxFitness.Select(aux => new AuxFitnessInfo(aux.Name, aux.Value)).ToArray()) ); } return(result); }