def plot_avg_planning_time_vs_trust_region(self, results): # results = list(self.db.find({"type": "kuka_only_random_trust_region"})) # result = list(self.db.find({"type": "donbot_arm_only_random_trust_region"})) # print len(result) trust_region = DefaultOrderedDict(list) plan_t = DefaultOrderedDict(list) sol_t = DefaultOrderedDict(list) col_t = DefaultOrderedDict(list) prb_t = DefaultOrderedDict(list) for res in results: trust = res["solver_config"]["trust_region_size"] trust_region[trust].append(trust) plan_t[trust].append(res["planning_time"]) sol_t[trust].append(res["solving_time"]) col_t[trust].append(res["collision_check_time"]) prb_t[trust].append(res["prob_model_time"]) avg_planning_time = [] avg_solving_time = [] avg_collision_check_time = [] avg_prob_model_time = [] trust_region = OrderedDict(sorted(trust_region.items())) for k in trust_region: avg_planning_time.append(sum(plan_t[k]) / len(plan_t[k])) avg_solving_time.append(sum(sol_t[k]) / len(sol_t[k])) avg_collision_check_time.append(sum(col_t[k]) / len(col_t[k])) avg_prob_model_time.append(sum(prb_t[k]) / len(prb_t[k])) ys = [avg_planning_time, avg_solving_time, avg_collision_check_time, avg_prob_model_time] xs = [trust_region.keys()] * len(ys) labels = ["Planning time", "Solving time", "Collision check time", "Problem modelling time"] plotter.multi_plot_best_fit_curve(xs, ys, labels, "Average time taken vs Trust region size", "Trust region size", "Average Time (s)", deg=2)
def iterations_vs_trust_region(self, results): trust_region = DefaultOrderedDict(list) qp_iters = DefaultOrderedDict(list) sqp_iters = DefaultOrderedDict(list) for res in results: trust = res["solver_config"]["trust_region_size"] trust_region[trust].append(trust) qp_iters[trust].append(res["num_qp_iterations"]) sqp_iters[trust].append(res["num_sqp_iterations"]) avg_qp_iters = [] avg_sqp_iters = [] trust_region = OrderedDict(sorted(trust_region.items())) for k in trust_region: avg_qp_iters.append(sum(qp_iters[k]) / len(qp_iters[k])) avg_sqp_iters.append(sum(sqp_iters[k]) / len(sqp_iters[k])) ys = [avg_qp_iters, avg_sqp_iters] xs = [trust_region.keys()] * len(ys) labels = ["QP iterations", "SQP iterations"] plotter.multi_plot_best_fit_curve(xs, ys, labels, "Number of SQP and QP iterations vs Trust region", "Trust region", "Number of iterations", deg=2)