Example #1
0
def tune_controller_experiment(useSaved=False, plotResults=False, saveResults=False):
    functionName = 'TuneControllerExperiment'

    # Allow user to select parameters to tune
    params2tune = tools.select_tuned_parameters(controllerParams, controllerStr, tuneAnyParam) # returns list of param names to tune

    # Run experiment if not using previously saved data
    if os.path.isfile(os.path.join(os.environ['MANTRA_TEMP'], taskName+'_exp.csv')):
        (t_exp, r_exp, y_exp, w_exp, u_exp) = tools.read_data_csv(dirName=os.environ['MANTRA_TEMP'], fileName=taskName+'_exp.csv')
    else:
        print "No saved data is found in Resources/Temp.\nFirst use run_tracking_experiment to generate new data.\n"                
    
    # Assemble arguments and call function
    inputData = (t_exp, r_exp, y_exp, w_exp, u_exp)
    taskInfo = (controllerName, taskModel, os.environ['MANTRA_MOFILE']) 
    controllerInfo = (controllerParams, params2tune) 
    controllerParams_optimal = tools.tune_manual_controller(taskInfo, controllerInfo, saveDir=os.environ['MANTRA_TEMP'], inputData=inputData, printVerbose=printVerbose)       

    if plotResults:
        (t_sim, r_sim, y_sim, w_sim, u_sim) = tools.read_data_csv(dirName=os.environ['MANTRA_TEMP'], fileName=taskName+'_sim.csv')
        (t_exp, r_exp, y_exp, w_exp, u_exp) = tools.read_data_csv(dirName=os.environ['MANTRA_TEMP'], fileName=taskName+'_exp.csv')
        y_sim_interp = numpy.interp(t_exp, t_sim, y_sim) 
        u_sim_interp = numpy.interp(t_exp, t_sim, u_sim) 
        tools.plot_variable_trajectories(t_exp, ((r_exp, y_exp, y_sim_interp, 'Reference State', 'Experimental Measured State', 'Simulated Measured State'), (w_exp, u_exp, u_sim_interp, 'Disturbance Input', 'Experimental Control Input', 'Simulated Control Input')), "Experimental vs. Simulated Controller")

    print "Controller parameters chosen:"
    print params2tune
    print "Optimal parameter values:"
    print controllerParams_optimal
    
    # Stop OMC Server
    fmi.stop_openmodelica_server()
Example #2
0
def tune_controller_simulation(plotResults=False, saveResults=False):    
    functionName = 'TuneControllerSimulation'

    # Allow user to select parameters to tune
    params2tune = tools.select_tuned_parameters(controllerParams, controllerStr, tuneAnyParam) # returns list of param names to tune

    # Assemble arguments and call function
    taskInfo = (controllerName, taskModel, os.environ['MANTRA_MOFILE']) 
    controllerInfo = (controllerParams, params2tune) 
    controllerParams_optimal = tools.tune_manual_controller(taskInfo, controllerInfo, saveDir=os.environ['MANTRA_TEMP'], inputData=False, printVerbose=printVerbose)       

    if plotResults:
        (t_sim, r_sim, y_sim, w_sim, u_sim) = tools.read_data_csv(dirName=os.environ['MANTRA_TEMP'], fileName=taskName+'_sim.csv')
        tools.plot_variable_trajectories(t_sim, ((r_sim, y_sim, 'Reference State', 'Measured State'), (w_sim, u_sim, 'Disturbance Input', 'Control Input')), "Simulated Tracking Task")

    print "Controller parameters chosen:"
    print params2tune
    print "Optimal parameter values:"
    print controllerParams_optimal
    
    # Stop OMC Server
    fmi.stop_openmodelica_server()