def UnitTestController(fileName): ''' Tests the approximated command obtained from training states ''' rs = ReadXmlFile(fileName) fa = initController(rs) stateAll, commandAll = stateAndCommandDataFromTrajs( loadStateCommandPairsByStartCoords(pathDataFolder + "TrajRepository/")) #stateAll, commandAll = stateAndCommandDataFromTrajs(loadStateCommandPairsByStartCoords(BrentTrajectoriesFolder)) #print ("len:", len(commandAll[0])) state = np.vstack(np.array(stateAll)) command = np.vstack(np.array(commandAll)) fa.getTrainingData(state, command) if (rs.regression == "RBFN"): fa.train(rs.lamb) else: fa.train() fa.saveTheta("test") fa.loadTheta("test") for _ in os.listdir(BrentTrajectoriesFolder): for i in range(len(state)): if rd.random() < 0.06: outNN = fa.computeOutput(np.array(state[i])) print("Real :", command[i]) print("Learn :", outNN)
def setPosSquare(): rs = ReadXmlFile("setup.xml") filename3 = pathDataFolder + "PosSquare" data3 = [] for j in range(20): for i in range(20): point = [rs.XTarget - 0.3 + i * 0.03, rs.YTarget - 0.4 + j * 0.01] data3.append(point) np.savetxt(filename3, data3)
def runChoice(): checkL = True fileName = raw_input('Name of file to load setup : ') rs = ReadXmlFile(fileName) while checkL: printMainMenu() choix = input('Enter the number corresponding to the script you want to run: ') choix = int(choix) if(chooseFunction(choix, rs)==0): break
def setPosCircu1(): rs = ReadXmlFile("setup.xml") filename = pathDataFolder + "PosCircu1" data = [] point = [ rs.XTarget + (0.1 + 3 * 0.1) * np.cos(-3 * np.pi / 12 - np.pi / 4), rs.YTarget + (0.1 + 3 * 0.1) * np.sin(-3 * np.pi / 12 - np.pi / 4) ] data.append(point) np.savetxt(filename, data)
def UnitTestArmModel(fileName): ''' Tests the next state ''' rs = ReadXmlFile(fileName) arm = Arm26() arm.setDT(rs.dt) state, estimState, command, noisycommand, nextEstimState, nextState = {}, {}, {}, {}, {}, {} for el in os.listdir(BrentTrajectoriesFolder): state[el], estimState[el], command[el], noisycommand[ el], nextEstimState[el], nextState[el] = [], [], [], [], [], [] data = np.loadtxt(BrentTrajectoriesFolder + el) for i in range(data.shape[0]): estimState[el].append( np.array([data[i][4], data[i][5], data[i][6], data[i][7]])) state[el].append( np.array([data[i][8], data[i][9], data[i][10], data[i][11]])) noisycommand[el].append( np.array([ data[i][12], data[i][13], data[i][14], data[i][15], data[i][16], data[i][17] ])) command[el].append( np.array([ data[i][18], data[i][19], data[i][20], data[i][21], data[i][22], data[i][23] ])) nextEstimState[el].append( np.array([data[i][24], data[i][25], data[i][26], data[i][27]])) nextState[el].append( np.array([data[i][28], data[i][29], data[i][30], data[i][31]])) for el in os.listdir(BrentTrajectoriesFolder): for i in range(len(state[el])): if rd.random() < 0.06: outNextStateNoisy = arm.computeNextState( noisycommand[el][i], state[el][i]) outNextState = arm.computeNextState(command[el][i], state[el][i]) print("U :", command[el][i]) print("UNoisy :", noisycommand[el][i]) print( "---------------------------------------------------------" ) print("Real :", nextState[el][i]) print("ArmN :", outNextStateNoisy) print("Arm26 :", outNextState) print( "---------------------------------------------------------" )
def setPosCircu28(): rs = ReadXmlFile("setup.xml") filename = pathDataFolder + "PosCircu28" data2 = [] for j in range(4): for i in range(7): point = [ rs.XTarget + (0.1 + j * 0.1) * np.cos(-i * np.pi / 12 - np.pi / 4), rs.YTarget + (0.1 + j * 0.1) * np.sin(-i * np.pi / 12 - np.pi / 4) ] data2.append(point) np.savetxt(filename, data2)
def setPosCircu540(): rs = ReadXmlFile("setup.xml") filename2 = pathDataFolder + "PosCircu540" data2 = [] for j in range(20): for i in range(27): point = [ rs.XTarget + (0.1 + j * 0.02) * np.cos(-i * np.pi / 40 - np.pi / 5), rs.YTarget + (0.1 + j * 0.02) * np.sin(-i * np.pi / 40 - np.pi / 5) ] data2.append(point) np.savetxt(filename2, data2)
def testRegression(setupFile, thetaFile): """ """ rs=ReadXmlFile(setupFile) stateAll, commandAll = loadTrajs(pathDataFolder + "Brent/", 0.01, rs.det) stateAll=np.array(stateAll) arm=ArmType[rs.Arm]() trajReg = np.empty_like(stateAll) trajMaker = TrajMaker(rs,0.02,None,rs.path+thetaFile) for i in range(stateAll.shape[0]): coordHand = arm.mgdEndEffector(stateAll[i][0][2:]) trajReg[i]=trajMaker.runTrajectory2(coordHand[0], coordHand[1])[0] plotRegBrent(trajReg, stateAll)
def runChoice(): checkL = True fileName = 'setupHitVelgamma6.xml' rs = ReadXmlFile(fileName) nameTheta = 'Best' nameF = 'results_folder' nbret = 5 generateFromCMAESNController(nbret, rs, nameTheta, nameF) plotVelocityProfile("OPTI", rs, nameF) plotXYPositions("OPTI", rs, nameF, "All", False) plotCostColorMap("OPTI", rs, nameF) plotTimeDistanceTarget(nameF, rs) plotFittsLaw(nameF, rs) plotTimeColorMap("OPTI", rs, nameF) plotScattergram("OPTI", nameF, rs)
def run_missing_CMAES(): rs = ReadXmlFile(sys.argv[1]) nb_process = 20 for gamma in range(3, 9): for targetsize in [0.005, 0.01, 0.02, 0.04]: for i in range(15): if not check_if_theta_file_exists(gamma, targetsize, i): print("gamma =", gamma, "nbtheta:", count_best_files(gamma)) p = ThreadPool(processes=15) #run cmaes on each targets size on separate processor posIni = np.loadtxt(pathDataFolder + rs.experimentFilePosIni) p.map( partial(launchCMAESForSpecificTargetSizeAndSpecificPoint, targetsize, rs, True, noise), enumerate(posIni)) p.close() p.join()
def setPosCircu15(): rs = ReadXmlFile("setup.xml") filename = pathDataFolder + "PosCircu15" data = [] for i in range(3): point = [ rs.XTarget + 0.0975 * np.cos((-i - 1) * np.pi / 4), rs.YTarget + 0.0975 * np.sin((-i - 1) * np.pi / 4) ] data.append(point) for i in range(5): point = [ rs.XTarget + 0.243 * np.cos(-i * np.pi / 8 - np.pi / 4), rs.YTarget + 0.243 * np.sin(-i * np.pi / 8 - np.pi / 4) ] data.append(point) for i in range(7): point = [ rs.XTarget + 0.39 * np.cos(-i * np.pi / 12 - np.pi / 4), rs.YTarget + 0.39 * np.sin(-i * np.pi / 12 - np.pi / 4) ] data.append(point) np.savetxt(filename, data)
from Main.MainCMAES import generateFromRegression from Regression.RunRegression import run from Plot.plotFunctions import plotXYPositions from Main.Test import * from Utils.Chrono import Chrono from Utils.ReadXmlFile import ReadXmlFile setupFile = "setupRBFN.xml" thetaName = "ScriptRBFNxml" folder = "TrajRBFNxml" rs = ReadXmlFile(setupFile) c = Chrono() run(rs) c.stop() generateFromRegression(1, rs, thetaName, folder) plotXYPositions("Regression", rs, folder, "All", True) testRegression(rs, thetaName, folder)
from Utils.Chrono import Chrono from Utils.ReadXmlFile import ReadXmlFile from Utils.FileReading import loadTrajForModel from Experiments.Experiments import Experiments from GlobalVariables import pathDataFolder from Regression.NeuraNetTF import NeuralNetTF import numpy as np rs=ReadXmlFile("setupNN1th.xml") foldername = rs.CMAESpath + str(0.04) + "/" thetaname = foldername + rs.thetaFile exp = Experiments(rs, 0.04, False, foldername, thetaname,rs.popsizeCmaes,rs.period, "Inv") #exp2 = Experiments(rs, 0.04, False, foldername, thetaname,rs.popsizeCmaes,rs.period,"Reg") exp3 = Experiments(rs, 0.04, False, foldername, thetaname,rs.popsizeCmaes,rs.period,"Hyb") ''' c=Chrono() for i in range(30): cost, time = exp.runMultiProcessTrajectories(10) c.stop() print("Average cost: ", cost) print("Average time: ", time) ''' stateAndCommand, nextState = loadTrajForModel(pathDataFolder + "Brent/", 10) #stateAndCommand, nextState = loadTrajForModel(pathDataFolder + "CMAEScluster/0.02/cluster/Log/", 10) state=stateAndCommand[:,:4] command=stateAndCommand[:,4:] #exp2.tm.stateEstimator.initStore(state) exp3.tm.stateEstimator.initStore(state)
from multiprocess.pool import ThreadPool from GlobalVariables import pathDataFolder from Utils.Chrono import Chrono def check_if_theta_file_exists(gamma, target_size, num): dir = "../Data/CMAESK10gamma" + str(gamma) + "/" + str( target_size) + "/" + str(num) + "/Theta/" return os.path.isdir(dir) def launch(rs, gamma): gamma = int(gamma) all_points = [] for target_size in [0.005, 0.01, 0.02, 0.04]: for i in range(15): if not check_if_theta_file_exists(gamma, target_size, i): all_points.append([i, target_size]) p = ThreadPool(processes=len(all_points)) posIni = np.loadtxt(pathDataFolder + rs.experimentFilePosIni) p.map(partial(launchCMAESMissing, rs, True, gamma), [[point[0], posIni[point[0]], point[1]] for point in all_points]) p.close() p.join() if __name__ == '__main__': rs = ReadXmlFile(sys.argv[1]) launch(rs, float(sys.argv[2]))
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Author: Corentin Arnaud Description: plot data from CMAES ''' from Utils.ReadXmlFile import ReadXmlFile from Plot.plotFunctions import * fileName = "setupK10gamma3.xml" folder = "Best" rs = ReadXmlFile(fileName) plotScattergram("OPTI", folder, rs) plotCostColorMap("OPTI", rs, folder) plotCostColorMapFor12("OPTI", rs, folder) plotTimeColorMap("OPTI", rs, folder) plotPerfSizeDist(folder, rs) plotTimeDistanceTarget(folder, rs) plotFittsLaw(folder, rs) plotXYPositions("OPTI", rs, folder, "All", False) plotXYPositions("OPTI", rs, folder, "All", False, zoom=True) plotVelocityProfile("OPTI", rs, folder)