def run_and_save_ocp(model_path, phase_time, number_shooting_points): ocp = prepare_ocp(model_path=model_path, phase_time=phase_time, number_shooting_points=number_shooting_points, use_symmetry=True, use_actuators=False) for i in range(len(model_path)): ocp.add_plot("CoM", lambda x, u, p: plot_CoM(x, model_path[i]), phase_number=i, plot_type=PlotType.PLOT) ocp.add_plot("CoM_dot", lambda x, u, p: plot_CoM_dot(x, model_path[i]), phase_number=i, plot_type=PlotType.PLOT) sol = ocp.solve(solver_options={ "hessian_approximation": "exact", "max_iter": 10000 }, show_online_optim=True) OptimalControlProgram.save(ocp, sol, "../Results/jumper5phases_exact_sol")
tic = time.time() sol, sol_obj = ocp.solve( show_online_optim=True, return_iterations=False, return_objectives=True, solver_options={ "tol": 1e-3, "max_iter": 500000, "ipopt.bound_push": 1e-10, "ipopt.bound_frac": 1e-10, "ipopt.hessian_approximation": "limited-memory", "output_file": "output.bot", "ipopt.linear_solver": "mumps", # "mumps", # "ma57", "ma86" # "file_print_level": 5, }, ) toc = time.time() - tic print(f"Time to solve : {toc}sec") analyse = Objective.Printer(ocp, sol_obj) t = time.localtime(time.time()) date = f"{t.tm_year}_{t.tm_mon}_{t.tm_mday}" OptimalControlProgram.save(ocp, sol, f"results/{date}_upDown.bo") OptimalControlProgram.save_get_data(ocp, sol, f"results/{date}_upDown.bob") OptimalControlProgram.save_get_data(ocp, sol, f"results/{date}_upDown_interpolate.bob", interpolate_nb_frames=100) # --- Show results --- # result = ShowResult(ocp, sol) result.graphs()
# --- Solve the program --- # tic = time.time() sol, sol_iterations = ocp.solve( show_online_optim=True, return_iterations=True, solver_options={ "tol": 1e-4, "max_iter": 3000, "ipopt.hessian_approximation": "limited-memory" }, ) toc = time.time() - tic print(f"Time to solve : {toc}sec") t = time.localtime(time.time()) date = f"{t.tm_year}_{t.tm_mon}_{t.tm_mday}" OptimalControlProgram.save(ocp, sol, f"results/{date}_xiaModel.bo") OptimalControlProgram.save_get_data(ocp, sol, f"results/{date}_xiaModel.bob", sol_iterations=sol_iterations) OptimalControlProgram.save_get_data( ocp, sol, f"results/{date}_xiaModel_interpolate.bob", interpolate_nb_frames=100) # --- Show results --- # result = ShowResult(ocp, sol) result.graphs()