def launchCMAESForSpecificTargetSizeAndSpecificPoint(target_size, rs, save, point, noise=None): ''' Run cmaes for a specific target size Input: -target_size, size of the target, float -setuFile, file of setup, string -save: do we use a previous Best.theta file? True = Yes, False = use current controller, None = random controller noise: noise on muscle, if None, defalt noise from muscle setup, float ''' pos = point[0] x = point[1][0] y = point[1][1] print("Starting the CMAES Optimization for target " + str(target_size) + " for point " + str(pos) + " !") foldername = rs.OPTIpath + str(target_size) + "/" + str(pos) + "/" thetaname = foldername + "Best" if save: checkIfFolderExists(foldername) copyfile(rs.OPTIpath + str(target_size) + "/" + "Best.theta", foldername + "Best.theta") elif save == None: thetaname = None #Initializes all the class used to generate trajectory exp = Experiments(rs, target_size, False, foldername, thetaname, rs.popsizeCmaes, rs.period) if (noise != None): exp.setNoise(noise) theta = exp.tm.controller.getTheta() thetaCMA = theta.flatten() #run the optimization (cmaes) cma.fmin(partial(exp.runTrajectoriesCMAESOnePoint, x, y), thetaCMA, rs.sigmaCmaes, options={ 'maxiter': rs.maxIterCmaes, 'popsize': rs.popsizeCmaes, 'CMA_diagonal': True, 'verb_log': 0, 'verb_disp': 0, 'termination_callback': term() }) print("End of optimization for target " + str(target_size) + " for point " + str(pos) + " !")
def GenerateDataFromThetaNController(rs, target_size, foldername, thetaFile, repeat, save,noise=None): ''' Generate Data from a given theta file Input: -target_size, size of the target, float -save: do we save the results (false when running CMAES)? True = Yes, False = No ''' os.system("rm "+foldername+"/Log/*.log 2>/dev/null") exp = Experiments(rs, target_size, save, foldername,None,rs.popsizeCmaes,rs.period) if(noise!=None): exp.setNoise(noise) cost, time = exp.runTrajectoriesForResultsGenerationNController(repeat,thetaFile) print("Average cost: ", cost) print("Average time: ", time) print("foldername : ", foldername) if (save): exp.saveCost()
def launchCMAESForSpecificTargetSizeAndSpecificPoint(target_size, rs, save, point, noise=None): ''' Run cmaes for a specific target size Input: -target_size, size of the target, float -setuFile, file of setup, string -save: do we use a previous Best.theta file? True = Yes, False = use current controller, None = random controller noise: noise on muscle, if None, defalt noise from muscle setup, float ''' pos=point[0] x=point[1][0] y=point[1][1] print("Starting the CMAES Optimization for target " + str(target_size) + " for point "+ str(pos)+" !") foldername = rs.OPTIpath + str(target_size)+"/"+str(pos)+"/" thetaname = foldername + "Best" if save: checkIfFolderExists(foldername) copyfile(rs.OPTIpath + str(target_size)+"/" + "Best.theta",foldername + "Best.theta") elif save==None: thetaname=None #Initializes all the class used to generate trajectory exp = Experiments(rs, target_size, False, foldername, thetaname,rs.popsizeCmaes,rs.period) if(noise!=None): exp.setNoise(noise) theta = exp.tm.controller.getTheta() thetaCMA = theta.flatten() #run the optimization (cmaes) cma.fmin(partial(exp.runTrajectoriesCMAESOnePoint, x, y), thetaCMA, rs.sigmaCmaes, options={'maxiter':rs.maxIterCmaes, 'popsize':rs.popsizeCmaes, 'CMA_diagonal':True, 'verb_log':0, 'verb_disp':0,'termination_callback':term()}) print("End of optimization for target " + str(target_size) + " for point "+ str(pos)+" !")
def GenerateDataFromThetaNController(rs, target_size, foldername, thetaFile, repeat, save, noise=None): ''' Generate Data from a given theta file Input: -target_size, size of the target, float -save: do we save the results (false when running CMAES)? True = Yes, False = No ''' os.system("rm " + foldername + "/Log/*.log 2>/dev/null") exp = Experiments(rs, target_size, save, foldername, None, rs.popsizeCmaes, rs.period) if (noise != None): exp.setNoise(noise) cost, time = exp.runTrajectoriesForResultsGenerationNController( repeat, thetaFile) print("Average cost: ", cost) print("Average time: ", time) print("foldername : ", foldername) if (save): exp.saveCost()