示例#1
0
 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)
示例#2
0
    def plot_avg_planning_time_vs_samples(self, results):
        # result = list(self.db.find({"solver_config.trust_region_size": 30}))
        # print len(result)
        sam_t = DefaultOrderedDict(list)
        sol_t = DefaultOrderedDict(list)
        col_t = DefaultOrderedDict(list)
        prb_t = DefaultOrderedDict(list)
        cost = DefaultOrderedDict(list)
        for res in results:
            sam = res["planning_request"]["samples"]
            sam_t[sam].append(res["planning_time"])
            sol_t[sam].append(res["solving_time"])
            col_t[sam].append(res["collision_check_time"])
            prb_t[sam].append(res["prob_model_time"])
            a_cost = res["actual_reductions"]
            imp = a_cost[0] - a_cost[-1]
            imp /= a_cost[0]
            imp *= 100
            cost[sam].append(imp)

        samples = []
        avg_planning_time = []
        avg_solving_time = []
        avg_collision_check_time = []
        avg_prob_model_time = []
        avg_cost = []
        sam_t = OrderedDict(sorted(sam_t.items()))
        for k in sam_t:
            # print k, len(sam_t[k])
            samples.append(k)
            avg_planning_time.append(sum(sam_t[k]) / len(sam_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]))
            avg_cost.append(sum(cost[k]) / len(cost[k]))

        ys = [avg_solving_time, avg_collision_check_time, avg_prob_model_time]
        xs = [samples] * len(ys)

        labels = ["Solving time", "Collision check time", "problem modelling time"]
        # plotter.multi_plot_best_fit_curve(xs, ys, labels, "Time vs Number of samples", "Number of samples", "Time (S)",
        plotter.bar_chart(xs, ys, labels, "Time taken vs Number of samples", "Number of samples", "Average Time (s)")
示例#3
0
 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)
示例#4
0
    def plot_avg_planning_time_vs_penalty_1_and_2(self, results):
        penalty_norm = DefaultOrderedDict(list)
        sol_t = DefaultOrderedDict(list)
        col_t = DefaultOrderedDict(list)
        prb_t = DefaultOrderedDict(list)
        penalty_norm1 = DefaultOrderedDict(list)
        sol_t1 = DefaultOrderedDict(list)
        col_t1 = DefaultOrderedDict(list)
        prb_t1 = DefaultOrderedDict(list)
        for res in results:
            p = res["solver_config"]["penalty_norm"]
            if p == 1:
                trust = res["solver_config"]["trust_region_size"]
                penalty_norm[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"])
            elif p == 2:
                trust = res["solver_config"]["trust_region_size"]
                penalty_norm1[trust].append(res["planning_time"])
                sol_t1[trust].append(res["solving_time"])
                col_t1[trust].append(res["collision_check_time"])
                prb_t1[trust].append(res["prob_model_time"])

        tr = []
        avg_planning_time = []
        avg_solving_time = []
        avg_collision_check_time = []
        avg_prob_model_time = []
        penalty_norm = OrderedDict(sorted(penalty_norm.items()))
        for k in penalty_norm:
            # print k, len(penalty_norm[k])
            tr.append(k)
            avg_planning_time.append(sum(penalty_norm[k]) / len(penalty_norm[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]))
        tr1 = []
        avg_planning_time1 = []
        avg_solving_time1 = []
        avg_collision_check_time1 = []
        avg_prob_model_time1 = []
        penalty_norm1 = OrderedDict(sorted(penalty_norm.items()))
        for k in penalty_norm1:
            print k, len(penalty_norm1[k])
            tr1.append(k)
            avg_planning_time1.append(sum(penalty_norm1[k]) / len(penalty_norm1[k]))
            avg_solving_time1.append(sum(sol_t1[k]) / len(sol_t1[k]))
            avg_collision_check_time1.append(sum(col_t1[k]) / len(col_t1[k]))
            avg_prob_model_time1.append(sum(prb_t1[k]) / len(prb_t1[k]))

        ys = [avg_planning_time, avg_solving_time, avg_collision_check_time, avg_prob_model_time,
              avg_planning_time1, avg_solving_time1, avg_collision_check_time1, avg_prob_model_time1]
        xs = [tr, tr1] * (len(ys) / 2)

        labels = ["$l_1$ penalty: Planning time", "$l_1$ penalty: Solving time",
                  "$l_1$ penalty: Collision check time", "$l_1$ penalty: Problem modelling time",
                  "$l_2$ penalty 2: Planning time", "$l_2$ penalty: Solving time",
                  "$l_2$ penalty: Collision check time", "$l_2$ penalty: Problem modelling time"]
        plotter.multi_plot_best_fit_curve(xs, ys, labels, "$l_1$ Penalty vs $l_2$ penalty", "Number of samples", "Average time (s)",
                                          deg=2)