예제 #1
0
def plot_3d_traj_metric_trace_init_and_opt(fig, ax, metric, traj_init,
                                           traj_opt):

    metric_tensor_init, _, _ = gp_metric_tensor(
        traj_init[:, 0:2],
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )
    metric_tensor_opt, _, _ = gp_metric_tensor(
        traj_opt[:, 0:2],
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )

    metric_trace_init = np.trace(metric_tensor_init, axis1=1, axis2=2)
    metric_trace_opt = np.trace(metric_tensor_opt, axis1=1, axis2=2)

    plot_3d_traj_col(fig, ax, traj_init, zs=metric_trace_init, color="c")
    plot_3d_traj_col(fig, ax, traj_opt, zs=metric_trace_opt, color="m")
    return fig, ax
예제 #2
0
def plot_metirc_trace_over_time(metric, solver, traj_init, traj_opt):
    metric_tensor_init, _, _ = gp_metric_tensor(
        traj_init[:, 0:2],
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )
    metric_trace_init = np.trace(metric_tensor_init, axis1=1, axis2=2)
    metric_tensor_opt, _, _ = gp_metric_tensor(
        traj_opt[:, 0:2],
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )
    metric_trace_opt = np.trace(metric_tensor_opt, axis1=1, axis2=2)
    fig, ax = plt.subplots(1, 1, figsize=(6.4, 2.8))
    ax.set_xlabel("Time $t$")
    ax.set_ylabel("Tr$(G(\mathbf{x}_t))$")

    ax.plot(
        solver.times,
        metric_trace_init,
        color=color_init,
        label="Initial trajectory",
    )
    ax.plot(
        solver.times,
        metric_trace_opt,
        color=color_opt,
        label="Optimised trajectory",
    )
    ax.legend()
예제 #3
0
def plot_3d_traj_metric_trace(fig, ax, metric, traj):
    metric_tensor, mu_j, cov_j = gp_metric_tensor(
        traj[:, 0:2],
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )

    metric_trace = np.trace(metric_tensor, axis1=1, axis2=2)

    plot_3d_traj(fig, ax, traj, zs=metric_trace)
    return fig, ax
예제 #4
0
def plot_svgp_metric_and_start_end(metric, solver, traj_opt=None):
    params = {
        "text.usetex": True,
        "text.latex.preamble": [
            "\\usepackage{amssymb}",
            "\\usepackage{amsmath}",
        ],
    }
    plt.rcParams.update(params)

    input_dim = metric.gp.X.shape[1]
    # plot original GP
    Xnew, xx, yy = create_grid(metric.gp.X, N=961)
    metric_tensor, mu_j, cov_j = gp_metric_tensor(
        Xnew,
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )
    print("metric yo yo")
    print(metric_tensor.shape)

    fig, axs = plt.subplots(input_dim, input_dim)
    for i in range(input_dim):
        for j in range(input_dim):
            plot_contourf(
                fig,
                axs[i, j],
                xx,
                yy,
                metric_tensor[:, i, j],
                label="$G(\mathbf{x})$",
            )
            axs[i, j].set_xlabel("$x$")
            axs[i, j].set_ylabel("$y$")

    return fig, axs
예제 #5
0
def plot_3d_metric_trace(metric, solver):
    # plot original GP
    Xnew, xx, yy = create_grid(metric.gp.X, N=961)
    metric_tensor, mu_j, cov_j = gp_metric_tensor(
        Xnew,
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )

    metric_trace = np.trace(metric_tensor, axis1=1, axis2=2)
    # fig = plt.figure(figsize=plt.figaspect(0.5))
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1, projection="3d")
    surf = plot_3d_surf(fig, ax, xx, yy, metric_trace)
    ax.set_zlabel("Tr$(G(\mathbf{x}_*))$")

    return fig, ax
예제 #6
0
def plot_svgp_metric_trace_and_start_end(metric, solver, traj_opt=None):

    # plot original GP
    Xnew, xx, yy = create_grid(metric.gp.X, N=961)
    metric_tensor, mu_j, cov_j = gp_metric_tensor(
        Xnew,
        metric.gp.Z,
        metric.gp.kernel,
        mean_func=metric.gp.mean_func,
        f=metric.gp.q_mu,
        full_cov=True,
        q_sqrt=metric.gp.q_sqrt,
        cov_weight=metric.cov_weight,
    )

    metric_trace = np.trace(metric_tensor, axis1=1, axis2=2)
    fig, ax = plt.subplots(1, 1)
    # fig, ax = plt.subplots(1, 1, figsize=(12, 4))
    plt.subplots_adjust(wspace=0, hspace=0)
    surf_traceG = plot_contourf(
        fig, ax, xx, yy, metric_trace, label="Tr$(G(\mathbf{x}))$"
    )
    plot_start_and_end_pos(fig, ax, solver)
    ax.set_xlabel("$x$")
    ax.set_ylabel("$y$")
    plot_traj(
        fig,
        ax,
        solver.state_guesses,
        color=color_init,
        label="Initial trajectory",
    )
    if traj_opt is not None:
        plot_traj(
            fig, ax, traj_opt, color=color_opt, label="Optimised trajectory"
        )
    ax.legend()
    return fig, ax