From c13c7d04e774bd5aaa5f2847a131945a4c2f17ca Mon Sep 17 00:00:00 2001 From: Tue Herlau <tuhe@dtu.dk> Date: Thu, 13 Mar 2025 15:24:53 +0100 Subject: [PATCH] Exercises --- irlc/ex06/__init__.py | 2 + irlc/ex06/boeing_lqr.py | 85 ++++++ irlc/ex06/dlqr.py | 207 +++++++++++++ irlc/ex06/dlqr_check.py | 40 +++ irlc/ex06/lqr_agent.py | 54 ++++ irlc/ex06/lqr_pid.py | 79 +++++ irlc/ex06/model_boeing.py | 62 ++++ irlc/ex06/model_rendevouz.py | 99 +++++++ irlc/ex07/__init__.py | 2 + irlc/ex07/ilqr.py | 275 ++++++++++++++++++ irlc/ex07/ilqr_agent.py | 56 ++++ irlc/ex07/ilqr_cartpole.py | 83 ++++++ irlc/ex07/ilqr_cartpole_agent.py | 43 +++ irlc/ex07/ilqr_pendulum.py | 68 +++++ irlc/ex07/ilqr_pendulum_agent.py | 63 ++++ irlc/ex07/ilqr_rendevoyz.py | 5 + irlc/ex07/ilqr_rendovouz_basic.py | 99 +++++++ irlc/ex07/linearization_agent.py | 67 +++++ irlc/lectures/lec05/__init__.py | 1 + .../lec05/lecture_05_carpole_random.py | 9 + .../lec05/lecture_05_cartpole_kelly.py | 10 + .../lec05/lecture_05_cartpole_time.py | 11 + irlc/lectures/lec06/__init__.py | 1 + .../lectures/lec06/lecture6_lqr_locomotive.py | 37 +++ .../lec06/lecture_06_cartpole_ilqr.py | 47 +++ irlc/lectures/lec06/lecture_06_linearize.py | 6 + irlc/lectures/lec06/lecture_06_linearize_b.py | 18 ++ .../lec06/lecture_06_pendulum_bilqr_L.py | 7 + .../lec06/lecture_06_pendulum_bilqr_ubar.py | 66 +++++ .../lec06/lecture_06_pendulum_ilqr_L.py | 5 + .../lec06/lecture_06_pendulum_ilqr_ubar.py | 5 + irlc/lectures/lec07/__init__.py | 1 + irlc/lectures/lec07/lecture_07_boing_lqr.py | 19 ++ .../lec07/lecture_07_boing_lqr_mpc.py | 14 + .../lec07/lecture_07_boing_lqr_mpc_local.py | 9 + .../lec07/lecture_07_boing_lqr_mpc_optim.py | 8 + irlc/lectures/lec07/lecture_07_lmpc.py | 5 + .../lec07/lecture_07_pendulum_mpc_lqr.py | 4 + .../lec07/lecture_07_pendulum_mpc_optm.py | 4 + .../lec07/lecture_07_pendulum_simple.py | 41 +++ .../2021-03-19_08-21-20.207/log.txt | 17 ++ .../2021-03-19_08-21-20.207/trajectories.pkl | Bin 0 -> 75688 bytes .../2022-03-17_14-16-10.758/log.txt | 17 ++ .../2022-03-17_14-16-10.758/trajectories.pkl | Bin 0 -> 74800 bytes .../2023-03-17_08-13-45.172/log.txt | 17 ++ .../2023-03-17_08-13-45.172/trajectories.pkl | Bin 0 -> 75880 bytes irlc/tests/tests_week05.py | 114 ++++++++ irlc/tests/tests_week06.py | 147 ++++++++++ irlc/tests/tests_week07.py | 62 ++++ .../BrachistochroneConstrainedQuestion.pkl | Bin 7242 -> 7242 bytes .../BrachistochroneQuestion.pkl | Bin 7242 -> 7242 bytes .../unitgrade_data/CartpoleCostQuestion.pkl | Bin 7242 -> 7242 bytes .../unitgrade_data/CartpoleTimeQuestion.pkl | Bin 7242 -> 7242 bytes .../unitgrade_data/DirectAgentPendulum.pkl | Bin 231 -> 231 bytes irlc/tests/unitgrade_data/DirectMethods.pkl | Bin 1459 -> 1459 bytes .../unitgrade_data/DirectSolverQuestion.pkl | Bin 7242 -> 7242 bytes .../Exam5InventoryEvaluation.pkl | Bin 217 -> 217 bytes irlc/tests/unitgrade_data/Exam6Toy2d.pkl | Bin 283 -> 283 bytes .../ExamQuestion7FlowersStore.pkl | Bin 182 -> 182 bytes .../unitgrade_data/ILQRAgentQuestion.pkl | Bin 0 -> 326 bytes .../unitgrade_data/ILQRPendulumQuestion.pkl | Bin 0 -> 298 bytes .../tests/unitgrade_data/PendulumQuestion.pkl | Bin 7242 -> 7242 bytes .../unitgrade_data/Problem1BobsFriend.pkl | Bin 170 -> 170 bytes .../Problem1DiscreteKuromoto.pkl | Bin 570 -> 570 bytes .../tests/unitgrade_data/Problem1Kuramoto.pkl | Bin 3014 -> 3014 bytes .../unitgrade_data/Problem2BobsPolicy.pkl | Bin 368 -> 368 bytes .../Problem2DeterministicDP.pkl | Bin 161 -> 161 bytes .../Problem2DeterministicInventory.pkl | Bin 128 -> 128 bytes .../Problem3InventoryInventoryEnvironment.pkl | Bin 323 -> 323 bytes irlc/tests/unitgrade_data/Problem3LQR.pkl | Bin 0 -> 2025 bytes irlc/tests/unitgrade_data/Problem3PID.pkl | Bin 334 -> 334 bytes .../unitgrade_data/Problem3StochasticDP.pkl | Bin 345 -> 345 bytes irlc/tests/unitgrade_data/Problem4DPAgent.pkl | Bin 121 -> 121 bytes .../unitgrade_data/Problem4InventoryTrain.pkl | Bin 242 -> 242 bytes .../tests/unitgrade_data/Problem4LQRAgent.pkl | Bin 0 -> 443 bytes .../tests/unitgrade_data/Problem4PIDAgent.pkl | Bin 4673 -> 4673 bytes .../Problem5PacmanHardcoded.pkl | Bin 125 -> 125 bytes .../unitgrade_data/Problem5_6_Boeing.pkl | Bin 0 -> 4219 bytes .../Problem6ChessTournament.pkl | Bin 197 -> 197 bytes irlc/tests/unitgrade_data/Problem7PIDCar.pkl | Bin 419 -> 419 bytes .../unitgrade_data/Problem7_8_PidLQR.pkl | Bin 0 -> 415 bytes irlc/tests/unitgrade_data/RendevouzItem.pkl | Bin 0 -> 603 bytes 82 files changed, 2091 insertions(+) create mode 100644 irlc/ex06/__init__.py create mode 100644 irlc/ex06/boeing_lqr.py create mode 100644 irlc/ex06/dlqr.py create mode 100644 irlc/ex06/dlqr_check.py create mode 100644 irlc/ex06/lqr_agent.py create mode 100644 irlc/ex06/lqr_pid.py create mode 100644 irlc/ex06/model_boeing.py create mode 100644 irlc/ex06/model_rendevouz.py create mode 100644 irlc/ex07/__init__.py create mode 100644 irlc/ex07/ilqr.py create mode 100644 irlc/ex07/ilqr_agent.py create mode 100644 irlc/ex07/ilqr_cartpole.py create mode 100644 irlc/ex07/ilqr_cartpole_agent.py create mode 100644 irlc/ex07/ilqr_pendulum.py create mode 100644 irlc/ex07/ilqr_pendulum_agent.py create mode 100644 irlc/ex07/ilqr_rendevoyz.py create mode 100644 irlc/ex07/ilqr_rendovouz_basic.py create mode 100644 irlc/ex07/linearization_agent.py create mode 100644 irlc/lectures/lec05/__init__.py create mode 100644 irlc/lectures/lec05/lecture_05_carpole_random.py create mode 100644 irlc/lectures/lec05/lecture_05_cartpole_kelly.py create mode 100644 irlc/lectures/lec05/lecture_05_cartpole_time.py create mode 100644 irlc/lectures/lec06/__init__.py create mode 100644 irlc/lectures/lec06/lecture6_lqr_locomotive.py create mode 100644 irlc/lectures/lec06/lecture_06_cartpole_ilqr.py create mode 100644 irlc/lectures/lec06/lecture_06_linearize.py create mode 100644 irlc/lectures/lec06/lecture_06_linearize_b.py create mode 100644 irlc/lectures/lec06/lecture_06_pendulum_bilqr_L.py create mode 100644 irlc/lectures/lec06/lecture_06_pendulum_bilqr_ubar.py create mode 100644 irlc/lectures/lec06/lecture_06_pendulum_ilqr_L.py create mode 100644 irlc/lectures/lec06/lecture_06_pendulum_ilqr_ubar.py create mode 100644 irlc/lectures/lec07/__init__.py create mode 100644 irlc/lectures/lec07/lecture_07_boing_lqr.py create mode 100644 irlc/lectures/lec07/lecture_07_boing_lqr_mpc.py create mode 100644 irlc/lectures/lec07/lecture_07_boing_lqr_mpc_local.py create mode 100644 irlc/lectures/lec07/lecture_07_boing_lqr_mpc_optim.py create mode 100644 irlc/lectures/lec07/lecture_07_lmpc.py create mode 100644 irlc/lectures/lec07/lecture_07_pendulum_mpc_lqr.py create mode 100644 irlc/lectures/lec07/lecture_07_pendulum_mpc_optm.py create mode 100644 irlc/lectures/lec07/lecture_07_pendulum_simple.py create mode 100644 irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/log.txt create mode 100644 irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/trajectories.pkl create mode 100644 irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/log.txt create mode 100644 irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/trajectories.pkl create mode 100644 irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/log.txt create mode 100644 irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/trajectories.pkl create mode 100644 irlc/tests/tests_week05.py create mode 100644 irlc/tests/tests_week06.py create mode 100644 irlc/tests/tests_week07.py create mode 100644 irlc/tests/unitgrade_data/ILQRAgentQuestion.pkl create mode 100644 irlc/tests/unitgrade_data/ILQRPendulumQuestion.pkl create mode 100644 irlc/tests/unitgrade_data/Problem3LQR.pkl create mode 100644 irlc/tests/unitgrade_data/Problem4LQRAgent.pkl create mode 100644 irlc/tests/unitgrade_data/Problem5_6_Boeing.pkl create mode 100644 irlc/tests/unitgrade_data/Problem7_8_PidLQR.pkl create mode 100644 irlc/tests/unitgrade_data/RendevouzItem.pkl diff --git a/irlc/ex06/__init__.py b/irlc/ex06/__init__.py new file mode 100644 index 0000000..6e26755 --- /dev/null +++ b/irlc/ex06/__init__.py @@ -0,0 +1,2 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +"""This directory contains the exercises for week 6.""" diff --git a/irlc/ex06/boeing_lqr.py b/irlc/ex06/boeing_lqr.py new file mode 100644 index 0000000..e26f5e6 --- /dev/null +++ b/irlc/ex06/boeing_lqr.py @@ -0,0 +1,85 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +""" + +References: + [Her25] Tue Herlau. Sequential decision making. (Freely available online), 2025. +""" +import numpy as np +import matplotlib.pyplot as plt +from irlc import savepdf +from irlc import train +from irlc.ex06.model_boeing import BoeingEnvironment +from irlc.ex06.lqr_agent import LQRAgent +from irlc.ex03.control_model import ControlModel +import scipy + + +def boeing_simulation(): + env = BoeingEnvironment(Tmax=10) + model = env.discrete_model.continuous_model # get the model from the Boeing environment + dt = env.dt # Get the discretization time. + A, B, d = compute_A_B_d(model, dt) + # Use compute_Q_R_q to get the Q, R, and q matrices in the discretized system + # TODO: 1 lines missing. + raise NotImplementedError("Compute Q, R and q here") + ## TODO: Half of each line of code in the following 1 lines have been replaced by garbage. Make it work and remove the error. + #---------------------------------------------------------------------------------------------------------------------------- + # agent = LQRAgent(env, A=A?????????????????????????? + raise NotImplementedError("Use your LQRAgent to plan using the system matrices.") + stats, trajectories = train(env, agent, return_trajectory=True) + return stats, trajectories, env + +def compute_Q_R_q(model : ControlModel, dt : float): + cost = model.get_cost() # Get the continuous-time cost-function + # use print(cost) to see what it contains. + # Then get the discretized matrices using the techniques described in (Her25, Subsection 13.1.6). + # TODO: 3 lines missing. + raise NotImplementedError("Insert your solution and remove this error.") + return Q, R, q + +def compute_A_B_d(model : ControlModel, dt : float): + if model.d is None: + d = np.zeros((model.state_size,)) # Ensure d is set to a zero vector if it is not defined. + else: + d = model.d + + A_discrete = scipy.linalg.expm(model.A * dt) # This is the discrete A-matrix computed using the matrix exponential + # Now it is your job to define B_discrete and d_discrete. + # TODO: 2 lines missing. + raise NotImplementedError("Insert your solution and remove this error.") + return A_discrete, B_discrete, d_discrete.flatten() + +def boeing_experiment(): + _, trajectories, env = boeing_simulation() + model = env.discrete_model.continuous_model + + dt = env.dt + Q, R, q = compute_Q_R_q(model, dt) + print("Discretization time is", dt) + print("Original q-vector was:", model.get_cost().q) + print("Discretized version is:", q) + + t = trajectories[-1] + out = t.state @ model.P.T + + plt.plot(t.time, out[:, 0], '-', label=env.observation_labels[0]) + plt.plot(t.time, out[:, 1], '-', label=env.observation_labels[1]) + plt.grid() + plt.legend() + plt.xlabel("Time/seconds") + plt.ylabel("Output") + savepdf("boing_lqr_output") + plt.show(block=False) + plt.close() + + plt.plot(t.time[:-1], t.action[:, 0], '-', label=env.action_labels[0]) + plt.plot(t.time[:-1], t.action[:, 1], '-', label=env.action_labels[1]) + plt.xlabel("Time/seconds") + plt.ylabel("Control action") + plt.grid() + plt.legend() + savepdf("boing_lqr_action") + plt.show() + +if __name__ == "__main__": + boeing_experiment() diff --git a/irlc/ex06/dlqr.py b/irlc/ex06/dlqr.py new file mode 100644 index 0000000..d8b7903 --- /dev/null +++ b/irlc/ex06/dlqr.py @@ -0,0 +1,207 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +""" + +References: + [Her25] Tue Herlau. Sequential decision making. (Freely available online), 2025. +""" +import numpy as np +import matplotlib.pyplot as plt +from irlc import bmatrix +from irlc import savepdf + + + +def LQR(A : list, # Dynamic + B : list, # Dynamics + d : list =None, # Dynamics (optional) + Q : list=None, + R: list=None, + H : list=None, + q : list=None, + r : list=None, + qc : list=None, + QN : np.ndarray =None, # Terminal cost term + qN : np.ndarray=None, # Terminal cost term + qcN : np.ndarray =None, # Terminal cost term. + mu : float =0 # regularization parameter which will only be relevant next week. + ): + r""" + Implement the LQR as defined in (Her25, Algorithm 22). I recommend viewing this documentation online (documentation for week 6). + + When you solve this exercise, look at the algorithm in the book. Since the LQR problem is on the form: + + .. math:: + + x_{k+1} = A_k x_k + B_k u_k + d_k + + For :math:`k=0,\dots,N-1` this means there are :math:`N` matrices :math:`A_k`. This is implemented by assuming that + :python:`A` (i.e., the input argument) is a :python:`list` of length :math:`N` so that :python:`A[k]` corresponds + to :math:`A_k`. + + Similar conventions are used for the cost term (please see the lecture notes or the online documentation for their meaning). Recall it has the form: + + .. math:: + + c(x_k, u_k) = \frac{1}{2} \mathbf x_k^\top Q_k \mathbf x_k + \frac{1}{2} \mathbf q_k^\top \mathbf x_k + q_k + \cdots + + When the function is called, the vector :math:`\textbf{q}_k` corresponds to :python:`q` and the constant :math:`q_k` correspond to :python:`qc` (q-constant). + + .. note:: + + Only the terms :python:`A` and :python:`B` are required. The rest of the terms will default to 0-matrices. + + The LQR algorithm will ultimately compute a control law of the form: + + .. math:: + + \mathbf u_k = L_k \mathbf x_k + \mathbf l_k + + And a cost-to-go function as: + + .. math:: + + J_k(x_k) = \frac{1}{2} \mathbf x_k^\top V_k \mathbf x_k + v_k^\top \mathbf x_k + v_k + + Again there are :math:`N-1` terms. The function then return :python:`return (L, l), (V, v, vc)` so that :python:`L[k]` corresponds to :math:`L_k`. + + :param A: A list of :python:`np.ndarray` containing all terms :math:`A_k` + :param B: A list of :python:`np.ndarray` containing all terms :math:`B_k` + :param d: A list of :python:`np.ndarray` containing all terms :math:`\mathbf d_k` (optional) + :param Q: A list of :python:`np.ndarray` containing all terms :math:`Q_k` (optional) + :param R: A list of :python:`np.ndarray` containing all terms :math:`R_k` (optional) + :param H: A list of :python:`np.ndarray` containing all terms :math:`H_k` (optional) + :param q: A list of :python:`np.ndarray` containing all terms :math:`\mathbf q_k` (optional) + :param r: A list of :python:`np.ndarray` containing all terms :math:`\mathbf r_k` (optional) + :param qc: A list of :python:`float` containing all terms :math:`q_k` (i.e., constant terms) (optional) + :param QN: A :python:`np.ndarray` containing the terminal cost term :math:`Q_N` (optional) + :param qN: A :python:`np.ndarray` containing the terminal cost term :math:`\mathbf q_N` (optional) + :param qcN: A :python:`np.ndarray` containing the terminal cost term :math:`q_N` + :param mu: A regularization term which is useful for iterative-LQR (next week). Default to 0. + :return: A tuple of the form :python:`(L, l), (V, v, vc)` corresponding to the control and cost-matrices. + """ + N = len(A) + n,m = B[0].shape + # Initialize empty lists for control matrices and cost terms + L, l = [None]*N, [None]*N + V, v, vc = [None]*(N+1), [None]*(N+1), [None]*(N+1) + # Initialize constant cost-function terms to zero if not specified. + # They will be initialized to zero, meaning they have no effect on the update rules. + QN = np.zeros((n,n)) if QN is None else QN + qN = np.zeros((n,)) if qN is None else qN + qcN = 0 if qcN is None else qcN + H, q, qc, r = init_mat(H,m,n,N=N), init_mat(q,n,N=N), init_mat(qc,1,N=N), init_mat(r,m,N=N) + d = init_mat(d,n, N=N) + """ In the next line, you should initialize the last cost-term. This is similar to how we in DP had the initialization step + > J_N(x_N) = g_N(x_N) + Except that since x_N is no longer discrete, we store it as matrices/vectors representing a second-order polynomial, i.e. + > J_N(X_N) = 1/2 * x_N' V[N] x_N + v[N]' x_N + vc[N] + """ + # TODO: 1 lines missing. + raise NotImplementedError("Initialize V[N], v[N], vc[N] here") + + In = np.eye(n) + for k in range(N-1,-1,-1): + # When you update S_uu and S_ux remember to add regularization as the terms ... (V[k+1] + mu * In) ... + # Note that that to find x such that + # >>> x = A^{-1} y this + # in a numerically stable manner this should be done as + # >>> x = np.linalg.solve(A, y) + # The terms you need to update will be, in turn: + # Suu = ... + # Sux = ... + # Su = ... + # L[k] = ... + # l[k] = ... + # V[k] = ... + # V[k] = ... + # v[k] = ... + # vc[k] = ... + ## TODO: Half of each line of code in the following 4 lines have been replaced by garbage. Make it work and remove the error. + #---------------------------------------------------------------------------------------------------------------------------- + # Suu = R[k] + B[k].T @ (???????????????????????? + # Sux = H[k] + B[k].T @ (???????????????????????? + # Su = r[k] + B[k].T @ v[k + 1????????????????????????????? + # L[k] = -np.linal????????????????? + raise NotImplementedError("Insert your solution and remove this error.") + l[k] = -np.linalg.solve(Suu, Su) # You get this for free. Notice how we use np.lingalg.solve(A,x) to compute A^{-1} x + V[k] = Q[k] + A[k].T @ V[k+1] @ A[k] - L[k].T @ Suu @ L[k] + V[k] = 0.5 * (V[k] + V[k].T) # I recommend putting this here to keep V positive semidefinite + # You get these for free: Compare to the code in the algorithm. + v[k] = q[k] + A[k].T @ (v[k+1] + V[k+1] @ d[k]) + Sux.T @ l[k] + vc[k] = vc[k+1] + qc[k] + d[k].T @ v[k+1] + 1/2*( d[k].T @ V[k+1] @ d[k] ) + 1/2*l[k].T @ Su + + return (L,l), (V,v,vc) + + +def init_mat(X, a, b=None, N=None): + """ + Helper function. Check if X is None, and if so return a list + [A, A,....] + which is N long and where each A is a (a x b) zero-matrix, else returns X repeated N times: + [X, X, ...] + """ + M0 = np.zeros((a,) if b is None else (a, b)) + if X is not None: + return [m if m is not None else M0 for m in X] + else: + return [M0] * N + +def lqr_rollout(x0,A,B,d,L,l): + """ + Compute a rollout (states and actions) given solution from LQR controller function. + + x0 is a vector (starting state), and A, B, d and L, l are lists of system/control matrices. + """ + x, states,actions = x0, [x0], [] + n,m = B[0].shape + N = len(L) + d = init_mat(d,n,1,N) # Initialize as a list of zero matrices [ np.zeros((n,1)), np.zeros((n,1)), ...] + l = init_mat(l,m,1,N) # Initialize as a list of zero matrices [ np.zeros((m,1)), np.zeros((m,1)), ...] + + for k in range(N): + u = L[k] @ x + l[k] + x = A[k] @ x + B[k] @ u + d[k] + actions.append(u) + states.append(x) + return states, actions + +if __name__ == "__main__": + """ + Solve this problem (see also lecture notes for the same example) + http://cse.lab.imtlucca.it/~bemporad/teaching/ac/pdf/AC2-04-LQR-Kalman.pdf + """ + N = 20 + A = np.ones((2,2)) + A[1,0] = 0 + B = np.asarray([[0], [1]]) + Q = np.zeros((2,2)) + R = np.ones((1,1)) + + print("System matrices A, B, Q, R") + print(bmatrix(A)) + print(bmatrix(B)) + print(bmatrix(Q)) + print(bmatrix(R)) + + for rho in [0.1, 10, 100]: + Q[0,0] = 1/rho + (L,l), (V,v,vc) = LQR(A=[A]*N, B=[B]*N, d=None, Q=[Q]*N, R=[R]*N, QN=Q) + + x0 = np.asarray( [[1],[0]]) + trajectory, actions = lqr_rollout(x0,A=[A]*N, B=[B]*N, d=None,L=L,l=l) + + xs = np.concatenate(trajectory, axis=1)[0,:] + + plt.plot(xs, 'o-', label=f'rho={rho}') + + k = 10 + print(f"Control matrix in u_k = L_k x_k + l_k at k={k}:", L[k]) + for k in [N-1,N-2,0]: + print(f"L[{k}] is:", L[k].round(4)) + plt.title("Double integrator") + plt.xlabel('Steps $k$') + plt.ylabel('$x_1 = $ x[0]') + plt.legend() + plt.grid() + savepdf("dlqr_double_integrator") + plt.show() diff --git a/irlc/ex06/dlqr_check.py b/irlc/ex06/dlqr_check.py new file mode 100644 index 0000000..3d86db3 --- /dev/null +++ b/irlc/ex06/dlqr_check.py @@ -0,0 +1,40 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex06.dlqr import LQR + +def urnd(sz): + return np.random.uniform(-1, 1, sz) + +def check_LQR(): + np.random.seed(42) + n,m,N = 3,2,4 + """ + Create a randomized, nonsense control problem and solve it. Since seed is fixed we can expect same solution. + """ + # system tersm + A = [urnd((n, n)) for _ in range(N)] + B = [urnd((n, m)) for _ in range(N)] + d = [urnd((n,)) for _ in range(N)] + # cost terms + Q = [urnd((n, n)) for _ in range(N)] + R = [urnd((m, m)) for _ in range(N)] + H = [urnd((m, n)) for _ in range(N)] + q = [urnd((n,)) for _ in range(N)] + qc = [urnd(()) for _ in range(N)] + r = [urnd((m,)) for _ in range(N)] + # terminal costs + QN = urnd((n, n)) + qN = urnd((n,)) + qcN = urnd(()) + return LQR(A=A, B=B, d=d, Q=Q, R=R, H=H, q=q, r=r, qc=qc, QN=QN, qN=qN, qcN=qcN, mu=0) + + +if __name__ == "__main__": + (L, l), (V, v, vc) = check_LQR() + N = len(V)-1 + print(", ".join([f"l[{k}]={l[k].round(4)}" for k in [N - 1, N - 2, 0]])) + print("\n".join([f"L[{k}]={L[k].round(4)}" for k in [N - 1, N - 2, 0]])) + + print("\n".join([f"V[{k}]={V[k].round(4)}" for k in [0]])) + print(", ".join([f"v[{k}]={v[k].round(4)}" for k in [N, N - 1, 0]])) + print(", ".join([f"vc[{k}]={vc[k].round(4)}" for k in [N, N - 1, 0]])) diff --git a/irlc/ex06/lqr_agent.py b/irlc/ex06/lqr_agent.py new file mode 100644 index 0000000..f62ec55 --- /dev/null +++ b/irlc/ex06/lqr_agent.py @@ -0,0 +1,54 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex04.locomotive import LocomotiveEnvironment +from irlc import train, plot_trajectory, savepdf, Agent +from irlc.ex06.dlqr import LQR +from irlc.ex04.control_environment import ControlEnvironment +import numpy as np +import matplotlib.pyplot as plt + +class LQRAgent(Agent): + def __init__(self, env : ControlEnvironment, A, B, Q, R, d=None, q=None): + N = int((env.Tmax / env.dt)) # Obtain the planning horizon + """ Define A, B as the list of A/B matrices here. I.e. x[t+1] = A x[t] + B x[t] + d. + You should use the function model.f to do this, which has build-in functionality to compute Jacobians which will be equal to A, B """ + """ Define self.L, self.l here as the (lists of) control matrices. """ + ## TODO: Half of each line of code in the following 1 lines have been replaced by garbage. Make it work and remove the error. + #---------------------------------------------------------------------------------------------------------------------------- + # (self.L, self.l), _ = LQR(A=[A]*N, B=[B]*N, d=[d]*N if d is not No??????????????????????????????????????????????????????????????????? + raise NotImplementedError("Insert your solution and remove this error.") + self.dt = env.dt + super().__init__(env) + + def pi(self,x, k, info=None): + """ + Compute the action here using u = L_k x + l_k. + You should use self.L, self.l to get the control matrices (i.e. L_k = self.L[k] ), + """ + # TODO: 1 lines missing. + raise NotImplementedError("Compute current action here") + return u + + +if __name__ == "__main__": + # Make a guess at the system matrices for planning. We will return on how to compute these exactly in a later exercise. + A = np.ones((2, 2)) + A[1, 0] = 0 + B = np.asarray([[0], [1]]) + Q = np.eye(2)*3 + R = np.ones((1, 1))*2 + q = np.asarray([-1.1, 0 ]) + + # Create and test our LQRAgent. + env = LocomotiveEnvironment(render_mode='human', Tmax=10, slope=1) + agent = LQRAgent(env, A=A, B=B, Q=Q, R=R, q=q) + stats, traj = train(env, agent, num_episodes=1) + + env.reset() + savepdf("locomotive_snapshot.pdf", env=env) # Make a plot for the exercise file. + env.state_labels = ["x(t)", "v(t)"] + env.action_labels = ["u(t)"] + plot_trajectory(traj[0], env) + plt.show(block=True) + savepdf("lqr_agent") + plt.show() + env.close() diff --git a/irlc/ex06/lqr_pid.py b/irlc/ex06/lqr_pid.py new file mode 100644 index 0000000..136cae2 --- /dev/null +++ b/irlc/ex06/lqr_pid.py @@ -0,0 +1,79 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import matplotlib.pyplot as plt +import numpy as np +from irlc import savepdf, train +from irlc.ex04.pid_locomotive_agent import PIDLocomotiveAgent +from irlc.ex06.lqr_agent import LQRAgent +from irlc.ex04.model_harmonic import HarmonicOscilatorEnvironment +from irlc.ex06.boeing_lqr import compute_A_B_d, compute_Q_R_q + +class ConstantLQRAgent(LQRAgent): + # TODO: 3 lines missing. + raise NotImplementedError("Complete this agent here. You need to update the policy-function: def pi(self, ..).") + +def get_Kp_Kd(L0): + # TODO: 1 lines missing. + raise NotImplementedError("Use lqr_agent.L to define Kp and Kd.") + return Kp, Kd + + +if __name__ == "__main__": + Delta = 0.06 # Time discretization constant + # Define a harmonic osscilator environment. Use .., render_mode='human' to see a visualization. + env = HarmonicOscilatorEnvironment(Tmax=8, dt=Delta, m=0.5, R=np.eye(1) * 8, render_mode=None) # set render_mode='human' to see the oscillator. + model = env.discrete_model.continuous_model # Get the ControlModel corresponding to this environment. + + + # Compute the discretized A, B and d matrices using the helper functions we defined in the Boeing problem. + # Note that these are for the discrete environment: x_{k+1} = A x_k + B u_k + d + A, B, d = compute_A_B_d(model, Delta) + Q, R, q = compute_Q_R_q(model, Delta) + + # Run the LQR agent + lqr_agent = LQRAgent(env, A=A, B=B, d=d, Q=Q, R=R, q=q) + _, traj1 = train(env, lqr_agent, return_trajectory=True) + + # Part 1. Build an agent that always takes actions u_k = L_0 x_k + l_0 + constant_agent = ConstantLQRAgent(env, A=A, B=B, d=d, Q=Q, R=R, q=q) + # Check that its policy is independent of $k$: + x0, _ = env.reset() + print(f"Initial state is {x0=}") + print(f"Action at time step k=0 {constant_agent.pi(x0, k=0)=}") + print(f"Action at time step k=5 (should be the same) {constant_agent.pi(x0, k=0)=}") + + _, traj2 = train(env, constant_agent, return_trajectory=True) + + # Part 2. Use the L and l matrices (see lqr_agent.L and lqr_agent.l) + # to select Kp and Kd in a PID agent. Then let's use the Locomotive agent to see the effect of the controller. + # Use render_mode='human' to see its effect. + # We only need to use L. + # Hint: compare the form of the LQR and PID controller and use that to select Kp and Kd. + Kp, Kd = get_Kp_Kd(lqr_agent.L[0]) # Use lqr_agent.L to define Kp and Kd. + + # Define and run the PID agent. + pid_agent = PIDLocomotiveAgent(env, env.dt, Kp=Kp, Kd=Kd) + _, traj3 = train(env, pid_agent, return_trajectory=True) + + # Plot all actions and state sequences. + plt.figure(figsize=(10,5)) + plt.grid() + plt.plot(traj1[0].time[:-1], traj1[0].action, label="Optimal LQR action sequence") + plt.plot(traj2[0].time[:-1], traj2[0].action, '.-', label="Constant LQR action sequence") + plt.plot(traj3[0].time[:-1], traj3[0].action, label="PID agent action sequence") + plt.xlabel("Time / Seconds") + plt.ylabel("Action / Newtons") + plt.ylim([-.2, .2]) + plt.legend() + savepdf("pid_lqr_actions") + plt.show(block=True) + + plt.figure(figsize=(10, 5)) + plt.grid() + plt.plot(traj1[0].time, traj1[0].state[:, 0], label="Optimal LQR states x(t)") + plt.plot(traj2[0].time, traj2[0].state[:, 0], label="Constant LQR states x(t)") + plt.plot(traj3[0].time, traj3[0].state[:, 0], label="PID agent states x(t)") + plt.xlabel("Time / Seconds") + plt.ylabel("Position x(t) / Meters") + plt.ylim([-1, 1]) + plt.legend() + savepdf("pid_lqr_states") diff --git a/irlc/ex06/model_boeing.py b/irlc/ex06/model_boeing.py new file mode 100644 index 0000000..57e0a0c --- /dev/null +++ b/irlc/ex06/model_boeing.py @@ -0,0 +1,62 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex04.discrete_control_model import DiscreteControlModel +from irlc.ex04.control_environment import ControlEnvironment +from irlc.ex04.model_linear_quadratic import LinearQuadraticModel + +class BoeingModel(LinearQuadraticModel): + """ + Boeing 747 level flight example. + + See: https://books.google.dk/books?id=tXZDAAAAQBAJ&pg=PA147&lpg=PA147&dq=boeing+747+flight+0.322+model+longitudinal+flight&source=bl&ots=L2RpjCAWiZ&sig=ACfU3U2m0JsiHmUorwyq5REcOj2nlxZkuA&hl=en&sa=X&ved=2ahUKEwir7L3i6o3qAhWpl4sKHQV6CdcQ6AEwAHoECAoQAQ#v=onepage&q=boeing%20747%20flight%200.322%20model%20longitudinal%20flight&f=false + Also: https://web.stanford.edu/~boyd/vmls/vmls-slides.pdf + """ + state_labels = ["Longitudinal velocity (x) ft/sec", "Velocity in y-axis ft/sec", "Angular velocity", + "angle wrt. horizontal"] + action_labels = ['Elevator', "Throttle"] + observation_labels = ["Airspeed", "Climb rate"] + + def __init__(self, output=None): + if output is None: + output = [10, 0] + # output = [10, 0] + A = [[-0.003, 0.039, 0, -0.322], + [-0.065, -.319, 7.74, 0], + [.02, -.101, -0.429, 0], + [0, 0, 1, 0]] + B = [[.01, 1], + [-.18, -.04], + [-1.16, .598], + [0, 0]] + + A, B = np.asarray(A), np.asarray(B) + self.u0 = 7.74 # speed in hundred feet/seconds + self.P = np.asarray([[1, 0, 0, 0], [0, -1, 0, 7.74]]) # Projection of state into airspeed + + dt = 0.1 # Scale the cost by this factor. + + # Set up the cost: + self.Q_obs = np.eye(2) + Q = self.P.T @ self.Q_obs @ self.P / dt + R = np.eye(2) / dt + q = -np.asarray(output) @ self.Q_obs @ self.P / dt + super().__init__(A=A, B=B, Q=Q, R=R, q=q) + + def state2outputs(self, x): + return self.P @ x + +class DiscreteBoeingModel(DiscreteControlModel): + def __init__(self, output=None): + model = BoeingModel(output=output) + dt = 0.1 + super().__init__(model=model, dt=dt) + + +class BoeingEnvironment(ControlEnvironment): + @property + def observation_labels(self): + return self.discrete_model.continuous_model.observation_labels + + def __init__(self, Tmax=10): + model = DiscreteBoeingModel() + super().__init__(discrete_model=model, Tmax=Tmax) diff --git a/irlc/ex06/model_rendevouz.py b/irlc/ex06/model_rendevouz.py new file mode 100644 index 0000000..ffdb923 --- /dev/null +++ b/irlc/ex06/model_rendevouz.py @@ -0,0 +1,99 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.utils.graphics_util_pygame import UpgradedGraphicsUtil +from irlc.ex04.discrete_control_model import DiscreteControlModel +from irlc.ex04.control_environment import ControlEnvironment +from irlc.ex04.model_linear_quadratic import LinearQuadraticModel +from gymnasium.spaces import Box + +""" +SEE: https://github.com/anassinator/ilqr/blob/master/examples/rendezvous.ipynb +""" +class ContiniousRendevouzModel(LinearQuadraticModel): + state_labels= ["x0", "y0", "x1", "y1", 'Vx0', "Vy0", "Vx1", "Vy1"] + action_labels = ['Fx0', 'Fy0', "Fx1", "Fy1"] + x0 = np.array([0, 0, 10, 10, 0, -5, 5, 0]) # Initial state. + + def __init__(self, m=10.0, alpha=0.1, simple_bounds=None, cost=None): + m00 = np.zeros((4,4)) + mI = np.eye(4) + A = np.block( [ [m00, mI], [m00, -alpha/m*mI] ] ) + B = np.block( [ [m00], [mI/m]] ) + state_size = len(self.x0) + action_size = 4 + self.m = m + self.alpha = alpha + Q = np.eye(state_size) + Q[0, 2] = Q[2, 0] = -1 + Q[1, 3] = Q[3, 1] = -1 + R = 0.1 * np.eye(action_size) + self.viewer = None + super().__init__(A=A, B=B, Q=Q*20, R=R*20) + + def x0_bound(self) -> Box: + return Box(self.x0, self.x0) # self.bounds['x0_low'] = self.bounds['x0_high'] = list(self.x0) + + def render(self, x, render_mode="human"): + """ Render the environment. You don't have to understand this code. """ + if self.viewer is None: + self.viewer = HarmonicViewer(xstar=0, x0=self.x0) # target: x=0. + self.viewer.update(x) + import time + time.sleep(0.05) + return self.viewer.blit(render_mode=render_mode) + + def close(self): + pass + + +class DiscreteRendevouzModel(DiscreteControlModel): + def __init__(self, dt=0.1, cost=None, transform_actions=True, **kwargs): + model = ContiniousRendevouzModel(**kwargs) + super().__init__(model=model, dt=dt, cost=cost) + +class RendevouzEnvironment(ControlEnvironment): + def __init__(self, Tmax=20, render_mode=None, **kwargs): + discrete_model = DiscreteRendevouzModel(**kwargs) + super().__init__(discrete_model, Tmax=Tmax, render_mode=render_mode) + +class HarmonicViewer(UpgradedGraphicsUtil): + def __init__(self, xstar = 0, x0=None): + self.xstar = xstar + width = 800 + self.x0 = x0 + sz = 20 + self.scale = width/(2*sz) + self.p1h = [] + self.p2h = [] + super().__init__(screen_width=width, xmin=-sz, xmax=sz, ymin=-sz, ymax=sz, title='Rendevouz environment') + + def render(self): + self.draw_background(background_color=(255, 255, 255)) + # dw = self.dw + p1 = self.x[:2] + p2 = self.x[2:4] + self.p1h.append(p1) + self.p2h.append(p2) + self.circle("asdf", pos=p1, r=.5 * self.scale, fillColor=(200, 0, 0)) + self.circle("asdf", pos=p2, r=.5 * self.scale, fillColor=(0, 0, 200) ) + if len(self.p1h) > 2: + self.polyline('...', np.stack(self.p1h)[:,0], np.stack(self.p1h)[:,1], width=1, color=(200, 0, 0)) + self.polyline('...', np.stack(self.p2h)[:,0], np.stack(self.p2h)[:,1], width=1, color=(0, 0, 200)) + + if tuple(self.x) == tuple(self.x0): + self.p1h = [] + self.p2h = [] + + + def update(self, x): + self.x = x + + +if __name__ == "__main__": + from irlc import Agent, train + env = RendevouzEnvironment(render_mode='human') + from irlc.ex06.lqr_agent import LQRAgent + a2 = LQRAgent(env=env) + + stats, traj = train(env, Agent(env), num_episodes=1) + pass diff --git a/irlc/ex07/__init__.py b/irlc/ex07/__init__.py new file mode 100644 index 0000000..1e8044b --- /dev/null +++ b/irlc/ex07/__init__.py @@ -0,0 +1,2 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +"""This directory contains the exercises for week 7.""" diff --git a/irlc/ex07/ilqr.py b/irlc/ex07/ilqr.py new file mode 100644 index 0000000..d259999 --- /dev/null +++ b/irlc/ex07/ilqr.py @@ -0,0 +1,275 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +""" + +References: + [Her25] Tue Herlau. Sequential decision making. (Freely available online), 2025. + [TET12] Yuval Tassa, Tom Erez, and Emanuel Todorov. Synthesis and stabilization of complex behaviors through online trajectory optimization. In 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems, 4906–4913. IEEE, 2012. (See tassa2012.pdf). + [Har20] James Harrison. Optimal and learning-based control combined course notes. (See AA203combined.pdf), 2020. +""" +r""" +This implements two methods: The basic ILQR method, described in (Her25, Algorithm 24), and the linesearch-based method +described in (Her25, Algorithm 25). + +If you are interested, you can consult (TET12) (which contains generalization to DDP) and (Har20, Alg 1). +""" +import warnings +import numpy as np +from irlc.ex06.dlqr import LQR +from irlc.ex04.discrete_control_model import DiscreteControlModel + +def ilqr_basic(model : DiscreteControlModel, N, x0, us_init : list = None, n_iterations=500, verbose=True): + r""" + Implements the basic ilqr algorithm, i.e. (Her25, Algorithm 24). Our notation (x_bar, etc.) will be consistent with the lecture slides + """ + mu, alpha = 1, 1 # Hyperparameters. For now, just let them have defaults and don't change them + # Create a random initial state-sequence + n, m = model.state_size, model.action_size + u_bar = [np.random.uniform(-1, 1,(model.action_size,)) for _ in range(N)] if us_init is None else us_init + x_bar = [x0] + [np.zeros(n, )] * N + """ + Initialize nominal trajectory xs, us using us and x0 (i.e. simulate system from x0 using action sequence us). + The simplest way to do this is to call forward_pass with all-zero sequence of control vector/matrix l, L. + """ + # TODO: 2 lines missing. + raise NotImplementedError("Initialize x_bar, u_bar here") + J_hist = [] + for i in range(n_iterations): + """ + Compute derivatives around trajectory and cost estimate J of trajectory. To do so, use the get_derivatives + function. Remember the functions will return lists of derivatives. + """ + # TODO: 2 lines missing. + raise NotImplementedError("Compute J and derivatives A_k = f_x, B_k = f_u, ....") + """ Backward pass: Obtain feedback law matrices l, L using the backward_pass function. + """ + # TODO: 1 lines missing. + raise NotImplementedError("Compute L, l = .... here") + """ Forward pass: Given L, l matrices computed above, simulate new (optimal) action sequence. + In the lecture slides, this is similar to how we compute u^*_k and x_k + Once they are computed, iterate the iLQR algorithm by setting x_bar, u_bar equal to these values + """ + # TODO: 1 lines missing. + raise NotImplementedError("Compute x_bar, u_bar = ...") + if verbose: + print(f"{i}> J={J:4g}, change in cost since last iteration {0 if i == 0 else J-J_hist[-1]:4g}") + J_hist.append(J) + return x_bar, u_bar, J_hist, L, l + +def ilqr_linesearch(model : DiscreteControlModel, N, x0, n_iterations, us_init=None, tol=1e-6, verbose=True): + r""" + For linesearch implement method described in (Her25, Algorithm 25) (we will use regular iLQR, not DDP!) + """ + # The range of alpha-values to try out in the linesearch + # plus parameters relevant for regularization scheduling. + alphas = 1.1 ** (-np.arange(10) ** 2) # alphas = [1, 1.1^{-2}, ...] + mu_min = 1e-6 + mu_max = 1e10 + Delta_0 = 2 + mu = 1.0 + Delta = Delta_0 + + n, m = model.state_size, model.action_size + u_bar = [np.random.uniform(-1, 1, (model.action_size,)) for _ in range(N)] if us_init is None else us_init + x_bar = [x0] + [np.zeros(n, )] * (N) + # Initialize nominal trajectory xs, us (same as in basic linesearch) + # TODO: 2 lines missing. + raise NotImplementedError("Copy-paste code from previous solution") + J_hist = [] + + converged = False + for i in range(n_iterations): + alpha_was_accepted = False + """ Step 1: Compute derivatives around trajectory and cost estimate of trajectory. + (copy-paste from basic implementation). In our implementation, J_bar = J_{u^star}(x_0) """ + # TODO: 2 lines missing. + raise NotImplementedError("Obtain derivatives f_x, f_u, ... as well as cost of trajectory J_bar = ...") + try: + """ + Step 2: Backward pass to obtain control law (l, L). Same as before so more copy-paste + """ + # TODO: 1 lines missing. + raise NotImplementedError("Obtain l, L = ... in backward pass") + """ + Step 3: Forward pass and alpha scheduling. + Decrease alpha and check condition |J^new < J'|. Apply the regularization scheduling as needed. """ + for alpha in alphas: + x_hat, u_hat = forward_pass(model, x_bar, u_bar, L=L, l=l, alpha=alpha) # Simulate trajectory using this alpha + # TODO: 1 lines missing. + raise NotImplementedError("Compute J_new = ... as the cost of trajectory x_hat, u_hat") + + if J_new < J_prime: + """ Linesearch proposed trajectory accepted! Set current trajectory equal to x_hat, u_hat. """ + if np.abs((J_prime - J_new) / J_prime) < tol: + converged = True # Method does not seem to decrease J; converged. Break and return. + + J_prime = J_new + x_bar, u_bar = x_hat, u_hat + ''' + The update was accepted and you should change the regularization term mu, + and the related scheduling term Delta. + ''' + # TODO: 1 lines missing. + raise NotImplementedError("Delta, mu = ...") + alpha_was_accepted = True # accept this alpha + break + except np.linalg.LinAlgError as e: + # Matrix in dlqr was not positive-definite and this diverged + warnings.warn(str(e)) + + if not alpha_was_accepted: + ''' No alphas were accepted, which is not too hot. Regularization should change + ''' + # TODO: 1 lines missing. + raise NotImplementedError("Delta, mu = ...") + + if mu_max and mu >= mu_max: + raise Exception("Exceeded max regularization term; we are stuffed.") + + dJ = 0 if i == 0 else J_prime-J_hist[-1] + info = "converged" if converged else ("accepted" if alpha_was_accepted else "failed") + if verbose: + print(f"{i}> J={J_prime:4g}, decrease in cost {dJ:4g} ({info}).\nx[N]={x_bar[-1].round(2)}") + J_hist.append(J_prime) + if converged: + break + return x_bar, u_bar, J_hist, L, l + +def backward_pass(A : list, B : list, c_x : list, c_u : list, c_xx : list, c_ux : list, c_uu : list, mu=1): + r"""Given all derivatives, apply the LQR algorithm to get the control law. + + The input arguments are described in the online documentation and the lecture notes. You should use them to call your + implementation of the :func:`~irlc.ex06.dlqr.LQR` method. Note that you should give a value of all inputs except for the ``d``-term. + + :param A: linearization of the dynamics matrices :math:`A_k`. + :param B: linearization of the dynamics matrices :math:`B_k`. + :param c_x: Cost terms corresponding to :math:`\mathbf{q}_k` + :param c_u: Cost terms corresponding to :math:`\mathbf{r}_k` + :param c_xx: Cost terms corresponding to :math:`Q_k` + :param c_ux: Cost terms corresponding to :math:`H_k` + :param c_uu: Cost terms corresponding to :math:`R_k` + :param mu: Regularization parameter for the LQR method + :return: The control law :math:`L_k, \mathbf{l}_k` as two lists. + """ + Q, QN = c_xx[:-1], c_xx[-1] # An example. + # TODO: 4 lines missing. + raise NotImplementedError("Insert your solution and remove this error.") + # Define the inputs using the linearization inputs. + (L, l), (V, v, vc) = LQR(A=A, B=B, R=R, Q=Q, QN=QN, H=H, q=q, qN=qN, r=r, mu=mu) + return L, l + +def cost_of_trajectory(model : DiscreteControlModel, xs : list, us : list) -> float: + r"""Helper function which computes the cost of the trajectory. + + The cost is defined as: + + .. math:: + + c_N( \bar {\mathbf x}_N, \bar {\mathbf u}_) + \sum_{k=0}^{N-1} c_k(\bar {\mathbf x}_k, \bar {\mathbf u}_k) + + and to compute it, you should use the two helper methods ``model.cost.c`` and ``model.cost.cN`` + (see :func:`~irlc.ex04.discrete_control_cost.DiscreteQRCost.c` and :func:`~irlc.ex04.discrete_control_cost.DiscreteQRCost.cN`). + + :param model: The control model used to compute the cost. + :param xs: A list of length :math:`N+1` of the form :math:`\begin{bmatrix}\bar {\mathbf x}_0 & \dots & \bar {\mathbf x}_N \end{bmatrix}` + :param us: A list of length :math:`N` of the form :math:`\begin{bmatrix}\bar {\mathbf x}_0 & \dots & \bar {\mathbf x}_{N-1} \end{bmatrix}` + :return: The cost as a number. + """ + N = len(us) + JN = model.cost.cN(xs[-1]) + return sum(map(lambda args: model.cost.c(*args), zip(xs[:-1], us, range(N)))) + JN + +def get_derivatives(model : DiscreteControlModel, x_bar : list, u_bar : list): + """Compute all the derivatives used in the model. + + The return type should match the meaning in (Her25, Subequation 17.8) and in the online documentation. + + - ``c`` should be a list of length :math:`N+1` + - ``c_x`` should be a list of length :math:`N+1` + - ``c_xx`` should be a list of length :math:`N+1` + - ``c_u`` should be a list of length :math:`N` + - ``c_uu`` should be a list of length :math:`N` + - ``c_ux`` should be a list of length :math:`N` + - ``A`` should be a list of length :math:`N` + - ``B`` should be a list of length :math:`N` + + Use the model to compute these terms. For instance, this will compute the first terms ``A[0]`` and ``B[0]``:: + + A0, B0 = model.f_jacobian(x_bar[0], u_bar[0], 0) + + Meanwhile, to compute the first terms of the cost-functions you should use:: + + c[0], c_x[0], c_u[0], c_xx[0], c_ux[0], c_uu[0] = model.cost.c(x_bar[0], u_bar[0], k=0, compute_gradients=True) + + :param model: The model to use when computing the derivatives of the cost + :param x_bar: The nominal state-trajectory + :param u_bar: The nominal action-trajectory + :return: Lists of all derivatives computed around the nominal trajectory (see the lecture notes). + """ + N = len(u_bar) + """ Compute A_k, B_k (lists of matrices of length N) as the jacobians of the dynamics. To do so, + recall from the online documentation that: + x, f_x, f_u = model.f(x, u, k, compute_jacobian=True) + """ + A = [None]*N + B = [None]*N + c = [None] * (N+1) + c_x = [None] * (N + 1) + c_xx = [None] * (N + 1) + + c_u = [None] * (N+1) + c_ux = [None] * (N + 1) + c_uu = [None] * (N + 1) + # Now update each entry correctly (i.e., ensure there are no None elements left). + # TODO: 4 lines missing. + raise NotImplementedError("Insert your solution and remove this error.") + """ Compute derivatives of the cost function. For terms not including u these should be of length N+1 + (because of gN!), for the other lists of length N + recall model.cost.c has output: + c[i], c_x[i], c_u[i], c_xx[i], c_ux[i], c_uu[i] = model.cost.c(x, u, i, compute_gradients=True) + """ + # TODO: 2 lines missing. + raise NotImplementedError("Insert your solution and remove this error.") + # Concatenate the derivatives associated with the last time point N. + cN, c_xN, c_xxN = model.cost.cN(x_bar[N], compute_gradients=True) + # TODO: 3 lines missing. + raise NotImplementedError("Update c, c_x and c_xx with the terminal terms.") + return A, B, c, c_x, c_u, c_xx, c_ux, c_uu + +def forward_pass(model : DiscreteControlModel, x_bar : list, u_bar : list, L : list, l : list, alpha=1.0): + r"""Simulates the effect of the controller on the model + + We assume the system starts in :math:`\mathbf{x}_0 = \bar {\mathbf x}_0`, and then simulate the effect of + generating actions using the closed-loop policy + + .. math:: + + \mathbf{u}_k = \bar {\mathbf u}_k + \alpha \mathbf{l}_k + L_k (\mathbf{x}_k - \bar { \mathbf x}_k) + + (see (Her25, eq. (17.16))). + + :param model: The model used to compute the dynamics. + :param x_bar: A nominal list of states + :param u_bar: A nominal list of actions (not used by the method) + :param L: A list of control matrices :math:`L_k` + :param l: A list of control vectors :math:`\mathbf{l}_k` + :param alpha: The linesearch parameter. + :return: A list of length :math:`N+1` of simulated states and a list of length :math:`N` of simulated actions. + """ + N = len(u_bar) + x = [None] * (N+1) + u_star = [None] * N + x[0] = x_bar[0].copy() + + for i in range(N): + r""" Compute using (Her25, eq. (17.16)) + u_{i} = ... + """ + # TODO: 1 lines missing. + raise NotImplementedError("u_star[i] = ....") + """ Remember to compute + x_{i+1} = f_k(x_i, u_i^*) + here: + """ + # TODO: 1 lines missing. + raise NotImplementedError("x[i+1] = ...") + return x, u_star diff --git a/irlc/ex07/ilqr_agent.py b/irlc/ex07/ilqr_agent.py new file mode 100644 index 0000000..eb8c146 --- /dev/null +++ b/irlc/ex07/ilqr_agent.py @@ -0,0 +1,56 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +""" + +References: + [Her25] Tue Herlau. Sequential decision making. (Freely available online), 2025. +""" +from irlc.ex06.model_rendevouz import RendevouzEnvironment +from irlc.ex07.ilqr_rendovouz_basic import ilqr +from irlc import train +from irlc import Agent +import numpy as np + +class ILQRAgent(Agent): + def __init__(self, env, discrete_model, N=250, ilqr_iterations=10, use_ubar=False, use_linesearch=True): + super().__init__(env) + self.dt = discrete_model.dt + # x0 = discrete_model.reset() + x0,_ = env.reset() + x0 = np.asarray(x0) # Get the initial state. We will take this from the environment. + xs, us, self.J_hist, L, l = ilqr(discrete_model, N, x0, n_iter=ilqr_iterations, use_linesearch=use_linesearch) + self.ubar = us + self.xbar = xs + self.L = L + self.l = l + self.use_ubar = use_ubar # Should policy use open-loop u-bar (suboptimal) or closed-loop L_k, l_k? + + def pi(self, x, k, info=None): + if self.use_ubar: + u = self.ubar[k] + else: + if k >= len(self.ubar): + print(k, len(self.ubar)) + k = len(self.ubar)-1 + # See (Her25, eq. (17.16)) + # TODO: 1 lines missing. + raise NotImplementedError("Generate action using the control matrices.") + return u + +def solve_rendevouz(): + env = RendevouzEnvironment() + N = int(env.Tmax / env.dt) + agent = ILQRAgent(env, env.discrete_model, N=N) + stats, trajectories = train(env, agent, num_episodes=1, return_trajectory=True) + env.close() + return stats, trajectories, agent + +if __name__ == "__main__": + from irlc.ex07.ilqr_rendovouz_basic import plot_vehicles + import matplotlib.pyplot as plt + stats, trajectories, agent = solve_rendevouz() + t =trajectories[0].state + xb = agent.xbar + plot_vehicles(t[:,0], t[:,1], t[:,2], t[:,3], linespec=':', legend=("RK4 policy simulation", "RK4 policy simulation")) + plot_vehicles(xb[:,0], xb[:,1], xb[:,2], xb[:,3], linespec='-') + plt.legend() + plt.show() diff --git a/irlc/ex07/ilqr_cartpole.py b/irlc/ex07/ilqr_cartpole.py new file mode 100644 index 0000000..d2463a5 --- /dev/null +++ b/irlc/ex07/ilqr_cartpole.py @@ -0,0 +1,83 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import matplotlib.pyplot as plt +import numpy as np +from irlc.ex05.model_cartpole import GymSinCosCartpoleEnvironment +import time +from irlc.ex07.ilqr_rendovouz_basic import ilqr +from irlc import savepdf + +# Number of steps. +N = 100 +def cartpole(use_linesearch): + env = GymSinCosCartpoleEnvironment(render_mode='human') + x0, info = env.reset() + xs, us, J_hist, L, l = ilqr(env.discrete_model, N, x0, n_iter=300, use_linesearch=use_linesearch) + plot_cartpole(env, xs, us, use_linesearch=use_linesearch) + +def plot_cartpole(env, xs, us, J_hist=None, use_linesearch=True): + animate(xs, env) + env.close() + # Transform actions/states using build-in functions. + def gapply(f, xm): + usplit = np.split(xm, len(xm)) + u2 = [f(u.flat) for u in usplit] + us = np.stack(u2) + return us + + us = gapply(env.discrete_model.phi_u_inv, us) + xs = gapply(env.discrete_model.phi_x_inv, xs) + + t = np.arange(N + 1) * env.dt + x = xs[:, 0] + theta = np.unwrap(xs[:, 2]) # Makes for smoother plots. + theta_dot = xs[:, 3] + pdf_ex = '_linesearch' if use_linesearch else '' + ev = 'cartpole_' + + plt.plot(theta, theta_dot) + plt.xlabel("theta (rad)") + plt.ylabel("theta_dot (rad/s)") + plt.title("Orientation Phase Plot") + plt.grid() + savepdf(f"{ev}theta{pdf_ex}") + plt.show() + + _ = plt.plot(t[:-1], us) + _ = plt.xlabel("time (s)") + _ = plt.ylabel("Force (N)") + _ = plt.title("Action path") + plt.grid() + savepdf(f"{ev}action{pdf_ex}") + plt.show() + + _ = plt.plot(t, x) + _ = plt.xlabel("time (s)") + _ = plt.ylabel("Position (m)") + _ = plt.title("Cart position") + plt.grid() + savepdf(f"{ev}position{pdf_ex}") + plt.show() + if J_hist is not None: + _ = plt.plot(J_hist) + _ = plt.xlabel("Iteration") + _ = plt.ylabel("Total cost") + _ = plt.title("Total cost-to-go") + plt.grid() + savepdf(f"{ev}J{pdf_ex}") + plt.show() + +def animate(xs0, env): + render = True + if render: + for i in range(2): + render_(xs0, env.discrete_model) + time.sleep(1) + # env.viewer.close() + +def render_(xs, env): + for i in range(xs.shape[0]): + x = xs[i] + env.render(x=x) + +if __name__ == "__main__": + cartpole(use_linesearch=True) diff --git a/irlc/ex07/ilqr_cartpole_agent.py b/irlc/ex07/ilqr_cartpole_agent.py new file mode 100644 index 0000000..cd82bd2 --- /dev/null +++ b/irlc/ex07/ilqr_cartpole_agent.py @@ -0,0 +1,43 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex07.ilqr_agent import ILQRAgent +from irlc import train +from irlc import savepdf +import matplotlib.pyplot as plt +from irlc.ex05.model_cartpole import GymSinCosCartpoleEnvironment + +def cartpole_experiment(N=12, use_linesearch=True, figex="", animate=True): + np.random.seed(2) + Tmax = .9 + dt = Tmax/N + env = GymSinCosCartpoleEnvironment(dt=dt, Tmax=Tmax, supersample_trajectory=True, render_mode='human' if animate else None) + agent = ILQRAgent(env, env.discrete_model, N=N, ilqr_iterations=200, use_linesearch=use_linesearch) + stats, trajectories = train(env, agent, num_episodes=1, return_trajectory=True) + + agent.use_ubar = True + stats2, trajectories2 = train(env, agent, num_episodes=1, return_trajectory=True) + env.close() + + xb = agent.xbar + tb = np.arange(N+1)*dt + plt.figure(figsize=(8,6)) + F = 3 + plt.plot(trajectories[0].time, trajectories[0].state[:,F], 'k-', label='Closed-loop $\\pi$') + plt.plot(trajectories2[0].time, trajectories2[0].state[:,F], '-', label='Open-loop $\\bar{u}_k$') + + plt.plot(tb, xb[:,F], '.-', label="iLQR rediction $\\bar{x}_k$") + plt.xlabel("Time/seconds") + plt.ylabel("$\cos(\\theta)$") + plt.title(f"Cartpole environment $T={N}$") + + plt.grid() + plt.legend() + ev = "pendulum" + savepdf(f"irlc_cartpole_theta_N{N}_{use_linesearch}{figex}") + plt.show() + +def plt_cartpole(): + cartpole_experiment(N=50, use_linesearch=True, animate=True) + +if __name__ == '__main__': + plt_cartpole() diff --git a/irlc/ex07/ilqr_pendulum.py b/irlc/ex07/ilqr_pendulum.py new file mode 100644 index 0000000..5bcc82e --- /dev/null +++ b/irlc/ex07/ilqr_pendulum.py @@ -0,0 +1,68 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex04.model_pendulum import DiscreteSinCosPendulumModel +import matplotlib.pyplot as plt +import time +from irlc.ex07.ilqr_rendovouz_basic import ilqr +from irlc import savepdf + +def pendulum(use_linesearch): + print("> Using iLQR to solve Pendulum swingup task. Using linesearch?", use_linesearch) + dt = 0.02 + model = DiscreteSinCosPendulumModel(dt, cost=None) + N = 250 + # This rather clunky line gets us the initial state; we transform the bound by the variable transformation. + x0 = np.asarray(model.phi_x(model.continuous_model.x0_bound().low)) + + n_iter = 200 # Use 200 iLQR iterations. + # xs, us, J_hist, L, l = ilqr(model, ...) Write a function call like this, but with the correct parametesr + # TODO: 1 lines missing. + raise NotImplementedError("Call iLQR here (see hint above).") + + render = True + if render: + for i in range(2): + render_(xs, model) + time.sleep(2) # Sleep for two seconds between simulations. + model.close() + xs = np.asarray([model.phi_x_inv(x) for x, u in zip(xs, us)]) # Convert to Radians. We use the build-in functions to change coordinates. + xs, us = np.asarray(xs), np.asarray(us) + + t = np.arange(N) * dt + theta = np.unwrap(xs[:, 0]) # Makes for smoother plots. + theta_dot = xs[:, 1] + + pdf_ex = '_linesearch' if use_linesearch else '' + stitle = "(using linesearch)" if use_linesearch else "(not using linesearch) " + ev = 'pendulum_' + _ = plt.plot(theta, theta_dot) + _ = plt.xlabel("$\\theta$ (rad)") + _ = plt.ylabel("$d\\theta/dt$ (rad/s)") + _ = plt.title(f"Phase Plot {stitle}") + plt.grid() + savepdf(f"{ev}theta{pdf_ex}") + plt.show() + + _ = plt.plot(t, us) + _ = plt.xlabel("time (s)") + _ = plt.ylabel("Force (N)") + _ = plt.title(f"Action path {stitle}") + plt.grid() + savepdf(f"{ev}action{pdf_ex}") + plt.show() + + _ = plt.plot(J_hist) + _ = plt.xlabel("Iteration") + _ = plt.ylabel("Total cost") + _ = plt.title(f"Total cost-to-go {stitle}") + plt.grid() + savepdf(f"{ev}J{pdf_ex}") + plt.show() + +def render_(xs, env): + for i in range(xs.shape[0]): + env.render(xs[i]) + +if __name__ == "__main__": + pendulum(use_linesearch=False) + pendulum(use_linesearch=True) diff --git a/irlc/ex07/ilqr_pendulum_agent.py b/irlc/ex07/ilqr_pendulum_agent.py new file mode 100644 index 0000000..6daf971 --- /dev/null +++ b/irlc/ex07/ilqr_pendulum_agent.py @@ -0,0 +1,63 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex04.model_pendulum import GymSinCosPendulumEnvironment +from irlc.ex07.ilqr_agent import ILQRAgent +from irlc import train +from irlc import savepdf +import matplotlib.pyplot as plt + +Tmax = 3 +def pen_experiment(N=12, use_linesearch=True,figex="", animate=True): + dt = Tmax / N + env = GymSinCosPendulumEnvironment(dt, Tmax=Tmax, supersample_trajectory=True, render_mode="human" if animate else None) + agent = ILQRAgent(env, env.discrete_model, N=N, ilqr_iterations=200, use_linesearch=use_linesearch) + + stats, trajectories = train(env, agent, num_episodes=1, return_trajectory=True) + + agent.use_ubar = True + stats2, trajectories2 = train(env, agent, num_episodes=1, return_trajectory=True) + env.close() + + plot_pendulum_trajectory(env, trajectories[0], label='Closed-loop $\\pi$') + xb = agent.xbar + tb = np.arange(N+1)*dt + plt.figure(figsize=(12, 6)) + plt.plot(trajectories[0].time, trajectories[0].state[:,1], '-', label='Closed-loop $\\pi(x_k)$') + + plt.plot(trajectories2[0].time, trajectories2[0].state[:,1], '-', label='Open-loop $\\bar{u}_k$') + plt.plot(tb, xb[:,1], 'o-', label="iLQR prediction $\\bar{x}_k$") + plt.grid() + plt.legend() + ev = "pendulum" + savepdf(f"irlc_pendulum_theta_N{N}_{use_linesearch}{figex}") + plt.show() + + ## Plot J + plt.figure(figsize=(6, 6)) + plt.semilogy(agent.J_hist, 'k.-') + plt.xlabel("iLQR Iterations") + plt.ylabel("Cost function estimate $J$") + # plt.title("Last value: {") + plt.grid() + savepdf(f"irlc_pendulum_J_N{N}_{use_linesearch}{figex}") + plt.show() + +def plot_pendulum_trajectory(env, traj, style='k.-', label=None, action=False, **kwargs): + if action: + y = traj.action[:, 0] + y = np.clip(y, env.action_space.low[0], env.action_space.high[0]) + else: + y = traj.state[:, 1] + + plt.plot(traj.time[:-1] if action else traj.time, y, style, label=label, **kwargs) + plt.xlabel("Time/seconds") + if action: + plt.ylabel("Torque $u$") + else: + plt.ylabel(r"$\cos(\theta)$") + plt.grid() + pass + +N = 50 +if __name__ == "__main__": + pen_experiment(N=N, use_linesearch=True) diff --git a/irlc/ex07/ilqr_rendevoyz.py b/irlc/ex07/ilqr_rendevoyz.py new file mode 100644 index 0000000..8cd6cdc --- /dev/null +++ b/irlc/ex07/ilqr_rendevoyz.py @@ -0,0 +1,5 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex07.ilqr_rendovouz_basic import plot_rendevouz + +if __name__ == "__main__": + plot_rendevouz(use_linesearch=True) diff --git a/irlc/ex07/ilqr_rendovouz_basic.py b/irlc/ex07/ilqr_rendovouz_basic.py new file mode 100644 index 0000000..fcd245e --- /dev/null +++ b/irlc/ex07/ilqr_rendovouz_basic.py @@ -0,0 +1,99 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +import matplotlib.pyplot as plt +from irlc import savepdf +from irlc.ex07.ilqr import ilqr_basic, ilqr_linesearch +from irlc.ex06.model_rendevouz import DiscreteRendevouzModel +from irlc.ex04.control_environment import ControlEnvironment +from irlc.ex04.discrete_control_model import DiscreteControlModel +# plt.ion() + + +def ilqr(model : DiscreteControlModel, N, x0, n_iter, use_linesearch, verbose=True): + if not use_linesearch: + xs, us, J_hist, L, l = ilqr_basic(model, N, x0, n_iterations=n_iter,verbose=verbose) + else: + xs, us, J_hist, L, l = ilqr_linesearch(model, N, x0, n_iterations=n_iter, tol=1e-6,verbose=verbose) + xs, us = np.stack(xs), np.stack(us) + return xs, us, J_hist, L, l + +def plot_vehicles(x_0, y_0, x_1, y_1, linespec='-', legend=("Vehicle 1", "Vehicle 2")): + _ = plt.title("Trajectory of the two omnidirectional vehicles") + _ = plt.plot(x_0, y_0, "r"+linespec, label=legend[0]) + _ = plt.plot(x_1, y_1, "b"+linespec, label=legend[1]) + +Tmax = 20 +def solve_rendovouz(use_linesearch=False): + model = DiscreteRendevouzModel() + x0 = np.asarray(model.continuous_model.x0_bound().low) # Starting position + N = int(Tmax/model.dt) + return ilqr(model, N, x0, n_iter=10, use_linesearch=use_linesearch), model + +def plot_rendevouz(use_linesearch=False): + (xs, us, J_hist, _, _), env = solve_rendovouz(use_linesearch=use_linesearch) + N = int(Tmax / env.dt) + dt = env.dt + x_0 = xs[:, 0] + y_0 = xs[:, 1] + x_1 = xs[:, 2] + y_1 = xs[:, 3] + x_0_dot = xs[:, 4] + y_0_dot = xs[:, 5] + x_1_dot = xs[:, 6] + y_1_dot = xs[:, 7] + + pdf_ex = '_linesearch' if use_linesearch else '' + ev = 'rendevouz_' + plot_vehicles(x_0, y_0, x_1, y_1, linespec='-', legend=("Vehicle 1", "Vehicle 2")) + plt.legend() + savepdf(f'{ev}trajectory{pdf_ex}') + plt.show() + + t = np.arange(N + 1) * dt + _ = plt.plot(t, x_0, "r") + _ = plt.plot(t, x_1, "b") + _ = plt.xlabel("Time (s)") + _ = plt.ylabel("x (m)") + _ = plt.title("X positional paths") + _ = plt.legend(["Vehicle 1", "Vehicle 2"]) + savepdf(f'{ev}vehicles_x_pos{pdf_ex}') + plt.show() + + _ = plt.plot(t, y_0, "r") + _ = plt.plot(t, y_1, "b") + _ = plt.xlabel("Time (s)") + _ = plt.ylabel("y (m)") + _ = plt.title("Y positional paths") + _ = plt.legend(["Vehicle 1", "Vehicle 2"]) + savepdf(f'{ev}vehicles_y_pos{pdf_ex}') + plt.show() + + _ = plt.plot(t, x_0_dot, "r") + _ = plt.plot(t, x_1_dot, "b") + _ = plt.xlabel("Time (s)") + _ = plt.ylabel("x_dot (m)") + _ = plt.title("X velocity paths") + _ = plt.legend(["Vehicle 1", "Vehicle 2"]) + savepdf(f'{ev}vehicles_vx{pdf_ex}') + plt.show() + + _ = plt.plot(t, y_0_dot, "r") + _ = plt.plot(t, y_1_dot, "b") + _ = plt.xlabel("Time (s)") + _ = plt.ylabel("y_dot (m)") + _ = plt.title("Y velocity paths") + _ = plt.legend(["Vehicle 1", "Vehicle 2"]) + savepdf(f'{ev}vehicles_vy{pdf_ex}') + plt.show() + + _ = plt.plot(J_hist) + _ = plt.xlabel("Iteration") + _ = plt.ylabel("Total cost") + _ = plt.title("Total cost-to-go") + savepdf(f'{ev}cost_to_go{pdf_ex}') + plt.show() + pass + + +if __name__ == "__main__": + plot_rendevouz(use_linesearch=False) diff --git a/irlc/ex07/linearization_agent.py b/irlc/ex07/linearization_agent.py new file mode 100644 index 0000000..bffbe89 --- /dev/null +++ b/irlc/ex07/linearization_agent.py @@ -0,0 +1,67 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +""" + +References: + [Her25] Tue Herlau. Sequential decision making. (Freely available online), 2025. +""" +from irlc.ex06.dlqr import LQR +from irlc import Agent +from irlc.ex05.model_cartpole import GymSinCosCartpoleEnvironment +from irlc import train, savepdf +import matplotlib.pyplot as plt +import numpy as np +from irlc.ex04.control_environment import ControlEnvironment +from irlc.ex04.discrete_control_model import DiscreteControlModel + +class LinearizationAgent(Agent): + """ Implement the simple linearization procedure described in (Her25, Algorithm 23) which expands around a single fixed point. """ + def __init__(self, env: ControlEnvironment, model : DiscreteControlModel, xbar=None, ubar=None): + self.model = model + N = 50 # Plan on this horizon. The control matrices will converge fairly quickly. + """ Define A, B, d as the list of A/B matrices here. I.e. x[t+1] = A x[t] + B u[t] + d. + You should use the function model.f to do this, which has build-in functionality to compute Jacobians which will be equal to A, B. + It is important that you linearize around xbar, ubar. See (Her25, Section 17.1) for further details. """ + # TODO: 4 lines missing. + raise NotImplementedError("Insert your solution and remove this error.") + Q, q, R = self.model.cost.Q, self.model.cost.q, self.model.cost.R + """ Define self.L, self.l here as the (lists of) control matrices. """ + # TODO: 1 lines missing. + raise NotImplementedError("Compute control matrices L, l here using LQR(...)") + super().__init__(env) + + def pi(self, x, k, info=None): + """ + Compute the action here using u_k = L_0 x_k + l_0. The control matrix/vector L_0 can be found as the output from LQR, i.e. + L_0 = L[0] and l_0 = l[0]. + + The reason we use L_0, l_0 (and not L_k, l_k) is because the LQR problem itself is an approximation of the true dynamics + and this controller will be able to balance the pendulum for an infinite amount of time. + """ + # TODO: 1 lines missing. + raise NotImplementedError("Compute current action here") + return u + + +def get_offbalance_cart(waiting_steps=30, sleep_time=0.1): + env = GymSinCosCartpoleEnvironment(Tmax=3, render_mode='human') + env.reset() + import time + time.sleep(sleep_time) + env.state = env.discrete_model.x_upright + env.state[-1] = 0.01 # a bit of angular speed. + for _ in range(waiting_steps): # Simulate the environment for 30 steps to get things out of balance. + env.step(1) + time.sleep(sleep_time) + return env + + +if __name__ == "__main__": + np.random.seed(42) # I don't think these results are seed-dependent but let's make sure. + from irlc import plot_trajectory + env = get_offbalance_cart(4) # Simulate for 4 seconds to get the cart off-balance. Same idea as PID control. + agent = LinearizationAgent(env, model=env.discrete_model, xbar=env.discrete_model.x_upright, ubar=env.action_space.sample()*0) + _, trajectories = train(env, agent, num_episodes=1, return_trajectory=True, reset=False) # Note reset=False to maintain initial conditions. + plot_trajectory(trajectories[0], env, xkeys=[0,2, 3], ukeys=[0]) + env.close() + savepdf("linearization_cartpole") + plt.show() diff --git a/irlc/lectures/lec05/__init__.py b/irlc/lectures/lec05/__init__.py new file mode 100644 index 0000000..a56057c --- /dev/null +++ b/irlc/lectures/lec05/__init__.py @@ -0,0 +1 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. diff --git a/irlc/lectures/lec05/lecture_05_carpole_random.py b/irlc/lectures/lec05/lecture_05_carpole_random.py new file mode 100644 index 0000000..e82a89b --- /dev/null +++ b/irlc/lectures/lec05/lecture_05_carpole_random.py @@ -0,0 +1,9 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc import Agent, train +from irlc.ex05.model_cartpole import GymSinCosCartpoleEnvironment + +if __name__ == "__main__": + + env = GymSinCosCartpoleEnvironment(Tmax=20, render_mode='human') + train(env, Agent(env), num_episodes=1) + env.close() diff --git a/irlc/lectures/lec05/lecture_05_cartpole_kelly.py b/irlc/lectures/lec05/lecture_05_cartpole_kelly.py new file mode 100644 index 0000000..1bc3bcc --- /dev/null +++ b/irlc/lectures/lec05/lecture_05_cartpole_kelly.py @@ -0,0 +1,10 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex05.direct_cartpole_kelly import compute_solutions +from irlc.ex05.direct_plot import plot_solutions +import matplotlib.pyplot as plt + +if __name__ == "__main__": + env, solutions = compute_solutions() + print("Did we succeed?", solutions[-1]['solver']['success']) + plot_solutions(env, solutions, animate=True, pdf=None, animate_all=True, animate_repeats=3) + env.close() diff --git a/irlc/lectures/lec05/lecture_05_cartpole_time.py b/irlc/lectures/lec05/lecture_05_cartpole_time.py new file mode 100644 index 0000000..ebd6e87 --- /dev/null +++ b/irlc/lectures/lec05/lecture_05_cartpole_time.py @@ -0,0 +1,11 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex05.direct_cartpole_time import compute_solutions +from irlc.ex05.direct_plot import plot_solutions +import matplotlib.pyplot as plt + +if __name__ == "__main__": + env, solutions = compute_solutions() + print("Did we succeed?", solutions[-1]['solver']['success']) + plot_solutions(env, solutions, animate=True, pdf=None, animate_all=True, animate_repeats=3) + env.close() + pass diff --git a/irlc/lectures/lec06/__init__.py b/irlc/lectures/lec06/__init__.py new file mode 100644 index 0000000..a56057c --- /dev/null +++ b/irlc/lectures/lec06/__init__.py @@ -0,0 +1 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. diff --git a/irlc/lectures/lec06/lecture6_lqr_locomotive.py b/irlc/lectures/lec06/lecture6_lqr_locomotive.py new file mode 100644 index 0000000..2c9ddf3 --- /dev/null +++ b/irlc/lectures/lec06/lecture6_lqr_locomotive.py @@ -0,0 +1,37 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import matplotlib.pyplot as plt +import numpy as np +from irlc import savepdf, train +from irlc.ex04.pid_locomotive_agent import PIDLocomotiveAgent +from irlc.ex06.lqr_agent import LQRAgent +from irlc.ex04.model_harmonic import HarmonicOscilatorEnvironment +from irlc.ex06.boeing_lqr import compute_A_B_d, compute_Q_R_q +from irlc.ex07.linearization_agent import LinearizationAgent +from irlc.ex06.lqr_pid import ConstantLQRAgent +from irlc.ex04.locomotive import LocomotiveEnvironment +from irlc.ex04.pid_locomotive_agent import PIDLocomotiveAgent +from irlc.ex01.agent import train +from irlc.ex03.control_cost import SymbolicQRCost +import matplotlib +#matplotlib.use('qtagg') +dt = .04 +m = 70 +Tmax=10 +slope = 0 + +env = LocomotiveEnvironment(m=m, slope=slope, dt=dt, Tmax=Tmax, render_mode='human') + +model = env.discrete_model +model.cost = SymbolicQRCost(Q=np.eye(2)*100, R=np.eye(1)).discretize(dt=dt) +agent = LinearizationAgent(env, model=model, xbar=env.observation_space.sample(), ubar=env.action_space.sample()) +_, traj = train(env, agent, num_episodes=1) +env.close() +if False: + from irlc import plot_trajectory, savepdf + import matplotlib.pyplot as plt + plt.figure() + plot_trajectory(trajectory=traj[0], env=env, xkeys=[0, 1], ukeys=[]) + savepdf('lqr_pid_locomotive_state.pdf') + plot_trajectory(trajectory=traj[0], env=env, ukeys=[0], xkeys=[]) + savepdf('lqr_pid_locomotive_action.pdf') + env.close() diff --git a/irlc/lectures/lec06/lecture_06_cartpole_ilqr.py b/irlc/lectures/lec06/lecture_06_cartpole_ilqr.py new file mode 100644 index 0000000..dc56335 --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_cartpole_ilqr.py @@ -0,0 +1,47 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex07.ilqr_agent import ILQRAgent +from irlc import train +from irlc.ex05.model_cartpole import GymSinCosCartpoleEnvironment +# from irlc import VideoMonitor + +def cartpole_experiment(N=12, use_linesearch=True, figex="", animate=True): + np.random.seed(2) + Tmax = .9 + dt = Tmax/N + + env = GymSinCosCartpoleEnvironment(dt=dt, Tmax=Tmax, supersample_trajectory=True, render_mode='human') + agent = ILQRAgent(env, env.discrete_model, N=N, ilqr_iterations=200, use_linesearch=use_linesearch) + # if animate: + # env =VideoMonitor(env) + stats, trajectories = train(env, agent, num_episodes=3, return_trajectory=True) + + # agent.use_ubar = True + # stats2, trajectories2 = train(env, agent, num_episodes=1, return_trajectory=True) + # env.close() + env.close() + +def plt_cartpole(): + cartpole_experiment(N=50, use_linesearch=True, animate=True) + +if __name__ == '__main__': + np.random.seed(42) + plt_cartpole() + + # xb = agent.xbar + # tb = np.arange(N+1)*dt + # plt.figure(figsize=(8,6)) + # F = 3 + # # plt.plot(trajectories[0].time, trajectories[0].state[:,F], 'k-', label='Closed-loop $\\pi$') + # # plt.plot(trajectories2[0].time, trajectories2[0].state[:,F], '-', label='Open-loop $\\bar{u}_k$') + # + # plt.plot(tb, xb[:,F], '.-', label="iLQR rediction $\\bar{x}_k$") + # plt.xlabel("Time/seconds") + # plt.ylabel("$\cos(\\theta)$") + # plt.title(f"Pendulum environment $T={N}$") + # + # plt.grid() + # plt.legend() + # ev = "pendulum" + # savepdf(f"irlc_cartpole_theta_N{N}_{use_linesearch}{figex}") + # plt.show() diff --git a/irlc/lectures/lec06/lecture_06_linearize.py b/irlc/lectures/lec06/lecture_06_linearize.py new file mode 100644 index 0000000..311dd27 --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_linearize.py @@ -0,0 +1,6 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex07.linearization_agent import get_offbalance_cart + +if __name__ == "__main__": + env = get_offbalance_cart(waiting_steps=20, sleep_time=0.1) + env.close() diff --git a/irlc/lectures/lec06/lecture_06_linearize_b.py b/irlc/lectures/lec06/lecture_06_linearize_b.py new file mode 100644 index 0000000..b582957 --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_linearize_b.py @@ -0,0 +1,18 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc import plot_trajectory, train +from irlc.ex07.linearization_agent import get_offbalance_cart, LinearizationAgent +import numpy as np +import matplotlib +matplotlib.use("tkagg") +import matplotlib.pyplot as plt + + +if __name__ == "__main__": + np.random.seed(42) # I don't think these results are seed-dependent but let's make sure. + env = get_offbalance_cart(4, sleep_time=0.08) # Simulate for a little time to get an off-balance cart. Increase 4-->10 to get failure. + agent = LinearizationAgent(env, model=env.discrete_model, xbar=env.discrete_model.x_upright, ubar=env.action_space.sample()*0) + _, trajectories = train(env, agent, num_episodes=1, return_trajectory=True, reset=False) # Note reset=False to maintain initial conditions. + plt.figure() + plot_trajectory(trajectories[0], env, xkeys=[0, 2, 3], ukeys=[0]) + plt.show() + env.close() diff --git a/irlc/lectures/lec06/lecture_06_pendulum_bilqr_L.py b/irlc/lectures/lec06/lecture_06_pendulum_bilqr_L.py new file mode 100644 index 0000000..e0cb2ca --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_pendulum_bilqr_L.py @@ -0,0 +1,7 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.lectures.lec06.lecture_06_pendulum_bilqr_ubar import pen_experiment + +if __name__ == "__main__": + np.random.seed(2) # (!) + pen_experiment(N=50, use_linesearch=False, use_ubar=False) diff --git a/irlc/lectures/lec06/lecture_06_pendulum_bilqr_ubar.py b/irlc/lectures/lec06/lecture_06_pendulum_bilqr_ubar.py new file mode 100644 index 0000000..d61a8dd --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_pendulum_bilqr_ubar.py @@ -0,0 +1,66 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +import numpy as np +from irlc.ex04.model_pendulum import GymSinCosPendulumEnvironment +from irlc.ex07.ilqr_agent import ILQRAgent +from irlc import train +from irlc import savepdf +import matplotlib.pyplot as plt + +Tmax = 3 +def pen_experiment(N=12, use_linesearch=True,figex="", animate=True, use_ubar=False): + dt = Tmax / N + env = GymSinCosPendulumEnvironment(dt, Tmax=Tmax, supersample_trajectory=True, render_mode='human' if animate else None) + agent = ILQRAgent(env, env.discrete_model, N=N, ilqr_iterations=200, use_linesearch=use_linesearch) + # if animate: + # env = VideoMonitor(env) + + if use_ubar: + agent.use_ubar = True + stats2, trajectories = train(env, agent, num_episodes=1, return_trajectory=True) + env.close() + + plot_pendulum_trajectory(trajectories[0], label=f'Use linesearch? {use_linesearch}. Use u-bar? {use_ubar}') + plt.legend() + plt.show() + + plt.figure(figsize=(6, 6)) + plt.semilogy(agent.J_hist, 'k.-') + plt.xlabel("iLQR Iterations") + plt.ylabel("Cost function estimate $J$") + # plt.title("Last value: {") + plt.grid() + # savepdf(f"irlc_pendulum_J_N{N}_{use_linesearch}{figex}") + plt.show() + # + # plt.show() + # xb = agent.xbar + # tb = np.arange(N+1)*dt + # plt.figure(figsize=(12, 6)) + # plt.plot(trajectories2[0].time, trajectories2[0].state[:,1], '-', label='Open-loop $\\bar{u}_k$') + # plt.plot(tb, xb[:,1], 'o-', label="iLQR prediction $\\bar{x}_k$") + # plt.grid() + # plt.legend() + # ev = "pendulum" + # savepdf(f"irlc_pendulum_theta_N{N}_{use_linesearch}{figex}") + # plt.show() + + ## Plot J + +# +def plot_pendulum_trajectory(traj, style='k-', label=None, action=False, **kwargs): + y = traj.state[:, 1] if not action else traj.action[:,0] + plt.plot(traj.time[:-1] if action else traj.time, y, style, label=label, **kwargs) + + plt.xlabel("Time/seconds") + if action: + plt.ylabel("Torque $u$") + else: + plt.ylabel("$\cos(\\theta)$") + plt.grid() + pass + +N = 50 + +if __name__ == "__main__": + np.random.seed(2) # (!) + pen_experiment(N=N, use_linesearch=False, use_ubar=True) diff --git a/irlc/lectures/lec06/lecture_06_pendulum_ilqr_L.py b/irlc/lectures/lec06/lecture_06_pendulum_ilqr_L.py new file mode 100644 index 0000000..6e475bf --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_pendulum_ilqr_L.py @@ -0,0 +1,5 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +if __name__ == "__main__": + from irlc.lectures.lec06.lecture_06_pendulum_bilqr_ubar import pen_experiment + N = 50 + pen_experiment(N=N, use_linesearch=True, use_ubar=False) diff --git a/irlc/lectures/lec06/lecture_06_pendulum_ilqr_ubar.py b/irlc/lectures/lec06/lecture_06_pendulum_ilqr_ubar.py new file mode 100644 index 0000000..b44a35c --- /dev/null +++ b/irlc/lectures/lec06/lecture_06_pendulum_ilqr_ubar.py @@ -0,0 +1,5 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +if __name__ == "__main__": + from irlc.lectures.lec06.lecture_06_pendulum_bilqr_ubar import pen_experiment + N = 50 + pen_experiment(N=N, use_linesearch=True, use_ubar=True) diff --git a/irlc/lectures/lec07/__init__.py b/irlc/lectures/lec07/__init__.py new file mode 100644 index 0000000..a56057c --- /dev/null +++ b/irlc/lectures/lec07/__init__.py @@ -0,0 +1 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. diff --git a/irlc/lectures/lec07/lecture_07_boing_lqr.py b/irlc/lectures/lec07/lecture_07_boing_lqr.py new file mode 100644 index 0000000..7a14075 --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_boing_lqr.py @@ -0,0 +1,19 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex04.model_boeing import BoeingEnvironment +from irlc.ex07.lqr_learning_agents import learning_lqr, learning_lqr_mpc, learning_lqr_mpc_local +from irlc.ex07.learning_agent_mpc_optimize import learning_optimization_mpc_local + +if __name__ == "__main__": + env = BoeingEnvironment(output=[10, 0]) + + # Part A: LQR and global regression + learning_lqr(env) + + # Part B: LQR+MPC + # learning_lqr_mpc(env) + # + # # Part C: LQR+MPC and local regression + # learning_lqr_mpc_local(env) + # + # # Part D: Optimization+MPC and local regression + # learning_optimization_mpc_local(env) diff --git a/irlc/lectures/lec07/lecture_07_boing_lqr_mpc.py b/irlc/lectures/lec07/lecture_07_boing_lqr_mpc.py new file mode 100644 index 0000000..2c4a722 --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_boing_lqr_mpc.py @@ -0,0 +1,14 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex04.model_boeing import BoeingEnvironment +from irlc.ex07.lqr_learning_agents import learning_lqr, learning_lqr_mpc, learning_lqr_mpc_local +from irlc.ex07.learning_agent_mpc_optimize import learning_optimization_mpc_local + +if __name__ == "__main__": + env = BoeingEnvironment(output=[10, 0]) + learning_lqr_mpc(env) + + # # Part C: LQR+MPC and local regression + # learning_lqr_mpc_local(env) + # + # # Part D: Optimization+MPC and local regression + # learning_optimization_mpc_local(env) diff --git a/irlc/lectures/lec07/lecture_07_boing_lqr_mpc_local.py b/irlc/lectures/lec07/lecture_07_boing_lqr_mpc_local.py new file mode 100644 index 0000000..22376d1 --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_boing_lqr_mpc_local.py @@ -0,0 +1,9 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex04.model_boeing import BoeingEnvironment +from irlc.ex07.lqr_learning_agents import learning_lqr, learning_lqr_mpc, learning_lqr_mpc_local +from irlc.ex07.learning_agent_mpc_optimize import learning_optimization_mpc_local + +if __name__ == "__main__": + env = BoeingEnvironment(output=[10, 0]) + learning_lqr_mpc_local(env) + # learning_optimization_mpc_local(env) diff --git a/irlc/lectures/lec07/lecture_07_boing_lqr_mpc_optim.py b/irlc/lectures/lec07/lecture_07_boing_lqr_mpc_optim.py new file mode 100644 index 0000000..4ed3f3e --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_boing_lqr_mpc_optim.py @@ -0,0 +1,8 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex04.model_boeing import BoeingEnvironment +from irlc.ex07.lqr_learning_agents import learning_lqr, learning_lqr_mpc, learning_lqr_mpc_local +from irlc.ex07.learning_agent_mpc_optimize import learning_optimization_mpc_local + +if __name__ == "__main__": + env = BoeingEnvironment(output=[10, 0]) + learning_optimization_mpc_local(env) diff --git a/irlc/lectures/lec07/lecture_07_lmpc.py b/irlc/lectures/lec07/lecture_07_lmpc.py new file mode 100644 index 0000000..5fff87c --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_lmpc.py @@ -0,0 +1,5 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex07.lmpc_run import main + +if __name__ == "__main__": + main(show_episode=True) diff --git a/irlc/lectures/lec07/lecture_07_pendulum_mpc_lqr.py b/irlc/lectures/lec07/lecture_07_pendulum_mpc_lqr.py new file mode 100644 index 0000000..8867c0a --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_pendulum_mpc_lqr.py @@ -0,0 +1,4 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +if __name__ == "__main__": + from irlc.ex07.mpc_pendulum_experiment_lqr import main_pendulum_lqr + main_pendulum_lqr() diff --git a/irlc/lectures/lec07/lecture_07_pendulum_mpc_optm.py b/irlc/lectures/lec07/lecture_07_pendulum_mpc_optm.py new file mode 100644 index 0000000..9eff242 --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_pendulum_mpc_optm.py @@ -0,0 +1,4 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +if __name__ == "__main__": + from irlc.ex07.mpc_pendulum_experiment_optim import main_pendulum + main_pendulum() diff --git a/irlc/lectures/lec07/lecture_07_pendulum_simple.py b/irlc/lectures/lec07/lecture_07_pendulum_simple.py new file mode 100644 index 0000000..337b165 --- /dev/null +++ b/irlc/lectures/lec07/lecture_07_pendulum_simple.py @@ -0,0 +1,41 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex04.model_pendulum import GymSinCosPendulumEnvironment +from irlc.utils.video_monitor import VideoMonitor +from irlc.ex04.discrete_control_cost import goal_seeking_qr_cost, DiscreteQRCost +from irlc.ex01.agent import train +from irlc.ex07.lqr_learning_agents import MPCLocalLearningLQRAgent, MPCLearningAgent +from irlc import plot_trajectory, main_plot +import matplotlib.pyplot as plt +import numpy as np +from irlc.ex07.mpc_pendulum_experiment_lqr import mk_mpc_pendulum_env + +L = 12 +def main_pendulum_lqr_simple(Tmax=10): + + """ Run Local LQR/MPC agent using the parameters + L = 12 + neighboorhood_size = 50 + min_buffer_size = 50 + """ + env_pendulum = mk_mpc_pendulum_env() + + # agent = .... (instantiate agent here) + # TODO: 1 lines missing. + raise NotImplementedError("Instantiate your agent here") + env_pendulum = VideoMonitor(env_pendulum) + + experiment_name = f"pendulum{L}_lqr" + stats, trajectories = train(env_pendulum, agent, experiment_name=experiment_name, num_episodes=16,return_trajectory=True) + plt.show() + for k in range(len(trajectories)): + plot_trajectory(trajectories[k], env_pendulum) + plt.title(f"Trajectory {k}") + plt.show() + + env_pendulum.close() + main_plot(experiment_name) + plt.show() + +if __name__ == "__main__": + np.random.seed(1) + main_pendulum_lqr_simple() diff --git a/irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/log.txt b/irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/log.txt new file mode 100644 index 0000000..dc592cf --- /dev/null +++ b/irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/log.txt @@ -0,0 +1,17 @@ +Episode Accumulated Reward Average Reward Length Steps +0 -4895.647575826604 -39.165180606612836 125 125 +1 -4401.3119492497035 -35.21049559399765 125 250 +2 -2909.118791375824 -23.272950331006577 125 375 +3 -1355.8374521458716 -10.846699617166973 125 500 +4 -1392.1376132555315 -11.13710090604426 125 625 +5 -2377.229711438541 -19.017837691508326 125 750 +6 -1605.205601135333 -12.841644809082668 125 875 +7 -1142.6024308594363 -9.140819446875495 125 1000 +8 -1110.17238007953 -8.881379040636237 125 1125 +9 -1415.0153227915457 -11.320122582332363 125 1250 +10 -1084.806186007314 -8.678449488058519 125 1375 +11 -1204.58673322474 -9.636693865797913 125 1500 +12 -1582.8902992149344 -12.66312239371947 125 1625 +13 -1234.3968104401945 -9.875174483521556 125 1750 +14 -2290.3685781570866 -18.322948625256696 125 1875 +15 -1317.928485283048 -10.543427882264387 125 2000 diff --git a/irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/trajectories.pkl b/irlc/lectures/lec07/pendulum12/2021-03-19_08-21-20.207/trajectories.pkl new file mode 100644 index 0000000000000000000000000000000000000000..34930a77fba816ca18036b42921823ab18cefc24 GIT binary patch literal 75688 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𝔒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 G1X)__>DPMz literal 0 HcmV?d00001 diff --git a/irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/log.txt b/irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/log.txt new file mode 100644 index 0000000..3005052 --- /dev/null +++ b/irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/log.txt @@ -0,0 +1,17 @@ +Episode Accumulated Reward Average Reward Length Steps +0 -5062.646915554269 -40.50117532443415 125 125 +1 -4545.443228168109 -36.36354582534487 125 250 +2 -3992.451522701582 -31.939612181612656 125 375 +3 -2660.945115772302 -21.287560926178415 125 500 +4 -1089.641113544413 -8.71712890835529 125 625 +5 -1794.3862709577143 -14.35509016766171 125 750 +6 -1599.3332228782826 -12.79466578302626 125 875 +7 -1999.3347944176303 -15.994678355341035 125 1000 +8 -1240.1770407677993 -9.921416326142396 125 1125 +9 -1128.717151496786 -9.029737211974288 125 1250 +10 -1148.8528175884883 -9.19082254070789 125 1375 +11 -1199.5840778420286 -9.596672622736232 125 1500 +12 -1147.0703774473068 -9.176563019578447 125 1625 +13 -1245.4139074019245 -9.963311259215399 125 1750 +14 -1257.9333517907346 -10.063466814325885 125 1875 +15 -1309.9607605947551 -10.479686084758042 125 2000 diff --git a/irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/trajectories.pkl b/irlc/lectures/lec07/pendulum12/2022-03-17_14-16-10.758/trajectories.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c2b34f7154ed75b8dfa9e69bcd3de982d0cd0eb1 GIT binary patch literal 74800 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 CE`o6Y literal 0 HcmV?d00001 diff --git a/irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/log.txt b/irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/log.txt new file mode 100644 index 0000000..643cee3 --- /dev/null +++ b/irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/log.txt @@ -0,0 +1,17 @@ +Episode Accumulated Reward Length Steps +0 -5042.020051692956 125 0 +1 -4627.801003133058 125 1 +2 -3635.9503089227105 125 2 +3 -2459.2456085370436 125 3 +4 -1142.0454750510762 125 4 +5 -1563.5408392433658 125 5 +6 -1718.6689962603696 125 6 +7 -1215.2631997008277 125 7 +8 -1172.9345344478274 125 8 +9 -1108.3729746371948 125 9 +10 -1012.6787060036193 125 10 +11 -1715.9593847985013 125 11 +12 -1009.5943996400636 125 12 +13 -1082.3121757069966 125 13 +14 -1248.0530347172762 125 14 +15 -1496.6826680867007 125 15 diff --git a/irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/trajectories.pkl b/irlc/lectures/lec07/pendulum12_lqr/2023-03-17_08-13-45.172/trajectories.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3e9f2d19af2a1f4bdcdbc7a8922852a440795c46 GIT binary patch literal 75880 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 literal 0 HcmV?d00001 diff --git a/irlc/tests/tests_week05.py b/irlc/tests/tests_week05.py new file mode 100644 index 0000000..4a7f813 --- /dev/null +++ b/irlc/tests/tests_week05.py @@ -0,0 +1,114 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from unitgrade import Report +from irlc.ex05.direct_agent import train_direct_agent +from unitgrade import UTestCase +import irlc +from irlc.ex05.direct import run_direct_small_problem + + +class DirectMethods(UTestCase): + title = "Direct methods z, z0, z_lb/z_ub definitions+" + + @classmethod + def setUpClass(cls) -> None: + env, solution = run_direct_small_problem() + cls.solution = solution[-1] + + def test_z_variable_vector(self): + self.assertEqualC(str(DirectMethods.solution['inputs']['z'])) + + def test_z0_initial_state(self): + self.assertL2(DirectMethods.solution['inputs']['z0'], tol=1e-6) + + def test_zU_upper_bound(self): + self.assertL2(DirectMethods.solution['inputs']['z_ub'], tol=1e-6) + + def test_zL_lower_bound(self): + self.assertL2(DirectMethods.solution['inputs']['z_lb'], tol=1e-6) + + +class DirectAgentPendulum(UTestCase): + """ Direct agent: Test of pendulum environment """ + def test_pendulum(self): + stats,_,_ = train_direct_agent(animate=False) + return self.assertL2(stats[0]['Accumulated Reward'], tol=0.03) + +class DirectSolverQuestion(UTestCase): + """ Test the Direct solver on the Pendulum using run_direct_small_problem() """ + @classmethod + def setUpClass(cls): + cls.solution = cls.compute_solution() + + @classmethod + def compute_solution(cls): + from irlc.ex05.direct import run_direct_small_problem + env, solution = run_direct_small_problem() + return solution + # cls.solution = solution + + def test_solver_success(self): + self.assertTrue(self.__class__.solution[-1]['solver']['success']) + + def test_solver_fun(self): + self.assertL2(self.__class__.solution[-1]['solver']['fun'], tol=0.01) + + def test_constraint_violation(self): + self.assertL2(self.__class__.solution[-1]['eqC_val'], tol=0.01) + + +class PendulumQuestion(DirectSolverQuestion): + """ Direct solver on the pendulum problem """ + @classmethod + def compute_solution(cls): + from irlc.ex05.direct_pendulum import compute_pendulum_solutions + return compute_pendulum_solutions()[1] + + +class CartpoleTimeQuestion(DirectSolverQuestion): + """ Direct solver on the cartpole (minimum time) task """ + @classmethod + def compute_solution(cls): + from irlc.ex05.direct_cartpole_time import compute_solutions + return compute_solutions()[1] + + +class CartpoleCostQuestion(DirectSolverQuestion): + """ Direct solver on the cartpole (kelly) task """ + @classmethod + def compute_solution(cls): + from irlc.ex05.direct_cartpole_kelly import compute_solutions + return compute_solutions()[1] + +class BrachistochroneQuestion(DirectSolverQuestion): + """ Brachistochrone (unconstrained) """ + + @classmethod + def compute_solution(cls): + from irlc.ex05.direct_brachistochrone import compute_constrained_solutions + return compute_constrained_solutions()[1] + +class BrachistochroneConstrainedQuestion(DirectSolverQuestion): + """ Brachistochrone (constrained) """ + @classmethod + def compute_solution(cls): + from irlc.ex05.direct_brachistochrone import compute_constrained_solutions + return compute_constrained_solutions()[1] + +class Week05Tests(Report): + title = "Tests for week 05" + pack_imports = [irlc] + individual_imports = [] + questions = [ + (DirectMethods, 10), # ok + (DirectSolverQuestion, 10), # ok + (PendulumQuestion, 5), # ok + (DirectAgentPendulum, 10), # ok + (CartpoleTimeQuestion, 5), # ok + (CartpoleCostQuestion, 5), # ok + (BrachistochroneQuestion, 5), # ok + (BrachistochroneConstrainedQuestion, 10), # ok + ] + +if __name__ == '__main__': + from unitgrade import evaluate_report_student + evaluate_report_student(Week05Tests()) diff --git a/irlc/tests/tests_week06.py b/irlc/tests/tests_week06.py new file mode 100644 index 0000000..a724638 --- /dev/null +++ b/irlc/tests/tests_week06.py @@ -0,0 +1,147 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from irlc.ex06.model_boeing import BoeingEnvironment +from unitgrade import UTestCase, Report +import irlc +from irlc import train +import numpy as np +from irlc.ex04.locomotive import LocomotiveEnvironment +from irlc.ex04.model_harmonic import HarmonicOscilatorEnvironment + +matrices = ['L', 'l', 'V', 'v', 'vc'] + +class Problem3LQR(UTestCase): + title = "LQR, full check of implementation" + + @classmethod + def setUpClass(cls): + # def init(self): + from irlc.ex06.dlqr_check import check_LQR + (cls.L, cls.l), (cls.V, cls.v, cls.vc) = check_LQR() + # self.M = list(zip(matrices, [L, l, V, v, vc])) + + def chk_item(self, m_list): + self.assertIsInstance(m_list, list) + self.assertEqualC(len(m_list)) + for m in m_list: + self.assertIsInstance(m, np.ndarray) + self.assertEqualC(m.shape) + self.assertL2(m, tol=1e-6) + + def test_L(self): + self.chk_item(self.__class__.L) + + def test_l(self): + self.chk_item(self.__class__.l) + + def test_V(self): + self.chk_item(self.__class__.V) + + def test_v(self): + self.chk_item(self.__class__.v) + + def test_vc(self): + vc = self.__class__.vc + self.assertIsInstance(vc, list) + for d in vc: + self.assertL2(d, tol=1e-6) + + self.chk_item(self.__class__.l) + +class Problem4LQRAgent(UTestCase): + def _mkagent(self, val=0.): + A = np.ones((2, 2))* (1+val) + A[1, 0] = 0 + B = np.asarray([[0], [1]]) + Q = np.eye(2) * (3+val) + R = np.ones((1, 1)) * 2 + q = np.asarray([-1.1 + val, 0]) + from irlc.ex06.lqr_agent import LQRAgent + env = LocomotiveEnvironment(render_mode=None, Tmax=5, slope=1) + agent = LQRAgent(env, A=A, B=B, Q=Q, R=R, q=q) + return agent + + def test_policy_lqr_a(self): + agent = self._mkagent(0) + self.assertL2(agent.pi(np.asarray([1, 0]), k=0)) + self.assertL2(agent.pi(np.asarray([1, 0]), k=5)) + + def test_policy_lqr_b(self): + agent = self._mkagent(0.2) + self.assertL2(agent.pi(np.asarray([1, 0]), k=0)) + self.assertL2(agent.pi(np.asarray([1, 0]), k=5)) + +class Problem5_6_Boeing(UTestCase): + + def test_compute_A_B_d(self): + from irlc.ex06.boeing_lqr import compute_A_B_d, compute_Q_R_q + model = BoeingEnvironment(Tmax=10).discrete_model.continuous_model + A, B, d = compute_A_B_d(model, dt=0.2) + self.assertL2(A) + self.assertL2(B) + self.assertL2(d) + + def test_compute_Q_R_q(self): + from irlc.ex06.boeing_lqr import compute_A_B_d, compute_Q_R_q + model = BoeingEnvironment(Tmax=10).discrete_model.continuous_model + Q, R, q = compute_Q_R_q(model, dt=0.2) + self.assertL2(Q) + self.assertL2(R) + self.assertL2(q) + + def test_boing_path(self): + from irlc.ex06.boeing_lqr import boeing_simulation + stats, trajectories, env = boeing_simulation() + self.assertL2(trajectories[-1].state, tol=1e-6) + + +class Problem7_8_PidLQR(UTestCase): + def test_constant_lqr_agent(self): + Delta = 0.06 # Time discretization constant + # Define a harmonic osscilator environment. Use .., render_mode='human' to see a visualization. + env = HarmonicOscilatorEnvironment(Tmax=8, dt=Delta, m=0.5, R=np.eye(1) * 8, + render_mode=None) # set render_mode='human' to see the oscillator. + model = env.discrete_model.continuous_model # Get the ControlModel corresponding to this environment. + + from irlc.ex06.boeing_lqr import compute_A_B_d, compute_Q_R_q + from irlc.ex06.lqr_pid import ConstantLQRAgent + A, B, d = compute_A_B_d(model, Delta) + Q, R, q = compute_Q_R_q(model, Delta) + x0, _ = env.reset() + + # Run the LQR agent + lqr_agent = ConstantLQRAgent(env, A=A, B=B, d=d, Q=Q, R=R, q=q) + self.assertLinf(lqr_agent.pi(x0, k=0), tol=1e-3) + self.assertLinf(lqr_agent.pi(x0, k=10), tol=1e-3) + + + def test_KpKd(self): + Delta = 0.06 # Time discretization constant + # Define a harmonic osscilator environment. Use .., render_mode='human' to see a visualization. + env = HarmonicOscilatorEnvironment(Tmax=8, dt=Delta, m=0.5, R=np.eye(1) * 8, + render_mode=None) # set render_mode='human' to see the oscillator. + model = env.discrete_model.continuous_model # Get the ControlModel corresponding to this environment. + from irlc.ex06.boeing_lqr import compute_A_B_d, compute_Q_R_q + from irlc.ex06.lqr_pid import ConstantLQRAgent, get_Kp_Kd + A, B, d = compute_A_B_d(model, Delta) + Q, R, q = compute_Q_R_q(model, Delta) + lqr_agent = ConstantLQRAgent(env, A=A, B=B, d=d, Q=Q, R=R, q=q) + Kp, Kd = get_Kp_Kd(lqr_agent.L[0]) + self.assertAlmostEqualC(Kp, places=3) + self.assertAlmostEqualC(Kd, places=3) + + + + +class Week06Tests(Report): + title = "Tests for week 06" + pack_imports = [irlc] + individual_imports = [] + questions = [ + (Problem3LQR, 10), + (Problem4LQRAgent, 10), + (Problem5_6_Boeing, 10), + (Problem7_8_PidLQR, 10), + ] +if __name__ == '__main__': + from unitgrade import evaluate_report_student + evaluate_report_student(Week06Tests()) diff --git a/irlc/tests/tests_week07.py b/irlc/tests/tests_week07.py new file mode 100644 index 0000000..1f46427 --- /dev/null +++ b/irlc/tests/tests_week07.py @@ -0,0 +1,62 @@ +# This file may not be shared/redistributed without permission. Please read copyright notice in the git repo. If this file contains other copyright notices disregard this text. +from unitgrade import Report +import irlc +from unitgrade import UTestCase +import numpy as np +from irlc import Agent, train + +class RendevouzItem(UTestCase): + def test_rendevouz_without_linesearch(self): + """ Rendevouz with iLQR (no linesearch) """ + from irlc.ex07.ilqr_rendovouz_basic import solve_rendovouz + (xs, us, J_hist, l, L), env = solve_rendovouz(use_linesearch=False) + # print(J_hist[-1]) + self.assertL2(xs[-1], tol=1e-2) + + def test_rendevouz_with_linesearch(self): + """ Rendevouz with iLQR (with linesearch) """ + from irlc.ex07.ilqr_rendovouz_basic import solve_rendovouz + (xs, us, J_hist, l, L), env = solve_rendovouz(use_linesearch=True) + # print(J_hist[-1]) + self.assertL2(xs[-1], tol=1e-2) + # return l, L, xs + + + + + +class ILQRAgentQuestion(UTestCase): + """ iLQR Agent on Rendevouz """ + def test_ilqr_agent(self): + from irlc.ex07.ilqr_agent import solve_rendevouz + stats, trajectories, agent = solve_rendevouz() + self.assertL2(trajectories[-1].state[-1], tol=1e-2) + + +class ILQRPendulumQuestion(UTestCase): + """ iLQR Agent on Pendulum """ + + def test_ilqr_agent_pendulum(self): + from irlc.ex07.ilqr_pendulum_agent import Tmax, N + from irlc.ex04.model_pendulum import GymSinCosPendulumEnvironment + from irlc.ex07.ilqr_agent import ILQRAgent + dt = Tmax / N + env = GymSinCosPendulumEnvironment(dt, Tmax=Tmax, supersample_trajectory=True) + agent = ILQRAgent(env, env.discrete_model, N=N, ilqr_iterations=200, use_linesearch=True) + stats, trajectories = train(env, agent, num_episodes=1, return_trajectory=True) + state = trajectories[-1].state[-1] + self.assertL2(state, tol=2e-2) + +class Week07Tests(Report): #240 total. + title = "Tests for week 07" + pack_imports = [irlc] + individual_imports = [] + questions = [ + (RendevouzItem, 10), # ok + (ILQRAgentQuestion, 10), # ok + (ILQRPendulumQuestion, 10), # ok + ] + +if __name__ == '__main__': + from unitgrade import evaluate_report_student + evaluate_report_student(Week07Tests()) diff --git a/irlc/tests/unitgrade_data/BrachistochroneConstrainedQuestion.pkl b/irlc/tests/unitgrade_data/BrachistochroneConstrainedQuestion.pkl index 76f27814d4eaaa7c2990d3dab02904f443993ef0..1d1b594d8ccdde8336eb3cd174e105beaf5eaf6f 100644 GIT binary patch delta 271 zcmX?Qamr$XJ@b)!2@{>n8Lv*Pn#H8^W3m|IPA0`0lP@wVDQH)`6JTIq$S}%aYnzh6 z(Ke-a3Y5*#HpSiU>SSRi6He6(pc0Ux$p_iwHs>*&V`ftLG1-nyO~E~?+Xy7%i=-XG z25Y}OxrNPyNnK*|F1E)UOiCJ)=ku$v7#$9en0%67n(^l3r~D>N1`?a41(aEtOavx7 zh-xuy?U|e-D#Lhba;K;XlS;+r{i45_m=q)??~yQ3;9c0X0A$-dB-<ctux%G63rL!9 Ys#pM(fE0lpn=N^biBrJ<EL5ro0FR4S`2YX_ delta 271 zcmX?Qamr$XJ@dhxHzqonGhUupHH%64#$++ZolJ5ICSPP!QqXLkT)@D<kYSX;);1-B zqiss<6eydeZHl|ywaLOvCY)*lKqVkWlMk}VZO&sl$IPU<W3nBanu6yuomU_kUnK1i zHdy<`$t`RqOllmPcd<R@U{d`tc|N}yi(y!f#pILx(v0UOKjk-JQvI-5T0ohVN$135 z2T?7i&efB1L}eJyOzso~>b$Udzvyo!Cfy&C_ehv12*yPo0NFMV$u<ZZY}>iX0+J@2 XMhQSAAVpxuW=mdU;#7nPmFfWi!Gc;* diff --git a/irlc/tests/unitgrade_data/BrachistochroneQuestion.pkl b/irlc/tests/unitgrade_data/BrachistochroneQuestion.pkl index 76f27814d4eaaa7c2990d3dab02904f443993ef0..1d1b594d8ccdde8336eb3cd174e105beaf5eaf6f 100644 GIT binary patch delta 271 zcmX?Qamr$XJ@b)!2@{>n8Lv*Pn#H8^W3m|IPA0`0lP@wVDQH)`6JTIq$S}%aYnzh6 z(Ke-a3Y5*#HpSiU>SSRi6He6(pc0Ux$p_iwHs>*&V`ftLG1-nyO~E~?+Xy7%i=-XG z25Y}OxrNPyNnK*|F1E)UOiCJ)=ku$v7#$9en0%67n(^l3r~D>N1`?a41(aEtOavx7 zh-xuy?U|e-D#Lhba;K;XlS;+r{i45_m=q)??~yQ3;9c0X0A$-dB-<ctux%G63rL!9 Ys#pM(fE0lpn=N^biBrJ<EL5ro0FR4S`2YX_ delta 271 zcmX?Qamr$XJ@dhxHzqonGhUupHH%64#$++ZolJ5ICSPP!QqXLkT)@D<kYSX;);1-B zqiss<6eydeZHl|ywaLOvCY)*lKqVkWlMk}VZO&sl$IPU<W3nBanu6yuomU_kUnK1i zHdy<`$t`RqOllmPcd<R@U{d`tc|N}yi(y!f#pILx(v0UOKjk-JQvI-5T0ohVN$135 z2T?7i&efB1L}eJyOzso~>b$Udzvyo!Cfy&C_ehv12*yPo0NFMV$u<ZZY}>iX0+J@2 XMhQSAAVpxuW=mdU;#7nPmFfWi!Gc;* diff --git a/irlc/tests/unitgrade_data/CartpoleCostQuestion.pkl b/irlc/tests/unitgrade_data/CartpoleCostQuestion.pkl index 76f27814d4eaaa7c2990d3dab02904f443993ef0..1d1b594d8ccdde8336eb3cd174e105beaf5eaf6f 100644 GIT binary patch delta 271 zcmX?Qamr$XJ@b)!2@{>n8Lv*Pn#H8^W3m|IPA0`0lP@wVDQH)`6JTIq$S}%aYnzh6 z(Ke-a3Y5*#HpSiU>SSRi6He6(pc0Ux$p_iwHs>*&V`ftLG1-nyO~E~?+Xy7%i=-XG z25Y}OxrNPyNnK*|F1E)UOiCJ)=ku$v7#$9en0%67n(^l3r~D>N1`?a41(aEtOavx7 zh-xuy?U|e-D#Lhba;K;XlS;+r{i45_m=q)??~yQ3;9c0X0A$-dB-<ctux%G63rL!9 Ys#pM(fE0lpn=N^biBrJ<EL5ro0FR4S`2YX_ delta 271 zcmX?Qamr$XJ@dhxHzqonGhUupHH%64#$++ZolJ5ICSPP!QqXLkT)@D<kYSX;);1-B zqiss<6eydeZHl|ywaLOvCY)*lKqVkWlMk}VZO&sl$IPU<W3nBanu6yuomU_kUnK1i zHdy<`$t`RqOllmPcd<R@U{d`tc|N}yi(y!f#pILx(v0UOKjk-JQvI-5T0ohVN$135 z2T?7i&efB1L}eJyOzso~>b$Udzvyo!Cfy&C_ehv12*yPo0NFMV$u<ZZY}>iX0+J@2 XMhQSAAVpxuW=mdU;#7nPmFfWi!Gc;* diff --git a/irlc/tests/unitgrade_data/CartpoleTimeQuestion.pkl b/irlc/tests/unitgrade_data/CartpoleTimeQuestion.pkl index 76f27814d4eaaa7c2990d3dab02904f443993ef0..1d1b594d8ccdde8336eb3cd174e105beaf5eaf6f 100644 GIT binary patch delta 271 zcmX?Qamr$XJ@b)!2@{>n8Lv*Pn#H8^W3m|IPA0`0lP@wVDQH)`6JTIq$S}%aYnzh6 z(Ke-a3Y5*#HpSiU>SSRi6He6(pc0Ux$p_iwHs>*&V`ftLG1-nyO~E~?+Xy7%i=-XG z25Y}OxrNPyNnK*|F1E)UOiCJ)=ku$v7#$9en0%67n(^l3r~D>N1`?a41(aEtOavx7 zh-xuy?U|e-D#Lhba;K;XlS;+r{i45_m=q)??~yQ3;9c0X0A$-dB-<ctux%G63rL!9 Ys#pM(fE0lpn=N^biBrJ<EL5ro0FR4S`2YX_ delta 271 zcmX?Qamr$XJ@dhxHzqonGhUupHH%64#$++ZolJ5ICSPP!QqXLkT)@D<kYSX;);1-B zqiss<6eydeZHl|ywaLOvCY)*lKqVkWlMk}VZO&sl$IPU<W3nBanu6yuomU_kUnK1i zHdy<`$t`RqOllmPcd<R@U{d`tc|N}yi(y!f#pILx(v0UOKjk-JQvI-5T0ohVN$135 z2T?7i&efB1L}eJyOzso~>b$Udzvyo!Cfy&C_ehv12*yPo0NFMV$u<ZZY}>iX0+J@2 XMhQSAAVpxuW=mdU;#7nPmFfWi!Gc;* diff --git a/irlc/tests/unitgrade_data/DirectAgentPendulum.pkl b/irlc/tests/unitgrade_data/DirectAgentPendulum.pkl index 49ce42c0ea11e0f6f45b5cd1aadccde7c4fb4274..e9d2ed475214b22bc52f1cc0dfc8c04c71d9a2b9 100644 GIT binary patch delta 21 dcmaFP_?&Tq9TVq*i4OBQl0FMCFff$r0RUCD2Fd^c delta 21 dcmaFP_?&Tq9g~p5M2GntN9F}EFff$r0RU5x2EYIS diff --git a/irlc/tests/unitgrade_data/DirectMethods.pkl b/irlc/tests/unitgrade_data/DirectMethods.pkl index 7ccccf4713076674e8553270c2282b44501b6cc8..f81ab2560bf4752a237712f1df94fc8ae01ac0ce 100644 GIT binary patch delta 47 zcmdnYy_tK01<Rv<;tdmRHZaKvY<zc!kxBi>=1ol1j7+8moAp_$899wUFn~a*9ssUA B4{87a delta 47 zcmdnYy_tK01<U10x(pL-HZVyTY<zc!kx7MP^CqThAl<Q9pQW0SQ!ao31WNS)cQp+^ diff --git a/irlc/tests/unitgrade_data/DirectSolverQuestion.pkl b/irlc/tests/unitgrade_data/DirectSolverQuestion.pkl index 76f27814d4eaaa7c2990d3dab02904f443993ef0..1d1b594d8ccdde8336eb3cd174e105beaf5eaf6f 100644 GIT binary patch delta 271 zcmX?Qamr$XJ@b)!2@{>n8Lv*Pn#H8^W3m|IPA0`0lP@wVDQH)`6JTIq$S}%aYnzh6 z(Ke-a3Y5*#HpSiU>SSRi6He6(pc0Ux$p_iwHs>*&V`ftLG1-nyO~E~?+Xy7%i=-XG z25Y}OxrNPyNnK*|F1E)UOiCJ)=ku$v7#$9en0%67n(^l3r~D>N1`?a41(aEtOavx7 zh-xuy?U|e-D#Lhba;K;XlS;+r{i45_m=q)??~yQ3;9c0X0A$-dB-<ctux%G63rL!9 Ys#pM(fE0lpn=N^biBrJ<EL5ro0FR4S`2YX_ delta 271 zcmX?Qamr$XJ@dhxHzqonGhUupHH%64#$++ZolJ5ICSPP!QqXLkT)@D<kYSX;);1-B zqiss<6eydeZHl|ywaLOvCY)*lKqVkWlMk}VZO&sl$IPU<W3nBanu6yuomU_kUnK1i zHdy<`$t`RqOllmPcd<R@U{d`tc|N}yi(y!f#pILx(v0UOKjk-JQvI-5T0ohVN$135 z2T?7i&efB1L}eJyOzso~>b$Udzvyo!Cfy&C_ehv12*yPo0NFMV$u<ZZY}>iX0+J@2 XMhQSAAVpxuW=mdU;#7nPmFfWi!Gc;* diff --git a/irlc/tests/unitgrade_data/Exam5InventoryEvaluation.pkl b/irlc/tests/unitgrade_data/Exam5InventoryEvaluation.pkl index 12902e7ce8615fda0d3a74fbd97811e28766dded..a511917ab3f43109f1d3fe37b025f2fde713339f 100644 GIT binary patch delta 28 hcmcb~c$0C0GZW8&iLRbZJ`NKnIB+UGU;u$qJphQ#2oeAQ delta 28 hcmcb~c$0C0GZQz%L|0EHy8{y^IB-e|Fn~a*9sqe32I>F+ diff --git a/irlc/tests/unitgrade_data/Exam6Toy2d.pkl b/irlc/tests/unitgrade_data/Exam6Toy2d.pkl index d40a08b78e3defd5e720b05e0948e20d9ad0f3b8..f927b5ae7578002c5a8840c91705f5d4c7d806f0 100644 GIT binary patch delta 29 jcmbQuG@EIHDU(9PMDy9qs~Z+fylTt2BCUb}2uk$;mfHz{ delta 29 kcmbQuG@EIHDU-;DiRQDJm!xz|ylTt2e3k|S5R~cx0G>_>v;Y7A diff --git a/irlc/tests/unitgrade_data/ExamQuestion7FlowersStore.pkl b/irlc/tests/unitgrade_data/ExamQuestion7FlowersStore.pkl index 50149f3db947fddf5f0faf61a7f098e1fc8a3167..6555641d17ccd50bdc906dab13481cdad59254cc 100644 GIT binary patch delta 29 icmdnSxQ%gw3lnF<L^m_$M%4!s>-9L*3K&43R1W}%ng`?n delta 29 icmdnSxQ%gw3loRKL^m_$C@F@C^?IBJISe3Bss{jcDF&AS diff --git a/irlc/tests/unitgrade_data/ILQRAgentQuestion.pkl b/irlc/tests/unitgrade_data/ILQRAgentQuestion.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4af21ecb688c99771e1897bc53ecbae1bc667b8f GIT binary patch literal 326 zcmZo*nQG0*00y;FG<pO*eFB3V(^K<G0!veiOEUBGru1+Xr<Q~kIOil57f)%M(!)}c znVSk^xZ86pfc0fC_VAYg6~|}h6c)uNf;5BFu>sYm7J-<xQ@j~^#PUjW3o7;Elk<yG z^>RydN-`6RiV`cQ^zg(Nr6%X+6_*s1CYMZ^Jf(*fta3^ZdtM4e$z-7Z)+x@6NmJUV z1WnQKX7uK0osz-V!<tf3S&$0S!jxt)rLzMf%iP0gGsVx(&+9)BfC+Dgk|{}@&JHyK z%>ExvYC6>16)yd!z<%H{|HH>tCo~<J8%&xXtFs?iaHHaWZhfQuqfLy8yVy(jceb_6 o-pEyI|BE@{c4|-K{wY9XiZd89*xIIKuz&*Kf%Rrk2$bpp0H*(hH2?qr literal 0 HcmV?d00001 diff --git a/irlc/tests/unitgrade_data/ILQRPendulumQuestion.pkl b/irlc/tests/unitgrade_data/ILQRPendulumQuestion.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1019b5db1c0a0ad9b3e14545aaf80055652fcb66 GIT binary patch literal 298 zcmZo*nJUl700y;FG<rlleFB35Qu9(ub4qgqOH+$WGV}AM^l%lYmV_2K=Oh*vPidRd z!%~u&n+jyO+jA}eYt3NnkthKwj?c^~EQ(J|Pt7ZdFMyf?(!d7Pm|9c<WY$jcX6O;i zE6pva)QeBfFG|(REzK#(Oe`u&ten!r6JL~?oS#=*QdF8;GG+3V9#*i*DLw3YDG()- zf%;pgI5Q?qX`d1_MZ=rXo4IvL244?rN=aowDo6`cn#GjP4u~vs52MW#KR-XO|3CmH zyctTSBy~DVbT_R0VryT%-&sV-^4|aV_Ck*Lh3db>*iQjU7iTbLu(eIeU;+8?O?*lN I(2u2h0OJC7$N&HU literal 0 HcmV?d00001 diff --git a/irlc/tests/unitgrade_data/PendulumQuestion.pkl b/irlc/tests/unitgrade_data/PendulumQuestion.pkl index 76f27814d4eaaa7c2990d3dab02904f443993ef0..1d1b594d8ccdde8336eb3cd174e105beaf5eaf6f 100644 GIT binary patch delta 271 zcmX?Qamr$XJ@b)!2@{>n8Lv*Pn#H8^W3m|IPA0`0lP@wVDQH)`6JTIq$S}%aYnzh6 z(Ke-a3Y5*#HpSiU>SSRi6He6(pc0Ux$p_iwHs>*&V`ftLG1-nyO~E~?+Xy7%i=-XG z25Y}OxrNPyNnK*|F1E)UOiCJ)=ku$v7#$9en0%67n(^l3r~D>N1`?a41(aEtOavx7 zh-xuy?U|e-D#Lhba;K;XlS;+r{i45_m=q)??~yQ3;9c0X0A$-dB-<ctux%G63rL!9 Ys#pM(fE0lpn=N^biBrJ<EL5ro0FR4S`2YX_ delta 271 zcmX?Qamr$XJ@dhxHzqonGhUupHH%64#$++ZolJ5ICSPP!QqXLkT)@D<kYSX;);1-B zqiss<6eydeZHl|ywaLOvCY)*lKqVkWlMk}VZO&sl$IPU<W3nBanu6yuomU_kUnK1i zHdy<`$t`RqOllmPcd<R@U{d`tc|N}yi(y!f#pILx(v0UOKjk-JQvI-5T0ohVN$135 z2T?7i&efB1L}eJyOzso~>b$Udzvyo!Cfy&C_ehv12*yPo0NFMV$u<ZZY}>iX0+J@2 XMhQSAAVpxuW=mdU;#7nPmFfWi!Gc;* diff --git a/irlc/tests/unitgrade_data/Problem1BobsFriend.pkl b/irlc/tests/unitgrade_data/Problem1BobsFriend.pkl index 62c9f65ce0617aa3054d6affdad0c711fc5685c7..cb3e05e507f46a771194aa47e9d478a38ea6dc4a 100644 GIT binary patch delta 29 icmZ3*xQcOtEt6QlM0-;vCWVP*T3mJ?4={j0sU84&83%#@ delta 29 icmZ3*xQcOtEt6itM0-;viG+z|T3q%b4;Vn8R1W}q-Umbg diff --git a/irlc/tests/unitgrade_data/Problem1DiscreteKuromoto.pkl b/irlc/tests/unitgrade_data/Problem1DiscreteKuromoto.pkl index 9b686f94b8f574600bc3a37c18a45c4d0a299430..5884cbbaec323589db6f77d93e93aab42b835c82 100644 GIT binary patch delta 43 ycmdnRvWsPcGn0tHMAu%Xh>D3<wljq?PVQy&WA5-vn0${hn6q?!0|OA0>Hz>oRSo<A delta 43 ycmdnRvWsPcGZXKFiLSj&L2eVTY-jS{H@TP5kGbW^gUR<8gE`C2J1_u2sU84#TM!oj diff --git a/irlc/tests/unitgrade_data/Problem1Kuramoto.pkl b/irlc/tests/unitgrade_data/Problem1Kuramoto.pkl index cf285336e8f17dae0bab7e7270a857852e1ba420..ef1b528ea3cb8460738583d5cf526ff19f05dc78 100644 GIT binary patch delta 37 tcmX>meoTCVHIqQYMB85GTsek`XSXp0Z`j<*Xu-w#(xIh+fq|h^4*>hF3~m4b delta 37 tcmX>meoTCVHIrz;MB85Gj6)3*&u(K1__4W_(SnQfVbk6Q1_p*wJpdbP4mtn; diff --git a/irlc/tests/unitgrade_data/Problem2BobsPolicy.pkl b/irlc/tests/unitgrade_data/Problem2BobsPolicy.pkl index 7023764ccbc227ca96f484b63afdabaa14f9483e..25f36de2f85c245c47e3f76ccfd13411d7dbb190 100644 GIT binary patch delta 59 zcmeys^nq!DEfaUcM0-OPyMG55Ca#v7I7y7Tr{TfG)h5havpgoNG0IJ1RAxS<x&X*@ N<UHYN#{dMSdH|B76S4pR delta 59 zcmeys^nq!DEt7`AM0-OPd)W&N6IaVkoFvA)DCEGz)h5i_Yfem7W0af3sLXt>)&<CP N<lIsm!T<!NdH`yN6Da@y diff --git a/irlc/tests/unitgrade_data/Problem2DeterministicDP.pkl b/irlc/tests/unitgrade_data/Problem2DeterministicDP.pkl index ad9b4003fc5167a0e32093f6add6c9564bb3abd6..c6a6d86c444884d85398ab5d68b4a8f2d731b17c 100644 GIT binary patch delta 16 VcmZ3;xR7ze3{Gze1`sIK0{|r_1AG7g delta 16 VcmZ3;xR7ze3{I~s1`sIK0{|zk1I+*c diff --git a/irlc/tests/unitgrade_data/Problem2DeterministicInventory.pkl b/irlc/tests/unitgrade_data/Problem2DeterministicInventory.pkl index 7316c88b930645edd82ccc62f437a80b134c2230..d7b664c9873a3f229a3ada6b5c0794429402f080 100644 GIT binary patch delta 21 ZcmZo*Y+#(=$t1jCqPH#w0~nO*0RTCg1XTb4 delta 21 acmZo*Y+#(=$s{&mqPH%G0|N+@>Hz>cBm{T> diff --git a/irlc/tests/unitgrade_data/Problem3InventoryInventoryEnvironment.pkl b/irlc/tests/unitgrade_data/Problem3InventoryInventoryEnvironment.pkl index efa02d1d079347d5441874bc597c4e187d31bc71..ed6643cb8af26e6368d19072746fd41ae4c60ab0 100644 GIT binary patch delta 55 zcmX@ibeL&E0F&T@i9zkMrx&_z`}|knz?8NrK~st|7&F+~rev_RO>wtB+LbWzn+xY@ LNj?T3DAfZ1sR<S+ delta 55 zcmX@ibeL&E025ck#GrQB%f3kh5tV`mrnF57no^v>n8DUIC4;4Hio5-V>FpE0xo{q9 KEn@(JQau1v;S}5e diff --git a/irlc/tests/unitgrade_data/Problem3LQR.pkl b/irlc/tests/unitgrade_data/Problem3LQR.pkl new file mode 100644 index 0000000000000000000000000000000000000000..604d5c20678f95431aae0b2c24d839ff98a641a0 GIT binary patch literal 2025 zcmaJ?dr(wm6ldSdQ&6;$iISucn~ez60Qpu|2jmh0YodnoSXM8?E{}a6TjDIHC~>32 zi-QD`h$9Wy_&|*a??sVtA|J>|sgQu8wxXaGD<JgkeMk&D+&}Jo=bZ0%&iQ`lobNO8 zi@HQM)R&EWVfK-lv_zFs{ZV*SG>+M6mAX&UWvT?N7SF{ozAjm<go_Zcx`INW989QF zYISkp7PAm;Q)+Z@2|Xb;2p{1fT!fd4BV24ws$QLLki;p{G)jqDuhJzaXfz219CL`% zC>3d`TAfC((Bb=VOhE0#F;Qv~y=5Pc*zCe(oJ4##9t|BcPSF{dAW3IPS6V>a%}emS zJ+z&Naf0xOh={Op_)$N^Mu#Wn$$WA{>hgiehRpeSY*ll=Be{6>CO^LvGcmifswHey zBXP!Yjj8sIlaxfm#$(3D01jaYk2wP$bwXV%nV_>K=ivrD$IIP!9dLdGF2>hON=Hou zQW6l9|MU?sEXo<*xXnZa)O&ki{ym_#Ge6_vx?gF}0>-m&I?o*nukD4~+@vwT&v;x* zUIR|C*CQK*|AK{YefVb3S$A^eXw7+Z(LExtl5-(wu%DoE7BQa1(|P{u_JU^Lp?-io zIT63JaR4ACJ4%lw_JB=!M#0kbVM5(yK0Fuc2fn4ZmzUS~P&w;S4l2yWQNE=KmgAF~ zKm{w0iYHZn7p%RN93Y91HRrz#%LJEg2SIjRUg>x4&*|JD-w<VuZ3cB4J6UJ^yoYc( zH@e|y(BLaBA<7z)461V{k@aPg8(Ho&T#ls8lCnHOlr@$Zl(*^Lq6YhSNdFe?jnm^c z6w1QEVwQt|J(D?DJBb4UY*rpU0aIC^3>F?jBY*ff>&NpKKvnWamvvWNrQYu!v0b}m z^p%_%dT>j7%1knYv(&5CLqxK6R{lQCYja0zE6oISOGUK8;6y~9=b3xIm}xJKDmW-O z;rWvA#LCL&lszL@Inq3O-TCk^D0clirOl%auy$5XsV+_q^Snb>Ou$66!u~`=KmV*Z zj;#=rmu{9I>cnAUSx#MG$*@Su%CYuM`>$0r5j^A2Z@uf=0BdJux0TYYT3#0&QN%>F zQn`tU=I%r7Nw=;5rRlC*)@&v?r>f@{Uh5}Vc^xli$!GJ1fu?07qE2xiuy$5{yE^Kt zxzA725p9`>cGK07)CXP(ZYl<)kNrDe%jqUm19^u8MQz~eWrL5T<1Ue<i@k9q{SQFm zsoy*tYb7=uI<+?OnF+LfP`u%m?|njC5ac=#(@sUSblG~g%VfoqyDW2Rmsy`Q9^J>U z&u&P~=88s%__56PZqXBPa>N*!s~QE&4F|Vbn>ZG2RLi;B8*2b5dNi-;cposA#T*Ei z_tDJ2>RX>Y7OkmxxG-ZsPa14?I@c-WO9LwPGUI#BBr|~)w6!`inH$Q>a~fy6ka^Wz zV}qORq*!R*rNXiq^!&oAK(w`*Fz6L+@`68qc|g?kteG#7m;gHT?LYE&A5iDEFua3h zIHZbYSVTQ&nTr2Yj5=UKts+5{pn;DK>LwGncE70Hs(1<Drf3}DpvNuB3sFDqZSk>} z(n>C^bR7&o$vw+wlssCQbLPb-H@Auz<<v=CV7V5=1Gi#Yn?{(H7r^IKNL`I0G#C+6 gD_e9WVn?m)(Qw3pS~;R}%fYJIgRQ<w9ZWCz59|6ax&QzG literal 0 HcmV?d00001 diff --git a/irlc/tests/unitgrade_data/Problem3PID.pkl b/irlc/tests/unitgrade_data/Problem3PID.pkl index 8c6beb7a36898495ec6e53b18524f5710a900457..535051b828a3939a46f439310b29198a5e080a0a 100644 GIT binary patch delta 39 scmX@dbdG6)Ipc$g7WPaU9uq5_7#$|=ab?mqn9R)R#Hl-j0R&3*0Q-juivR!s delta 39 scmX@dbdG6)Iitfw3wtKzj)|2{j2kBIab?mGn9R)R#HlU800O0Y0PwB}^8f$< diff --git a/irlc/tests/unitgrade_data/Problem3StochasticDP.pkl b/irlc/tests/unitgrade_data/Problem3StochasticDP.pkl index 929b45dc8d15fa1f4ae023ee1b060091fb8247af..04713f394a37f31128be4aead3269f8c3c2e4695 100644 GIT binary patch delta 28 icmcb~bdza<J(GgLM8_N^rG$y=7jh=>H821{sU84@90(Nv delta 28 hcmcb~bdza<Jrk$GM8_N^#ej+H7ji}@GJrs-9sqsX2WS8Q diff --git a/irlc/tests/unitgrade_data/Problem4DPAgent.pkl b/irlc/tests/unitgrade_data/Problem4DPAgent.pkl index b98533150232f5c5315c7b14033536777ce90a8f..54dc9c584545f20c53ce6eab91442e358d24233e 100644 GIT binary patch delta 19 Ycmb=doM6So=`hj8lw$$|2$bpp05k3cMF0Q* delta 19 Ycmb=doM6So@nE8jDTf3D2$bpp060JdYybcN diff --git a/irlc/tests/unitgrade_data/Problem4InventoryTrain.pkl b/irlc/tests/unitgrade_data/Problem4InventoryTrain.pkl index 6228dc12a502006cdf951286048d93936bea9dfe..2e0efe223d9500337a95c76732a6fcfc3cbb2872 100644 GIT binary patch delta 48 zcmeyw_=$0XBa_sGiOxOB857^u*qaI-n9?>SXi9MgV+LE>lnj=(Dem^GSKnX&f>J#I D-uMz@ delta 48 zcmeyw_=$0XBa?u@MCTr59wzN}v6})1rnF57no^v>n8DUIC4;4Hio5;B<}VCDP^t$2 Dpa>AF diff --git a/irlc/tests/unitgrade_data/Problem4LQRAgent.pkl b/irlc/tests/unitgrade_data/Problem4LQRAgent.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b7f0a6a6d9def299660158f65d0b85af24d92699 GIT binary patch literal 443 zcmZo*nYw|I0Ss!VX!HmK6y+!7q~@CV1O_>#r{<MR>ES9)EeS1f&PgmTp3*j@hovMl zHx<Zmx93OzYs+Bl5iCh9E{QM5&&f=#jL#`7icbWoWCQ9*Eh+&rfhK!1^oZq^<`z`y z#V6+%rRwFD=9FY678NB{PU+!^FG@|$&nqq|Dork#GI>f5D_G@}9`?Kxh?2=uyct@j zI5Q?qX`d1VG>p-kv2{uYUk__aNo7GQNDEV%#gxtth%9ptqs<gQKR>VkKmaDZ8A_%k zbvkqGV}JKka^<D{Q-EA=#thyJ0g$;FLdd2{p{Xm)V9a1^o07o-^7Eu}2au<+`8f&b l(F_i#XK@>yeb|4#aP32aPDnvg2XcZs%n6-O!NFdt2LMkFsowwq literal 0 HcmV?d00001 diff --git a/irlc/tests/unitgrade_data/Problem4PIDAgent.pkl b/irlc/tests/unitgrade_data/Problem4PIDAgent.pkl index b3daba6609d47b6033fa62fa6963bb89fcae2543..70a85f4bcf6fc78c263690ba8b0491e7799bf59c 100644 GIT binary patch delta 53 zcmX@8a!_T0H512!jkY^kn2&E`nw-Naxmk!coP~MMxf7dnI5Sz83U6$_&YQ@>xp(pt J1|TTa0{|L)69fPN delta 53 zcmX@8a!_T0HIp#IM%$e%%m<zJP0rzz+$_Wz&cb}4m}7GeXC@1iYToASyooHFM~bZ& IfS^<l0MdgG;Q#;t diff --git a/irlc/tests/unitgrade_data/Problem5PacmanHardcoded.pkl b/irlc/tests/unitgrade_data/Problem5PacmanHardcoded.pkl index 04ac143368d1c4eb5280b4166b9da0f4e3eb3701..3968cbf7284d8d716e19ed9972ad53d4d3172bf7 100644 GIT binary patch delta 20 acmb=eo#4d8?J&{BfU|CO0|OA0>Hz>jI|XzA delta 20 acmb=eo#4d8vtXi&0cW?x0tO%`)dK)TM+J`n diff --git a/irlc/tests/unitgrade_data/Problem5_6_Boeing.pkl b/irlc/tests/unitgrade_data/Problem5_6_Boeing.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4650e0a6d3fa65b094ffb89356fae69744d7793a GIT binary patch literal 4219 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 literal 0 HcmV?d00001 diff --git a/irlc/tests/unitgrade_data/Problem6ChessTournament.pkl b/irlc/tests/unitgrade_data/Problem6ChessTournament.pkl index ebeda311cb01e4d60077598cb655e5368f5bcdda..e7da887928def8fb94b9e7e3d034e373928ce32e 100644 GIT binary patch delta 22 dcmX@gc$9I16B8H1M3)NA4`Tcc3=9mVdH_v$1^EB~ delta 22 ccmX@gc$9I16BD<?M3)NA_wI5GKv1d&08j4)`2YX_ diff --git a/irlc/tests/unitgrade_data/Problem7PIDCar.pkl b/irlc/tests/unitgrade_data/Problem7PIDCar.pkl index bfe010445cb8af018fe5e956ef043b34a34dba89..e22d2e24d83e87606e137a33987ca83d3c67a210 100644 GIT binary patch delta 45 ycmZ3?yqI}{C5y&S>5PfCag1*!eiWU!(Vppf!^BU)OphBTyE6uJK4k!dQau2hmk?3_ delta 42 vcmZ3?yqI}{C5!6U%o`JJ;~4KuoD;%yg<;~SV5Un9lieAEIWIDRL8%@9T?7s) diff --git a/irlc/tests/unitgrade_data/Problem7_8_PidLQR.pkl b/irlc/tests/unitgrade_data/Problem7_8_PidLQR.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d455290c459b3de4a4a31f3905f4f131de9a2b78 GIT binary patch literal 415 zcmZ9HKTpFj5XECiOQ3*&0i;fBAcVTo0jWa={uo7VB<9FT46c-<!EuHTl`5nbDtSRY zW|&y{2z&=d7B*&BVE{V;gt);vpWpkP-@v>EWaQO{O}X6ST`#23j$3zIo#3eLfSgOI zI8K@&NmCesG({((s@ZE))^i_2a!t@wxPCWI1&M_lo^h9)(pYGHS@|f}ty+K$xf*9t z(yJ*or?n^xMTc-sdLZXrPICm$d;t@XrCbSeCJqY81h6rLCi36{90fxd4S_AnQXqN> z)t0G~I*c!i*J+7%!M5$gPgVJW4FTS`X?>jE?LWTVK7hJn#1`0+=CYN))apN7#t<uy zfSEe^jrFRdtK_qJa-85m1!UHDNLG>M)F&a~>Qk)xyRo4}4ycvediZ|-yw!erDu$ZB N@x#A57-)W0`vT&)qzwQ7 literal 0 HcmV?d00001 diff --git a/irlc/tests/unitgrade_data/RendevouzItem.pkl b/irlc/tests/unitgrade_data/RendevouzItem.pkl new file mode 100644 index 0000000000000000000000000000000000000000..91c3ae562ba9fce0668664f1fa58979cd070b2a7 GIT binary patch literal 603 zcmZo*nHs>v00y;FG<tZ0Qu9($%koRBJWEn@r}S_Yr<Q~kIOil57f)%M(!)}cnVSk^ zxZCqS0PD$M>`^R9EiQ>Kg6WGd&n(HvFD;4B$;?YFPE9OI&H(9TEy*m&0cq_~hFhTk zQmT;Y6BwkRk(aN4(4aXbgE4~*sFn?AZ)#BqP+RR3Z-ySRywco)O1=2x{GwF7+|rzq z%*3Li#L6i>JV5)C^Ye;Jib|79rc4G}2Ua<yhdnO^qGU2qf9n)y#-u6jQ-Y>wcr$u) zv`)zo>S0YOsVqnZX<<sUn9|t+k!9{-w3*`P=jZhw2*89lL&=n+PG^UdYoc8V=QJJo z_FtLw-<18pLH(^y>d$IAEQ<`+XtHEKP&DEDf=%z6?SDlCMI?$g>^~9)rtS6nz~cL- z0F5bz_%4G56p)wS-35gtFd*fy1SD!GW^e$*L=|iJfrAn)1XbInWbi<OE<-Rw1QY-n zV#wZ?1A6GT^mLChpoh|OA9Kc-u^*_(4&6N+=%MJ^{odDr9<r$K`_#wKV(-Vd{%wJ7 k!~O%zzI}3f4fg8iUMIi(-wgK<$TF~p4!&~&d8kwm0B|Mrw*UYD literal 0 HcmV?d00001 -- GitLab