def eval_func(chromosome): conf = LoadSystemConfiguration() if not initialPopulationSetted: setInitialPopulation(gaEngine) prop = DTIndividualPropertyVanillaEvolutive() precycleFile = os.getcwd()+"/mocap/cmu_mocap/xml/util/walk_precycle.xml" preCycleEmbryo = DTIndividualGeneticTimeSerieFile(precycleFile) preCycleLength = preCycleEmbryo.getLength() if int(conf.getProperty("Concatenate walk cycles?")): embryo = DTIndividualGeneticMatrixWalk(chromosomeToLucyGeneticMatrix(chromosome)) embryoCycleLength = (embryo.getLength() - preCycleLength) / int(conf.getProperty("Concatenate walk cycles?")) else: embryo = DTIndividualGeneticMatrix(chromosomeToLucyGeneticMatrix(chromosome)) embryoCycleLength = embryo.getLength() - preCycleLength if int(conf.getProperty("concatenate external cycle file?")): externalFirstCycleFile = os.getcwd() + conf.getFile("external cycle file") externalFirstCycle = DTIndividualGeneticTimeSerieFile(externalFirstCycleFile) preCycleEmbryo.concatenate(externalFirstCycle) preCycleLength = preCycleEmbryo.getLength() embryoCycleLength = embryoCycleLength - externalFirstCycle.getLength() preCycleEmbryo.concatenate(embryo) newEmbryo = preCycleEmbryo #embryoLength = newEmbryo.getLength() individual = Individual(prop, newEmbryo) individual.setPrecycleLength(preCycleLength) individual.setCycleLength(embryoCycleLength) print "el cycle length seteado es: ", embryoCycleLength ##print "precyclelength: ", preCycleLength ##print "cyclelength: ", embryoCycleLength #individual.setLength(embryoLength) fitness = individual.execute() #return the fitness resulting from the simulator execution if int(conf.getProperty("re-evaluate fittest?"))==True: if fitness > max_score: #is really a better fitness ? candidateFitness = fitness fitness = individual.execute() print "candidateFitness: ", candidateFitness, "fitness: ", fitness while abs(candidateFitness-fitness) > 0.01: candidateFitness=fitness fitness = individual.execute() print "candidateFitness: ", candidateFitness, "fitness: ", fitness #the candidateFitness was validated! fitness = candidateFitness return fitness
def storeExperimentGAparameters(): conf = LoadSystemConfiguration() file = open(os.path.join(experimentDir,"info.txt"),"w") file.write("initialPopulationSize = " + conf.getProperty("Population size") + "\n") file.write("generations = " + conf.getProperty("Number of generations") + "\n") file.write("genome.crossover = " + conf.getProperty("Crossover operator") + "\n") file.write("genome.mutator = " + conf.getProperty("Mutator operator") + "\n") file.write("MutationRate = " + conf.getProperty("MutationRate") + "\n") file.write("selector = " + conf.getProperty("Selection operator") + "\n") file.write("CrossoverRate = " + conf.getProperty("CrossoverRate") + "\n") file.write("ElitismReplacement percentage = " + conf.getProperty("Elitism replacement percentage") + "\n") file.write("Concatenate walk cycles = " + conf.getProperty("Concatenate walk cycles?") + "\n") file.write("concatenate external cycle file = " + conf.getProperty("concatenate external cycle file?") + "\n") file.write("Convergence criteria enable? = " + conf.getProperty("Convergence criteria enable?") + "\n") file.write("Vrep robot model scene = " + conf.getFile("Lucy vrep model") + "\n") file.close()