{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "0LK2EfX4lq-4", "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html)", "section": "" } }, "source": [ "\n", "*This notebook contains material from [cbe30338-2021](https://jckantor.github.io/cbe30338-2021);\n", "content is available [on Github](https://github.com/jckantor/cbe30338-2021.git).*\n" ] }, { "cell_type": "markdown", "metadata": { "id": "eCfL4gSqlq-_", "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html)", "section": "" } }, "source": [ "\n", "< [6.3 Predictive Control](https://jckantor.github.io/cbe30338-2021/06.03-Predictive-Control.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [6.5 Quiz Review for Chapters 5 and 6](https://jckantor.github.io/cbe30338-2021/06.05-Quiz-Review.html) >

\"Open

\"Download\"" ] }, { "cell_type": "markdown", "metadata": { "id": "MchKwOJOlq_A", "nbpages": { "level": 1, "link": "[6.4 Implementing Predictive Control](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4-Implementing-Predictive-Control)", "section": "6.4 Implementing Predictive Control" } }, "source": [ "# 6.4 Implementing Predictive Control\n", "\n", "The goal of this notebook is to demonstrate an implementation of predictive control." ] }, { "cell_type": "markdown", "metadata": { "id": "gsSqgmyilq_B", "nbpages": { "level": 2, "link": "[6.4.1 Model](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.1-Model)", "section": "6.4.1 Model" } }, "source": [ "## 6.4.1 Model\n", "\n", "Once agaiin will use the two-state model for a single heater/sensor assembly to demonstrate the key elements of this notebook.\n", "\n", "\\begin{align}\n", "C^H_p\\frac{dT_{H,1}}{dt} & = U_a(T_{amb} - T_{H,1}) + U_b(T_{S,1} - T_{H,1}) + \\alpha P_1 u_1\\\\\n", "C^S_p\\frac{dT_{S,1}}{dt} & = U_b(T_{H,1} - T_{S,1}) \n", "\\end{align}\n", "\n", "The model is recast into linear state space form as\n", "\n", "\\begin{align}\n", "\\frac{dx}{dt} & = A x + B_u u + B_d d \\\\\n", "y & = C x\n", "\\end{align}\n", "\n", "where\n", "\n", "$$x = \\begin{bmatrix} T_{H,1} \\\\ T_{S,1} \\end{bmatrix}\n", "\\qquad\n", "u = \\begin{bmatrix} u_1 \\end{bmatrix}\n", "\\qquad\n", "d = \\begin{bmatrix} T_{amb} \\end{bmatrix}\n", "\\qquad\n", "y = \\begin{bmatrix} T_{S,1} \\end{bmatrix}$$\n", "\n", "and\n", "\n", "$$A = \\begin{bmatrix} -\\frac{U_a+U_b}{C^H_p} & \\frac{U_b}{C^H_p} \\\\ \\frac{U_b}{C^S_p} & -\\frac{U_b}{C^S_p} \\end{bmatrix}\n", "\\qquad\n", "B_u = \\begin{bmatrix} \\frac{\\alpha P_1}{C^H_p} \\\\ 0 \\end{bmatrix}\n", "\\qquad\n", "B_d = \\begin{bmatrix} \\frac{U_a}{C_p^H} \\\\ 0 \\end{bmatrix}\n", "\\qquad\n", "C = \\begin{bmatrix} 0 & 1 \\end{bmatrix}$$\n", "\n", "The following cell creates values for the model parameters." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "BFMFRXBQmEMy", "nbpages": { "level": 2, "link": "[6.4.1 Model](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.1-Model)", "section": "6.4.1 Model" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import cvxpy as cp\n", "\n", "# parameter estimates.\n", "alpha = 0.00016 # watts / (units P * percent U1)\n", "P1 = 200 # P units\n", "P2 = 100 # P units\n", "Ua = 0.050 # heat transfer coefficient from heater to environment\n", "CpH = 2.2 # heat capacity of the heater (J/deg C)\n", "CpS = 1.9 # heat capacity of the sensor (J/deg C)\n", "Ub = 0.021 # heat transfer coefficient from heater to sensor\n", "\n", "# state space model\n", "A = np.array([[-(Ua + Ub)/CpH, Ub/CpH], [Ub/CpS, -Ub/CpS]])\n", "Bu = np.array([[alpha*P1/CpH], [0]]) # single column\n", "Bd = np.array([[Ua/CpH], [0]]) # single column\n", "C = np.array([[0, 1]]) # single row" ] }, { "cell_type": "markdown", "metadata": { "id": "ztXe8jjMlq_H", "nbpages": { "level": 2, "link": "[6.4.2 Control Objective](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.2-Control-Objective)", "section": "6.4.2 Control Objective" } }, "source": [ "## 6.4.2 Control Objective\n", "\n", "An optimal control policy minimizes the differences\n", "\n", "\\begin{align*}\n", "\\min_{u} \\int_{t_0}^{t_f} \\|T_S(t) - SP(t)\\|^2\\,dt \\\\\n", "\\end{align*}\n", "\n", "where $SP(t)$ is a setpoint, subject to constraints\n", "\n", "\\begin{align*}\n", "C_p^H \\frac{dT_H}{dt} & = U_a (T_{amb}(t) - T_H) + U_c (T_S - T_H) + P u(t)\\\\\n", "C_p^S \\frac{dT_S}{dt} & = - U_c (T_S - T_H) \n", "\\end{align*}\n", "\n", "initial conditions\n", "\n", "\\begin{align*}\n", "T_H(t_0) & = T_{amb}(0) \\\\\n", "T_S(t_0) & = T_{amb}(0)\n", "\\end{align*}\n", "\n", "where $T_{amb}(t)$ is a possibly time-varying disturbance." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "nbpages": { "level": 2, "link": "[6.4.2 Control Objective](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.2-Control-Objective)", "section": "6.4.2 Control Objective" } }, "outputs": [], "source": [ "# estimates of future behavior\n", "Tamb = 20\n", "SP = 45" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[6.4.3 Assumptions Need to Use Optimization for Real-Time Feedback](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.3-Assumptions-Need-to-Use-Optimization-for-Real-Time-Feedback)", "section": "6.4.3 Assumptions Need to Use Optimization for Real-Time Feedback" } }, "source": [ "## 6.4.3 Assumptions Need to Use Optimization for Real-Time Feedback\n", "\n", "Predictive control is a strategy that uses optimization for feedback control. The basic concept is to solve an optimization problem at every time step utilizing all of the information available up to that point in time. **The key assumptions** are:\n", "\n", "1. The current value of the setpoint will be held constant into the future.\n", "2. The current estimate of any disturbances will be constant into the future.\n", "3. The state at the current time is available from a state estimator.\n", "\n", "Assumptions 1 and 2 are obviously very strong statements about the future. But in the absence of additional information, these assumptions are about the best we can expect. \n" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[6.4.4 Bare Bones Event Loop](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.4-Bare-Bones-Event-Loop)", "section": "6.4.4 Bare Bones Event Loop" } }, "source": [ "## 6.4.4 Bare Bones Event Loop\n", "\n", "Borrowing from notebook 4.6, we start the process of implementing predictive control by starting with an implementation of a simpler strategy (relay control) that includes a state observer. With that framework in place, we will show what modifications are need to implement predictive control. \n", "\n", "*Note: This code has been cut and pasted from earlier notebooks, but with some edits for brevity and clarity.*" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.4.1 Relay Control](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.4.1-Relay-Control)", "section": "6.4.4.1 Relay Control" } }, "source": [ "### 6.4.4.1 Relay Control\n", "\n", "The relay controller is an instance of a Python generator that is sent values of the setpoint and process variable, and yields values for a manipulated variable. Each instance of the relay controller is initialized with minimum and maximum values of the manipulated variable. Later we will be replacing the relay control with a predictive control." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "nbpages": { "level": 3, "link": "[6.4.4.1 Relay Control](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.4.1-Relay-Control)", "section": "6.4.4.1 Relay Control" } }, "outputs": [], "source": [ "# Relay Control\n", "def relay(MV_min, MV_max):\n", " MV = MV_min\n", " while True:\n", " # yield manipulated variable. Wait for message from the\n", " # event with updated setpoint and process variable measurement.\n", " SP, PV = yield MV\n", " MV = MV_min if PV >= SP else MV_max" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.4.2 Observer](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.4.2-Observer)", "section": "6.4.4.2 Observer" } }, "source": [ "### 6.4.4.2 Observer\n", "\n", "Given current values of the manipulated input, the sensor measurement, and estimated disturbance sent from the event loop, the observer updates the state estimate " ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "nbpages": { "level": 3, "link": "[6.4.4.2 Observer](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.4.2-Observer)", "section": "6.4.4.2 Observer" } }, "outputs": [], "source": [ "def tclab_observer(L, t_prev=0, x=[Tamb, Tamb], d=[Tamb]):\n", " while True:\n", " # yield current state estimate. Wait for message information\n", " # needed to update the state estimate for the next time step\n", " t, U, T_sensor, Tamb = yield x\n", " \n", " # prediction\n", " x = x + (t - t_prev)*(A@x + Bu@[U] + Bd@[Tamb])\n", " \n", " # correction\n", " x = x - (t - t_prev)*L@(C@x - np.array([T_sensor]))\n", " t_prev = t" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "nbpages": { "level": 3, "link": "[6.4.4.2 Observer](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.4.2-Observer)", "section": "6.4.4.2 Observer" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "

" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TCLab Model disconnected successfully.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from tclab import setup, clock, Historian, Plotter\n", "\n", "t_final = 300\n", "t_step = 2\n", "\n", "# create and initialize a controller instance\n", "controller = relay(0, 100)\n", "U1 = next(controller)\n", "\n", "# create and initialize an observer instance\n", "L = np.array([[0.4], [0.2]])\n", "observer = tclab_observer(L)\n", "Th, Ts = next(observer)\n", "\n", "# execute the event loop\n", "TCLab = setup(connected=False, speedup=10)\n", "with TCLab() as lab:\n", " h = Historian([('SP', lambda: SP), \n", " ('T1', lambda: T1), \n", " ('U1', lambda: U1), \n", " ('Th', lambda: Th), \n", " ('Ts', lambda: Ts),\n", " ('Tamb', lambda: Tamb)])\n", " p = Plotter(h, t_final, layout=[['T1','Ts','Th', 'SP', 'Tamb'], ['U1']])\n", " for t in clock(t_final, t_step):\n", " T1 = lab.T1 \n", " Th, Ts = observer.send([t, U1, T1, Tamb])\n", " U1 = controller.send([SP, Ts])\n", " lab.Q1(U1)\n", " p.update(t)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[6.4.5 Feedforward Optimization](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.5-Feedforward-Optimization)", "section": "6.4.5 Feedforward Optimization" } }, "source": [ "## 6.4.5 Feedforward Optimization\n", "\n", "As a preliminary step, we first create a CVXPY model that that computes a feedforward control policy given values for the setpoint $SP$, disturbance $T_{amb}$, and the current state. This code was cut-and-pasted from a previous notebook, with modifications to use the values `SP` and `Tamb` defined in this notebook." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 441 }, "executionInfo": { "elapsed": 6186, "status": "ok", "timestamp": 1618928059293, "user": { "displayName": "", "photoUrl": "", "userId": "" }, "user_tz": 240 }, "id": "7c6IY7rolxul", "nbpages": { "level": 2, "link": "[6.4.5 Feedforward Optimization](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.5-Feedforward-Optimization)", "section": "6.4.5 Feedforward Optimization" }, "outputId": "501e7233-58ea-4357-d2b7-ac4691463cf5" }, "outputs": [ { "data": { "image/png": "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MaOPNYZZRERERALr29/+dqOzXdxyyy2Ul5fTq1cvrr/+eq6//vo9x/72t79x7bXXJiwG9TCLiIiISIfzy1/+ktWrVzd6bPz48UydOjVhbamHWURERESa5O6N3niXbkcddVSTx774xS82eczdW92WephFREREpFGRSITS0tI2FZlB5O6UlpYSiURa9Tr1MIuIiIhIo4YMGUJJSQmbN29OWZtVVVWtLmhbIxKJMGTIkFa9RgWziIiIiDQqMzOT4cOHp7TN4uJiJk2alNI290dDMkREREREmqGCWURERESkGSqYRURERESaoYJZRERERKQZKphFRERERJqhgllEREREpBlJK5jNbKiZzTKzpWa22MxuiO+/OL4dNbPCZl6/yswWmtkCM5ubrDhFRERERJqTzHmY64Cvu/t8M8sD5pnZS8Ai4ALgnhZcY4q7b0lijCIiIiIizUpawezu64H18ecVZrYUGOzuLwGBXJNcRERERGRfKRnDbGYFwCTgzVa8zIEXzWyemU1LSmAiIiIiIvth7p7cBsxygf8At7n74w32FwPfcPdGxyeb2SB3X2dmA4CXgOvd/eVGzpsGTAPIz8+fPGPGjCR8F02rrKwkNzc3pW1K05SPYFE+gkX5CA7lIliUj2BJVz6mTJkyz90bvb8umWOYMbNM4DHggYbFcku4+7r44yYzewI4EvhEwezu04HpAIWFhV5UVNTesFuluLiYVLcpTVM+gkX5CBblIziUi2BRPoIliPlI5iwZBvwZWOrud7Tytd3jNwpiZt2BU4ndLCgiIiIiklLJHMN8HHAlcFJ8argFZnammZ1vZiXAMcA/zOwFiA3BMLPn4q/NB14xs3eAt4B/uPvzSYxVRERERKRRyZwl4xWgqakwnmjk/HXAmfHnHwKHJSs2EREREZGW0kp/IiIiIiLNUMEsIiIiItIMFcwiIiIiIs1QwSwiIiIi0gwVzCIiIiIizVDBLCIiIiLSDBXMIiIiIiLNUMEsIiIiItKMJgtmMxtpZsc1sv8EMxuR3LBERERERIKhuR7mO4GKRvbvih8TEREREen0miuYC9z93X13uvtcoCBpEYmIiIiIBEhzBXOkmWM5iQ5ERERERCSImiuY55jZF/fdaWafB+YlLyQRERERkeDIaObYjcATZvYZPi6QC4Es4PwkxyUiIiIiEghNFszuvhE41symAOPj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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t_horizon = 300\n", "dt = 2\n", "n = round(t_horizon/dt)\n", "t_grid = np.linspace(0, t_horizon, n+1)\n", "\n", "# add $u$ as a decision variable\n", "u = {t: cp.Variable(1, nonneg=True) for t in t_grid}\n", "x = {t: cp.Variable(2) for t in t_grid}\n", "y = {t: cp.Variable(1) for t in t_grid}\n", "\n", "# least-squares optimization objective\n", "objective = cp.Minimize(sum((SP - y[t])**2 for t in t_grid))\n", "\n", "model = [x[t] == x[t-dt] + dt*(A@x[t-dt] + Bu@u[t-dt] + Bd@[Tamb]) for t in t_grid[1:]]\n", "output = [y[t] == C@x[t] for t in t_grid]\n", "inputs = [u[t] <= 100 for t in t_grid]\n", "IC = [x[0] == np.array([Tamb, Tamb])]\n", "\n", "problem = cp.Problem(objective, model + IC + output + inputs)\n", "problem.solve()\n", "\n", "# display solution\n", "fix, ax = plt.subplots(3, 1, figsize=(10,6), sharex=True)\n", "ax[0].plot(t_grid, [x[t][0].value for t in t_grid], label=\"T_H\")\n", "ax[0].plot(t_grid, [x[t][1].value for t in t_grid], label=\"T_S\")\n", "ax[0].plot(t_grid, [SP for t in t_grid], label=\"SP\")\n", "ax[0].plot(t_grid, [Tamb for t in t_grid], label=\"Tamb\")\n", "ax[0].set_ylabel(\"deg C\")\n", "ax[0].legend()\n", "ax[1].plot(t_grid, [u[t].value for t in t_grid], label=\"u(t)\")\n", "ax[1].set_ylabel(\"% of max power\")\n", "ax[2].plot(t_grid, [Tamb for t in t_grid], label=\"d(t)\")\n", "ax[2].set_ylabel(\"deg C\")\n", "for a in ax:\n", " a.grid(True)\n", " a.legend()\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.5.1 A Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.5.1-A-Predictive-Controller)", "section": "6.4.5.1 A Predictive Controller" } }, "source": [ "### 6.4.5.1 A Predictive Controller\n", "\n", "The next step is to encapsulate the feedforward control computation into a generator that can be run from the event loop each time new information becomes available.\n", "\n", "The `warm_start` option tells CVXPY to use results from the prior soluton to update the current solution. Not every solver offers this feature, but when they do it can often lead to a signficant speedup of the computations." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "nbpages": { "level": 3, "link": "[6.4.5.1 A Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.5.1-A-Predictive-Controller)", "section": "6.4.5.1 A Predictive Controller" } }, "outputs": [], "source": [ "def predictive_control(t_horizon=300, dt=2):\n", " # create time grid\n", " n = round(t_horizon/dt)\n", " t_grid = np.linspace(0, t_horizon, n+1)\n", " \n", " # create decision variables and all parts of the model\n", " # that do not depend on information from the event loop\n", " u = {t: cp.Variable(1, nonneg=True) for t in t_grid}\n", " x = {t: cp.Variable(2) for t in t_grid}\n", " y = {t: cp.Variable(1) for t in t_grid}\n", " output = [y[t] == C@x[t] for t in t_grid]\n", " inputs = [u[t] <= 100 for t in t_grid]\n", "\n", " MV = 0\n", " while True:\n", " # yield MV, then wait for new information to update MV\n", " SP, Th, Ts, Tamb = yield MV\n", " objective = cp.Minimize(sum((y[t]-SP)**2 for t in t_grid))\n", " model = [x[t] == x[t-dt] + dt*(A@x[t-dt] + Bu@u[t-dt] + Bd@[Tamb]) for t in t_grid[1:]]\n", " IC = [x[0] == np.array([Th, Ts])]\n", " problem = cp.Problem(objective, model + IC + output + inputs)\n", " problem.solve(warm_start=True)\n", " MV = u[0].value[0]" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[6.4.6 Testing the Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.6-Testing-the-Predictive-Controller)", "section": "6.4.6 Testing the Predictive Controller" } }, "source": [ "## 6.4.6 Testing the Predictive Controller\n", "\n", "Let's put the predictive controller to work. Note that the speedup factor the simulation has been changed. This is needed to accomodate the far more intensive calculations that are taking place at each time step." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "nbpages": { "level": 2, "link": "[6.4.6 Testing the Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.6-Testing-the-Predictive-Controller)", "section": "6.4.6 Testing the Predictive Controller" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TCLab Model disconnected successfully.\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t_final = 300\n", "t_step = 2\n", "\n", "# create a controller instance\n", "controller = predictive_control(dt=t_step)\n", "U1 = next(controller)\n", "\n", "# create estimator instance\n", "L = np.array([[0.4], [0.2]])\n", "observer = tclab_observer(L)\n", "Th, Ts = next(observer)\n", "\n", "# execute the event loop\n", "TCLab = setup(connected=False, speedup=5)\n", "with TCLab() as lab:\n", " h = Historian([('SP', lambda: SP), \n", " ('T1', lambda: T1), \n", " ('U1', lambda: U1), \n", " ('Th', lambda: Th), \n", " ('Ts', lambda: Ts),\n", " ('Tamb', lambda: Tamb)])\n", " p = Plotter(h, t_final, layout=[['T1','Ts','Th', 'SP', 'Tamb'], ['U1']])\n", " for t in clock(t_final, t_step):\n", " T1 = lab.T1 \n", " Th, Ts = observer.send([t, U1, T1, Tamb])\n", " U1 = controller.send([SP, Th, Ts, Tamb])\n", " lab.Q1(U1)\n", " p.update(t)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[6.4.6 Testing the Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.6-Testing-the-Predictive-Controller)", "section": "6.4.6 Testing the Predictive Controller" } }, "source": [ "
\n", "\n", "**Study Question:** Compare the closed-loop response of the simulation where the control policy is continually updated to the previous feedforward control calculation. List a few ways they are the similar? List a few ways they are different.\n", "\n", "
" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 2, "link": "[6.4.7 Lab Assignment 9](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7-Lab-Assignment-9)", "section": "6.4.7 Lab Assignment 9" } }, "source": [ "## 6.4.7 Lab Assignment 9" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.1 Exercise 1. Improving the Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.1-Exercise-1.-Improving-the-Predictive-Controller)", "section": "6.4.7.1 Exercise 1. Improving the Predictive Controller" } }, "source": [ "### 6.4.7.1 Exercise 1. Improving the Predictive Controller\n", "\n", "While we appear to have a working controller, there are some problems revealed by the simulation that need to be fixed before attempting to to use this on real hardware. The major issues are:\n", "\n", "* The controller is sensitive to minor modeling errors. The control action makes large changes in response to small measurement errors which would not be a good thing for real hardware.\n", "\n", "* There is little guidance on how to choose the time horizon and time step for the predictive control calculations.\n", "\n", "* The predictive control calculations are slow. \n", "\n", "Let's consider the first of these issues. The predictive control given above minimizes the following objective:\n", "\n", "$$\\min \\sum_{k=0}^n (y(t_k) - SP)^2$$\n", "\n", "This objective includes no mention of the control variable $u$ which means the optimizer can call for large changes in $u$ with no penalty. This can be modified.\n", "\n", "$$\\min \\left[ (1-\\alpha)\\sum_{k=0}^n (y(t_k) - SP)^2 + \\alpha \\sum_{k=1}^n (u(t_k) - u(t_{k-1})^2 \\right]$$\n", "\n", "where $0 \\leq \\alpha \\leq 1$ tells us how much weight to put on each objective. When $\\alpha=0$ the only goal is to keep the setpoint error small. When $\\alpha=1$ the only goal is to minimize changes in the manipulable input. Clearly we want to find a compromise between these two competing goals.\n", "\n", "In the cells below, copy and paste the code for the predictive control and the closed-loop simulation for the two state model. Name the new control generator `my_predictive_control`. Make the following modifications:\n", "\n", "1. Implement the modified objective described above. Include `alpha` as a named parameter in the control generator with a default value of 0. Verify that you can reproduce the results given above for $alpha=0$. Then test for values of $alpha$ equal to 0.01, 0.1, and 0.5. Based on your engineering judgemet, which value would you choose for use on your hardware? Why? \n", "2. To speed up the control computations, modify the predictive controller to use larger time steps in the calculation (for this step, don't change the time step in the event loop, just the time step in the controller). Try values of 5 and 10 seconds. What do you observe? Again, using your engineering judgement, choose a value to implement on your hardware.\n", "3. Next, change the value of the time step in the event loop. Start by doubling to 4 seconds. Keep doubling. Pick a time step for the event loop for hardware use that doesn't overly compromise control performance.\n", "\n", "For your assignment, you only need to show the final simulation result of these tuning procedures." ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.1 Exercise 1. Improving the Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.1-Exercise-1.-Improving-the-Predictive-Controller)", "section": "6.4.7.1 Exercise 1. Improving the Predictive Controller" } }, "outputs": [], "source": [ "def my_predictive_control(t_horizon=300, dt=2):\n", " # create time grid\n", " n = round(t_horizon/dt)\n", " t_grid = np.linspace(0, t_horizon, n+1)\n", " \n", " # create decision variables and all parts of the model\n", " # that do not depend on information from the event loop\n", " u = {t: cp.Variable(1, nonneg=True) for t in t_grid}\n", " x = {t: cp.Variable(2) for t in t_grid}\n", " y = {t: cp.Variable(1) for t in t_grid}\n", " output = [y[t] == C@x[t] for t in t_grid]\n", " inputs = [u[t] <= 100 for t in t_grid]\n", "\n", " MV = 0\n", " while True:\n", " # yield MV, then wait for new information to update MV\n", " SP, Th, Ts, Tamb = yield MV\n", " objective = cp.Minimize(sum((y[t]-SP)**2 for t in t_grid))\n", " model = [x[t] == x[t-dt] + dt*(A@x[t-dt] + Bu@u[t-dt] + Bd@[Tamb]) for t in t_grid[1:]]\n", " IC = [x[0] == np.array([Th, Ts])]\n", " problem = cp.Problem(objective, model + IC + output + inputs)\n", " problem.solve(warm_start=True)\n", " MV = u[0].value[0]" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.1 Exercise 1. Improving the Predictive Controller](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.1-Exercise-1.-Improving-the-Predictive-Controller)", "section": "6.4.7.1 Exercise 1. Improving the Predictive Controller" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "TCLab Model disconnected successfully.\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmsAAADwCAYAAABfciNNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAxOAAAMTgF/d4wjAAA4wUlEQVR4nO3deZhcdZn3//dd1Vs6C510EkISIAFl0SgBQRAYMA5DcBsd9YePg45yuaHghoLKMPMwjjI6KIwLKoiyqDis+qg4NjITgrgRhIDIIFuaEJaQpZdsvdSp+/dHVXWqq6u6tlNVp7o/L65cVJ1z6py7vnW66+7vau6OiIiIiERTrNEBiIiIiEhhStZEREREIkzJmoiIiEiEKVkTERERiTAlayIiIiIRpmRNREREJMKUrImIiIhEmJI1ERERkQhTsiYiIiISYVUna2a21MxuM7PdZrbLzH5mZvuHEZyIiIjIdBdGzdr3gTuB/YAlwFrguhDOKyIiIjLtWbVrg5rZ/e5+ZLFtIiIiIlK+MGrWnjCzF2WepB//OYTzioiIiEx7LZW+0MxuAhyYAzxgZnend51AqilURERERKpUcTOomb17sv3ufm1FJxYRERGRMVX3WYua1tZW33fffRsdxrQwPDxMe3t7o8OYNlTe9aOyri+Vd/2orOvrmWeeGXH3qgu84mbQDDNbBJwDHJR9Pnc/vdpzV6Krq4tNmzY14tLTTk9PD6tXr250GNOGyrt+VNb1pfKuH5V1fZnZljDOU3WyBvwE+CNwBxCEcD6RyAqSAf3D/eO2dbV3EY/FGxOQiIhMeWEkazPc/ewQziMSCfkSMoDAA85bex5DwdC47YtnLubLJ39ZCZuIiNREGMna783sZe7+pxDOVVPJZJKp1kevXGY29k9SspOzQgnZZJ7d9Sz9w/10z+iuUYQiIjKdhZGsXQncZWZPA2PfcO7+yhDOHYqRkRE2btzI6Ohoo0OJBDOjq6uLhQsXEotNj+Vhy60tm0xHvINLTr6EHSM7uODuC0KMUkREZKIwkrXvA18A7iOifdY2btzI7Nmz6e7uVo0SMDo6yubNm3nqqadYvnx5o8OpiWpryzIJWdwmNm1m+qjl2yciIhK2MJK1IXf/cgjnqYlkMsno6Cjd3d20tITxdptfPB5nyZIlPPbYYySTyaatXatFbVkmASt30EB2HBpwICIiYQoje7nNzE5z91+GcK7QZfqoqUZtvEx5NFMfvnrUllUquzlUAw5ERCRMYSRrZwH/aGY7gGHAAHf3hSGcW6a5TILWiNqyYrrau1g8czHP7np23HYNOBARkTCFkawdHcI5RIDya89qWVtWTDwW58snf3ks3v7hfg04EBGR0FWdrLn7U2EEMp2sXLkSSI1SffTRR1mxYgUAhx56KN/97nd561vfyh//+EcAtm7d2qgw66La5KzR/cPisXjeGrTMe2p0fCIi0vzCWG7qYOA/gCOAjsz2qDaDBkmnb/dITa8xt7ONeKxwH7n169cD0Nvby9FHHz32HFLrtp1//vl0d3dzyimn1DTOeql2IEB2gtYsyU+mhk3910REpFphNINeBXyb1Nqgrwc+AvSGcN6a6Ns9wplXr6vpNa4+8xjmz6ps3db29nb++q//mt7e3nCDapAgGfCptZ+a0K9rMlGrPStVvj5s6r8mIiLVCiNZ28fdbzCzC939T2b2QeB/gIuLvdDM2oGvAKuBEeB+d3+nmS0ErgMOJjVo4Sx3vzuEWKUOsmvS+of7iyZqzZqc5cruw6b+ayIiEpaKkzUzm+nuu4DMsgA7zOxAYDNwYImn+SKQBA5xdzez/bK2/97dTzOzY4Cbzexgd09UGm/G3M42rj7zmGpPU/Qa000pozYvPvFiutq7Jmxv1uQsn0J92ERERCpVTc3ar4GjgLVmNg/4BnAvqZqwm4u92MxmAmcCSz092Ze7P5fefTqwPL1tnZltBk4E7qwiXgDiMau4iVL2CpIBO4IdbNuzraS+Z4tnLmbZnGVTJikrhybMFRGRalSTrBmAu5+ffn69mf2aVLPoQyW8/mBgG3ChmZ0C7AEuAtYDMXffknVsL3BAFbFKlfKN2nyh7wVu+u+b8h4/VZo2w6AJc0VEpBrVJGvtZnY46aQtS9LMXuLuDxd5fSupQQkPu/tnzOwI4A5gBZA7rX7BoZVmdi5wbuZ5Z2cnPT09445ZsGABg4ODkVtWaXBwEHdnYGBg3PaTTjqJzZs309fXx5IlSzjxxBO58sorQ712Mplkz5493HHHHYWP8SS7krtIkuQH/T9g1Ecn7B8cGBx73mqtvLPrncSIMdNmcv+v7w815maS9CTxnXH6gr5x2wcHBvnxL3/M7Pjsss85NDQ04d6W2lBZ15fKu35U1s3JKl1uyMyGgWfIn0i5ux9U5PXzSfVva3P3IL3tHuB84DZgWaZ2LbPd3e8sFteCBQt8y5a9lXJBEPDoo49yyCGHEI+rNiOjWLmUMopzz+AernrzVao9KyB3oEWmhi277145ZdbT08Pq1atrEarkUFnXl8q7flTW9WVmz7j70mrPU03N2sPufmSlL3b3rWb236RGgv4iPThhOfAX4CbgbOCi9ACDRYBGg9ZYsVGcuU2b96y9h4WdkZxOLxIKDTZQs6iIiJSjmmQtjBXAzwK+Z2ZfAgLgA+7+nJl9Gvi+mT1GakqPd4UxElTGc3e2D20nFouVNIoztxYoZtFqVo4yrSMqIiKVqiZZ+2O1F3f3J4FX59m+GTi12vNLYe5O33AfF9958YS+aNmm8yjOMGkdURERqVTFyZq7vz/MQKQ+3J3AA0aCEYJUV8FxNIqzdrSOqIiIVCKMFQykSbg7m3ZsYiQ5gif3tmJX2uFdwqF1REVEZDJK1qa4TE0aQCKZYCQ5fhH7RZ2L1MzZAFpHVERESqVkrQFWrlwJwMjICI8++igrVqwA4NBDD+WGG24I7TrZNWm5Fs9czFDHEBe/7GIlag2gdURFRKRUoSdrZnYxsBW4Ir12aLQkA9i9vbbX6JwHkyRA69evB6C3t5ejjz567HkYitWkAbTF2miLtxG3uBK1BsrXh01LU4mISK5a1Kw9AxwO/BxYVYPzV2f3dvjh22p7jTNuhlkLynrJli1bOOOMM3juuecwM17xildw9dVXl3WOyWrSlsxaQkss9XHHLU4ymSzr3FIfmoNNRERyhZ6sufvlYZ9zOvjBD37AsmXLuP322wHYvr302r9MbdpkNWnt8XbMCq7aJQ2kOdhERGQyFSdrZrYU+A/gEFJzrn3S3WvcvhiCznmpmq9aX6NMxx13HJdddhmf/OQnOfnkk0teDqRQbVpuTZoSteiabA627GbRHcEOtu3ZBqiJVERkOqmmZu0KUktDfRf4/4B/B94XRlA1FYuX3URZD6961atYv349d9xxB7fccgsXXngh999/f951O4v1S1NNWvMpZWmqwYFBbvrvmwA1kYqITCfVJGsHuPvrAczsdmBdOCFNTxs2bGDJkiWcfvrpnHbaaSxcuJCdO3eyzz77jDuulH5pqklrboWaRbM9u+tZegd7NT+eiMg0UE2yNrZGkbsHSg6qc+edd3LppZcSj8cJgoBLLrlkLFErdYSnatOmhtxm0Yw1a9Zw5PFHjtW2aTCCiMj0UE2yttzMbiz03N1Pr+Lc08KyZcvYunUrAGeeeSZnnnnmhGPKGeGpRG3qyNcsOjs+m2VzlhUcjJBd01YrqsETEam/apK1j+c8v62Kc0kOjfCUfCYbjFCPiXVVgyciUn/VLOR+bZiByF4a4SmTya51K6V/W5iya/BUyyYiUh/VTN3xauBxd9+Ufv5J4F3AE8A57v5cGAFOFxrhKZUo1L8tbPlq8FTLNlGQDCK1CkVuPND4mHIFySDS09JE7TMtJmrxRvEejGJMxVTTDHopcAqAmf0VcAHwYeBI4GukpvOQEmiEp1Sj0LQfYSq28Hy+X361iiPzC7Xaa4b9yzlIBnxq7afGlVFHvINLTr6EuBW/Tj3iKRZTvb+wMjE+0vfI2LQ0jSyzQvFV+pnmikK82YlxreMr9R6sR7lkflcEHnDe2vMYCoYmjSlbFBK5apK1lqxJcN8EXO3uN6QHGTxQfWjTR+CB+qVJpBVaeL5/uL/gL79ayPxCBaq+Ztg1g/3D/RO+lIaCIT7yPx+JTDzFYqpHbWn2F2fUyixXtfHlikK82fM11jq+Uu/BWpZLoYSxWEzZotCKUE2ylr245CtJ1bTh7m5mXlVU00T2IIIM9UuTqMpXg1ePQQ3ZqvmizBVG/7vcxCPjc8d/jov/cHFZyWRYc+dlYsqO5+ITL2Z22+yiCW6t5++b7IuzkWWWG2NYn2muqMfbqHuwln1hCyWM5fzhF4V5LatJ1p4ys48ATwMrgTUAZjYDaK0+tKmtUNNnS6xlLFkTiaJCgxqqaR4qppKmi0LC6n83WeIxf8Z8vrf6eyU10xYa0RtmTF3tXXTP6C4YU5gxTKbQF+fc+Fxe1PWihpRZtrA+0yjHu2bNGlatWlWz+Mq5B2vZF7ZQwpgv4Wr0z0UpqskKzga+CewPfMDdB9Lb/xr4ebWBVSyZJLFtb3t8kEziQYAnErhHo8LvyFe8Agd2D+1iwxO9HHL4iwE4+MUH84kPf5zzP/1p1v3hDzWNwYMADwIS27fjsVhF54jt2DGurKW2olTeX1zxWQZHBsdtm9M2h/ieWv3yinPl0ZdUfM0gkWCw7wUAZnqS/ffM5IWhrWP7t/U9wfr7b2dOyxwARp5/mi2P/GnvdeYuJN4y/tdl31AfA89vZGbOtfbt3JdZOwN8dz/7UFgmpnzx5Itpdtss4hYrGE+hmDLxJHan7p3smKqJoZhMjEEyGPvcBoYHmLkj1ZJwwbEXsE97Kpr7fnsf3tc/Ib5cYcZbi880X6yQ/57LjbdY2YYV7z67U/+yY6znPRgkEiTL+Fks9zOEVKJ20W8vYvPuzanrZI7f5eyTGseH7+4nkfWaTDlV+7kViqlaFpUEJiz7dnT471//hrHn3trKrg9/iBftt5iYGYEHDIzuqGkM+7TOLvCXvuNZjx5/qpdXv+10Nq27B8MwYO0f/sBnv/hFfvvjn9Q0xqQ7jz/3LDO/+S1sdLT4C/IYGBxknzlzQo5M8nF3Bgb6mDVrVqNDaT4Oo1ufxPBxGwMgMHghz+/VFncWJQyw9NFG6/yDcCCZGbXtAc/vSX0ZLJqxLy3pn/mYxSnae2FCTKl4mDQmWJQAsLF4MHCfPKaC8VQZQzGO0TJ/Oc/teZ7RZGLC/qWdi8dqJnbu3Fn83g453nxlWNVnOmmsxeMtVrZh3YNjZd2Ie7Cin8XSPsNsQTJg0+7xNXutsRb2m7Hf5J9jCJ9b7ud0+M9/8Yy7L53kqiWZdu1tA6M7+NjD/1rTa3z1Jf/EvLaunK3OSHI0b+2ejaVqKYlEwEf/7z/zu/vuI5FIcNW/X8IrXvaymsYs9eCQDLKfESSThQ/POnB065N0kCSxR30YKzGx1Iw4EHenxSGRc0DCYMRS+wHiOImtj/N8y8RjAdi+EU9fJcizu3hMqXgoMaZUPE8AXjSmyeKpLoaJZxh/Nmdk6xOM5OkU0+Lg2zaQSL++Ay/p3g4zXitWhhV8poVjLR7vxHsuX7zV34PZZd2Ie7D6n8W9Z9n7GUJuUuXp7GZhAuIOcYYJdj1BMdV/bqmYApznQuwQNuWSteTMmex/5RVjz4Nkkic2b6b1gP2Jx+O0Ds3GnmiraQytB+xPW8e8cdsSyQTbdmwat21gdyseM9oOPHBsIEHrU708/PhjXHX19/j20Ufz7Suu4F++9U1++YtfhBpjEATEh4dY8vWvEa+wGfTxNWtYkdP3QfbKrk43TzLz9k9CYm+fq2f69pTcNN9CG0EyaPjw8WaWsHa63/EtYvHxZTjXk+wY2QnAYGKQrz78LXbt2sXMmTPBnUTfU8xPOO/sb+Gq7ok1RN0BfGh7C/ESapuqiQkYF8+Htrewy+Cq+dXFVHYMaQs75vOpFR+b0ESVDAK2/OgshhhmZwyumZeK7/3bW5iV/ttkpjMutnLu7WrjtaSz7UcfosWHU8eaTyjDaj7TUmLNjjdfrIXizRdrufHmlnUj7sFKP0NIlcu5h59N/3+eM/YZBjjfmpdgW55b6BNbW5jh5X2OFX1uOeUyZHDN/ATcVdalC5pyyRqxGC3de0esWRBgW7diLS1YPM7czm6+ecrEGyBMXe1dWCw+bqLbAAjiqRsmM+IzMQAxixFr3Zt+WzzOoYceyjHHHQfA8SeeyFcuuwwLuQ3czLB4nJZ584jnuSFLkZw9e1xZSypB69/2PMkgwZarz6A1uTc568s9uJ1xNarFjCY7mP/+G4jFp96PbT10dS8q2JdkUfr/QTKge/B2tjz7CC37zEhtnHsYzyQS7Dzs/Qw98h0ALnj5J9mnNdXLZU5boW4P4cY01mE7Hc/uN38SA4Ye/EpVMVUUA/A0u9i136wJ69G6B1xy/CHsHN45bvvSt3yOuQXWrv3Nb37DCSecULd4F3zm/+E79xC3OLHhfob++M/A3jKs5jMtNdZMvPliLRRvbGTHhFihvM87t6wbcQ9W+hlCqlz2LB3/GfYN9/NMulzGnWvGQg5Y+dmyP8uKP7e85fJQWdcuZNr91q/HBKIw+US3mRGfhUZ9dnR0jD2Ox+MkEhP/apHGCJJO3+6szzQZYHu2px+OT9Dy1YAPWzuXzP40QbpivaMlzsVvXUG8hA4x99z3IC9fvKzatyCTyMwn9+Nf/phVq1aNjQZraW3liieuoSX9h9WyxYfV5fdIdkzZc9y1tLby7//7NYC6xFRonr3Jpm5pyfojdPHMxSxfenjB2rP2mV1071t1t56y4s2MJLb2GQ35XPPFCoVHIHbEO7jg2AuqjrWSsm7EPVhKueT7DAuN+AxbofjylUsYQk/WzOxaYAD4srtvDPv8zWKyiW5rMbWB1F6QdM75wTp2pJs24wSct+NLtKer4mFigjYa62DBmT8cqw3zGfP4StYvj7mdbcRjpdWuxWJ/ru4NSEnisTiz47PpntGdd5qSxTMXT6hNqkdMheKpV0zFYsiVPa1KI+alKhZvmHP2VauU9X6HgiH++bcTa4/qpRH3YLFyyfcZZqYIqYd6rtNci5q1HwMvAr7CNFxyShPdTj2Zps2BXXs4e+PHxyVn+WQnaMWq0yXa8q292silZwqtBVvPmEpdjzYKS/TAxHgLzdnXiCQ8n1LibWSsjboHs68bxc+wULncyI2hnD/0bxF3/0m5rzGz/wtcBLzM3R8ys4XAdcDBwDBwlrvfHWactVDuRLfLli1j69bx87e8+tWv5t577x17vmLFCnp7e2sSr6RkkrF8cps229Pb95/XubdGrHUGO95wJZ5Z504J2pRSr64TpYpCPFGIoRy58eabBDUqySUUj7fRsTbq88++bhQ/w1qWSyjfKGZ2LKnEaux87n5dia89CjgOyG4y/SLwe3c/zcyOAW42s4PdPdKdt/I1farZM9qCRIIHLnszs4eeK3jMhF4HrTNofecNxOPpPZ3zmBeRX/IiUlyzJ5sy/cqk6mTNzL4FrAbWs3d6FydVM1bste3A5cDfk16uKu10YDmAu68zs83AicCd1cYbtuwRn/maPtXsGU2Z2rSd2zdPmqhlqGlTREQapeoVDMzsMVLNl2WvbmtmXwI2uvvlZtYLvAF4Dnja3TuzjrsR+Hm+2jozOxc4N/O8s7Nzya233jrumAULFrB8+XJiFc4nNpltwTYSeSr85rfMJ050a1uSySQbNmxgy5YtFZ9jaGho3MjVKEsmA0b3pFau8GTA8j9/lTbG9z17+MXn0NIxO+/rW2fMJtbg2rNmKu9mp7KuL5V3/ais6+u0006LzAoGz1WYqL0KOAb4TJ7duRlkwaopd78UuDTzfMGCBb569eqx/UEQ8OijjzJnzpyK5xMrJJFMsHVw64SkrC3WxtzZcyNdoxYEATNmzOCUU06puFx6enrILusoye6Hlm/OM2JA1ue2o2M/3nT6eyJdYxbl8p5qVNb1pfKuH5V1c6r4m8nMXpd++Nt0zdd/AmPfhu5ebMr9k4HDgA3ppGYp0AO8L33+Be6eqfY5kPF92hqmWLMnaMRno0w2IW2+2W6ymzYPUtOmiIhEVDXfTuflPM+e7MSBSZM1d/8iqYEEAGSaQdOjQW8CzgYuSg8wWAQ0fDRoKRPdSv1MVntWLDkDjdoUEZHmUM031b+4+51hBZLj08D30/3hRoB3RWEkaJgT3d5666184QtfIAgChoeHWbx4Mb/61a94zWtew8aNG5kzZw5DQ0O87W1v4/Of/3xYb6GpFWvaLDYhrZIzERFpRtV8c10KHBVWIO6+LOvxZuDUsM497jpBQNDfX95r0k2fQTLAd6Veu9/M/cbmc4lbnGD79rHj411d2CT9wJ5//nnOOuss1q1bx4EHHgjAfffdN9Z0+rWvfY03vOEN9Pf3c+SRR3Lsscfyxje+sayYp4pqmjaVnImIyFRQzTdZU3bKCvr7efoDHyzrNSPBCJ4z5mFzvK3gItz7X3nFpAucP/fcc7S0tNCddcxRR03Me7u6ujjmmGP4y1/+Mm2SNTVtioiIjFfNt9p8M/twoZ3u/s0qzh0Znv4vm6X/q9QRRxzBq171Kg444ABOPvlkjj/+eP7+7/+eJUuWjDtu06ZN3H333XzoQx+q+FpRp6ZNERGRyVXzLddJauqNfKqbvK2G4l1d7H/lFSUfn0gm2LRjE7C36bPYaM94V9ek54zFYtxyyy088sgjrF27lv/6r//iC1/4wtgyUx/96Ee58MILaW1t5Z/+6Z9YtWpVyfE2AzVtioiIlK6ab72N7n5maJHUicXjkzZRwvjpOUgmsNadALTPWRjqiM/DDjuMww47jA9+8IOcdtpp/PSnPwX29lmbKtS0KSIiUjl9A+aYbHqOsDzzzDP09vZywgknANDX18eGDRs4+OCDa3bNRsm39qaaNkVEREpXzTfit0OLIkLCnJ6jkEQiwec+9zk2bNhAZ2cniUSCd7/73bzpTW/isssuC+Ua9RYknb7d6XJLBtie1OjYQmtvqmlTRESkNBV/Q7p76R2/mlStViU48MAD6enpybvvzjvvDOUa9RQknXN+sI4dfS8QJ+C8HV+i3YcnHNf2tiuZNW9fQLVnIiIipdK3JYWXkNKqBIUFiQTDu/rZtnkTA7v2cPbGj+dN0DJ2dOzHES8+QgmaiIhImab9N2c9+qhNBfkGCRyS2MX2P6eahtvTx+0/r5N4zKB1BjvecCWebjrW2psiIiKVmfbfnvXoo9asik2xEeS+oHUGre+8gXi8FTrnMS82vctPREQkDKEna2Z2B7Ab+KK7/zbs89dSrfqoNYtyp9gYoZ393nuDRnGKiIjUUC2+WT8LHAicDkQ2Wcv0U5vOfdTcne0vPEssZhWtHnDPfQ/y8sXL6hewiIjINBR6ZuLu64B1wM1hnzss07mfmrsTJEYJgoDE4Gb6fvJeLEiVQ7mrB8Rif65T1CIiItNX1cmamX0OuBQYAH4OHAt80N1vqfbctZKvn9pU7aPm7iSSnnnC8JYnafFRkkkHn7gqmCaoFRERiZYwvoXf5O7/bGZ/AySAE4AfAZFN1rJl+qnVs4/aypUrARgZGeHRRx9lxYoVABx66KHccMMNVZ37Pe95D0cffTTnnHMO7s7GbbsJglEA4gTs66Pjjh+NdbDwPT9SciYiIhJRYXwrJ9P/Pxm4yd3/EuWO+cmks2fHCMM7U2MZRy1J0pLsfRvV65jVSixWuAzWr18PQG9vL0cfffTY87AEQYLE6AhBMsnCkY0YE2vQ4t0HEutP8uJP/JK29vY8ZxEREZEoqDhZM7OvuPsngV1m9hng/wAnmFkMaAsrwLAN7RzlF5c/xEi6n9af4v0Y4SaXbzjnCDrnlFcEiUSC17/+9Wzbto09e/awcuVKvvOd79DZ2ck111zD9ddfz7x581i/fj2LFy/m61//Oueffz6PPfYYRx11FNddew1mRrBngAfuuZu/uek/efb5F3jlUS/nG1+6iNkzO8auZS1tJFs7iMdbVIsmIiIScbEqXrsq/f8zgUXA+e6+GTgI+GG1gU038Xic66+/nnvvvZeHHnqIOXPm8M1vfnNs/7p16/jyl7/MI488QmdnJ+94xzu47tpreGD9/fz5wfu5/dbvE2x9AtxZd/+fuOnqr3Pfmv9HX/8A3/juD7B5BxHrPphY98HY3OUQ4dpPERER2avqahV3fwz4eNbzx4F/q/a8tdIxq5XXnb2Cp3dsAmD/2UuJW7i1Sx2z8o2rnJy7c9lll3HbbbeRSCQYGBjgpJNOGtt3/PGvYtG+CxkdGWbFi/dn6YI5zBzZAiPwssMPZcNTm8bO9da/fS37HPhyzIwzP/BhrrjyO/xjS2QrO0VERGQS1WQph5rZPYV2uvsrqzh3zcRixozZbbR7auTnjNltkZhb7frrr2ft2rXcddddzJ49m69+9avctXYtoyPDjA48TxsJElseB6AlFqMjq59ZPB5jNEgSn38w1jGHllnzaW1L7Y+3tE67yX1FRESmkmqylGeB88IKZLrbvn078+bOZUZHO9u3beXqq65g+QFLCbY+gXm+wQ+WSs7MsI45tM5ZSGtbO7FYjJtvvplPfOITdHR0cPXVV3PKKafU/f2IiIhIOKpJ1na4+9rQIpmGPD3P2ejIMKevfhU/uelHvOylh7N40b6ccOwrePa5zXsPtr3JWaxzHnF2j9WexWKxcbVnJ510Em9+85t5+umnOe644/jIRz5S1/clIiIi4akmWVPbWpkyqwdkHi/qGGbTg3cRbH2Crtkz+cUN3x1/vMWIdy/nzHPO430fv2AsIfvcv/7ruOOuueaavI9FRESk+VWTrL0utCimqNzkLLFtw7gmzdxs1y1GS/fysaRM/c1ERESk4mTN3Z8LM5BmlZ2Q5W4vlpzB+ARNyZmIiIjkavwwyBrLJD+eZx3MShSrLRt37Xyvj0jtWaY8lByKiIhE25RP1mKxGK2trWzbto3u7u7ULP/JAE8vbh4EAanVpoKx1zgQ5Evu3Els652QnE2WBqaSs2Vjk9C2xFvGJUjJZHjLXJVqdHSUzZs309HRQSxWzbzIIiIiUmuhJ2tmdjSwyd2fL3JcB/CfwEuA3cDzwFnu3mtmC4HrgIOB4fT2u0u5fhAE/Pl/Hxy3zZPOrt27eH7z8xiQ9CSDozsB2N22i/hQ/7iMK0gmJ03A8rwbYjPnka8uLRYH+jeUdbZaMzNmdc5mwdx92T04UvF5EsNU9Xopj8q7flTW9aXyrh+VdXOysJoHx05odgfwcuAn7v6BSY7rAF4D/Je7u5mdA/ytu59qZt8DNrr7RWZ2DHAzcLC7J4pdf5/Z8/wz7780775YfOIqoAsTVnbG6uTWlrU2z/JNDgVabcs2ODjAnDn7hHMyKUrlXT8q6/pSedePyrq+3v6Pr3zG3ZdWe57Qa9bc/ZT0Yu5HFDluCPhF1qbfs3fZqtOB5enj1pnZZuBE4M5qYksG4xPTFodYIlWpliTG5viisRq1mBlLumbk7XiWm5yFlfyIiIiI5KpJnzV3TwL3l/myjwI/M7NuIObuW7L29QIH5HuRmZ0LnJt5PnNmJ/sfXdoFZ1gHsfRa9iMtszjQ9vZbm9kKZjvLewfTTMvQMO0dQfEDJRQq7/pRWdeXyrt+VNbNKfRmUAAzu9bd313G8RcAbwT+GphBqgl0Ztb+m4Cfuft1xc61YMEC37JlS7HDJAQ9PT2sXr260WFMGyrv+lFZ15fKu35U1vVlZqE0g9ZqKOCqUg80s08BbwFe6+673X1bevuCrMMOBDaGG6KIiIhI9FXcDGpmLxTaBXSVeI5zgXcAp7h7f9aum4CzgcwAg0VASaNB+/v7Wbq06iRWSjA8PEx7e3ujw5g2VN71o7KuL5V3/ais625JGCepuBnUzLaQarYcyN0F/Mbdl6SP+xrwt6Rqx17m7g+ltx8BrAdGgQDYBGx392PNbBnwO6CbVP//f3X3z5cSl5pB60fV6fWl8q4flXV9qbzrR2VdX2YWuHvV4wOqOcEfgW53fzB3h5llz7F2M/DvTKwZ+xjwLznTc5yQ3vcPQI+7v8fMlgO/M7PL3b2vWFBJd7buHK7g7Ui5BkemZ1nP7WwjHmuSqVqkakHS6dtd+rxUtb4/ohZPPsVibPTPUDOUYbaoxRuFeKIQQ65yYypHNcnaW0nVik3g7q/IenwX5F3WaLLpOd4OvCe9b4OZ3QW8CbimWFA7R+HMq9eV9UakMgODAdf1Tr+yXtI1g8vPOEoJ2zQQJJ2zf3gfz/TvKfk1tbw/ohZPPqXE2MifoWYow2xRizcK8UQhhjBiKkc1ydpV7v6OSl5YwvQcBwBPFdiXe65xU3e0zJrLwGBuy6zUgid9Wpb1wOAAt97Ww5y2+v7iHhoaoqenp67XnK4yZT044jy8sbxpDmp5f0QtnnxKiTE3pnre281QhtnCjrfaso5C+UUhhjJiCmUOsGqStcOqvHZuZ7ncEvRJ9u09yP1SYGzJgu758/3Wj51SZWhSijVr1rBqVckDf5te364Rzr3xAQBWrTqG+bPq20lXfU3qJ1PWW3cOj9UeX3r6Ecyd2VbwNfW4P6IWT7kxFoqpnvd2M5RhtrDjrbaso1B+UYih1JgWXNj4ZK3iCdrcfZuZYWYLsmrXsqfn2AgsA7L3/YISxMwa8gM1Hc1pU1nL9DF3Zluk7veoxZNP1GOMeny5ohZvFOKJQgy5ahFTNfOsvczMXsjzb8sk03pky0zPQZ7pObL3LQdOBn5aRawiIiIiTamamrVHgdcVO8jMLic1OGARcIeZ7XT3FwGfBr5vZo8BI8C7shZqvwT4npk9DiSBs919exWxioiIiDSlapK1YXd/qthB7n426VqynO2bgVMLvGYXqRGhIiIiItNaNc2gmrdAREREpMYqTtbc/cgwAxERERGRiWq1kLuIiIiIhEDJmoiIiEiEKVkTERERiTAlayIiIiIRpmRNREREJMKUrImIiIhEmJI1ERERkQhTsiYiIiISYUrWRERERCJMyZqIiIhIhFWzkLuIiEhF+naNjD1OujcwEpHoU7ImIiJ1d+6ND4w9bhlJcuqpTjxmDYxIJLrUDCoiInUxt7ONJV0zJmzfNuT07R7J8woRAdWsiYhIncRjxuVnHDWWmPXtGhlXwyYi+SlZExGRuonHjPmz2hsdhkhTUTOoiIiISIQpWRMRERGJMCVrIiIiIhGmZE1EREQkwpSsiYiIiESYkjURERGRCFOyJiIiIhJhmmdNRESqEiR93ES3IhIuJWsiIlKxIOmc/cP7eKZ/T6NDEZmy1AwqIiIV69s9kjdRW9I1g7mdbQ2ISGTqUc2aSARlNytlJN0bFI1IaS49/QjmzkwlaHM724jHrMERiUwNStZEIqZQs1LLSJJTT3V9AUpkzZ3ZpnU/RWpAyZpIxBRqVto2lKptK+fLMF8NXTlUOyIi0nhK1kQi7NLTjwDg3BsfKPu1YXT8XtI1g8vPOEoJm4hIA1WVrJlZt7tvCysYERkv0/+nHJnatL5d+WvoyvFM/56ya/NERCRc1das3Q8cEEYgIlK9QrVp2R2/S9G3a6Si2jwREQlf0WTNzF43ye6Oai5uZr3AUPofwL+5+w1mthC4DjgYGAbOcve7q7mWyFSVOyFpbqK2pGsGBy2YpaZMEZEmVUrN2s+AtUC+3/SzQ4jhbe7+UM62LwK/d/fTzOwY4GYzO9jdEyFcT2TKmKxfWqY2rRaDBPINXNBgBBGR2iglWXsMeK+7b8jdYWZPhx8SAKcDywHcfZ2ZbQZOBO6s0fVEmtJkE5LWqjatUIKowQgiEmXZS6E12x+XpSRr1wLzgQnJGnB5CDH80MxiwB+AzwJJIObuW7KO6aVA3zgzOxc4N/O8s7OTnp6eEMKSYoaGhqZVWQ+OOAODAQBr1qxhTlttftBzrwMwMBjgSZ9w3exjzzw8zqzW1PZZrTu541e3hxZD7jUf3hhMeM3A4AC33tZTs3JJurNzdPy2Wa0Qs/Cvl7m3y/nM63F/RC2eaq+TeW2+e7tWoliGkwk73mp/b0eh/CqN4b1X3TW2vbvD+MBLY6H9/qj1vVI0WXP3f5tk3xervP5J7r7RzFqBz5NKDN8F5E7VXvBdu/ulwKWZ5wsWLPDVq1dXGZaUoqenh+lU1lt3DnNd7zoAVq06pmYjJHOvA3Bd7zoGBgdYtWrVuOtmH/vGU8OLabL3mr0vd2qRla8sbyBDKTJLFuWrzZvRGufrf39kSX8hl/OXdObeLuczr8f9EbV4qr1O5rX57m2oTXN7LcswN94wam/Cjrfa39tRuAfLOW+QdP67f+LvjgRwzImNiakSpQwweEnOJgdeCGPKDnffmP7/qJn9B/Cou28zM8xsQVbt2oHAxmqvJyLhyk3MajGCdEZrnH9500vzNvfuGQ1437X3lnSeRjfTqp9feZqhuT37Mw2Szkeuv589o3trnaMUK6RiHBxxtu4cHts21e/BeMy4/Iyjxg3CasaR7qU0g96WZ9t8M/sL8HZ3f6KSC5vZTKDV3fvTm95BaioQgJuAs4GL0gMMFgEaDSoSQXM721jSNaPqOd0K2TMacP7ND449v/T0I5gzo3XCF2MxjZwzrhkSj6gp1B8zKnP/lTLpdFRihb3xPrwxGKsBgulxD8ZjVrT2Lewa0bCV0gy6PN92M/sH4GvA6yu89r7ALWYWJ9XM+STwD+l9nwa+b2aPASPAuzQSVCSacv9yDUuhmorMwIkffeC4kq4Zhb+ko554REXuNDQZ1azkUSuFPtNMTXD2HxhRoHswv3xJdxQT2IonxXX368zs41W8/kngyAL7NgOnVnpuEamvYn+5Vio3Icv+i7dW16y1KCYeUTBZTVXY/SDDlj3p9NzOttD/cAmb7sG98iWxUUxgq13BIB5KFCIieTRrQgaFa4kamXhEud/cZNPQRD0Bmjuzranu06gnv41y4esP5/O3/W+jw8irlAEGnXk2zwc+BCgtFxHJUUp/pnprpn5zuTVVUYpNpq59OlsbHUJBpdSs7SQ1AjTz0+LAFqAH+HhtwhIRaV5RrCVqpj5LzVZTJVJrpQwwiNUjEBEpTaHmNYmmKNYSqc9S+TI/a1H5DItptnhlctX2WROROopi85pMLoq1ROqzVL5MYptpNo66ZotXJqdaM5EmUqx5TUTCk5lDMNsz/Xt4csvOSNZqN1u8UjrVrIk0qSg2r4lMJdlzCGbP1xfV5uNmi1dKp5o1kSaVaV6bP6tdiZpIjWSmjzlowawJtVYQvVrtYvF2d1ik4pXSqGZNRESkiEIrdUS1VrtQvOvuXhPJeGVyStZERERK0GyTNOeLN2ZK1DKaqR+fkjURERGZdpqpL5/6rImIiMi0kG/ELESv72Eu1ayJiIRsYPdoo0MYpxmae6JWZjI1Tdb3MMrrzypZExEJWdQWg26G5p5allmzrfrRbPGWIvt9NHpQRrP1PQQlayIiocg0r2RPWtzIppV88WTHVE0tQljJRCbGgcGBCfGFpdlW/Wi2eEuV/QdDZlUFjUotnZI1EZEQ5GteaWQNQq2mmggzmcjEeOttPaxadUwo8eVqtlU/mi3eyRT6g+GZ/j307R5putqtRlKyJiISkqg1r9QinrCTiXjMmNNWn3JrtlU/mi3eXLl/MGSvqiDlUbImIiIVabZkIrPqR7NotnjzidofMM1KyZqIiFRkKiQTIs1A86yJiIiIRJiSNREREZEIU7ImIiIiEmFK1kREREQiTMmaiIiISIRpNKiIiIhEXmbljKmyBFc5lKyJiIhIpE3VZbhKpWZQERERibR8K2c04xJclVLNmkgEhLUwtojIVJdZOaMZVs0Ii5I1kQab7tX7IiLlmI4rZ6gZVKTBylkYe2D3aL3CEhGRiFDNmkiEFFsY+/O3/W8jwhIRkQZSsiYSIfmq9+d2trGkawYDgwNj26ZTx1oRkekussmamb0YuBaYD/QD73H3hxsalEgDxGPG5Wccxa239bBq1TFA/lo3ERGZmqLcZ+0K4Ep3PwT4d+C7DY5HpGHiMWNOmzF/VjvzZ7U3JFELks7WncMarSoiUmeRrFkzs4XAUcCp6U23AN8ws2Xu3tuwwETSwkxYop789O0aIUg6H7n+fvaMBo0OpyqllvXgSP0S03KuUat4ohBDOZop3nKv34h4G1GeUS+XqMUXyWQN2B941t0TAO7uZrYROADobWRgIgDn3vhAo0Oom0LvtRn7zZX6uQ0MBlzXu67G0aRE4V6KQgzlaKZ4myHWRsQY9XKJWnxRTdYAPOd53nYfMzsXODfzvLOzk56enlrGJWlDQ0PTqqyT7rSMJNk2lHtrhqO7w1h39xpilr+Js57lXei9tsXg/S+NEzOY1bqTO351e13iqUYln5snfdyAjmKfTT1iyhZGPFGIIaOUeztK8RYTxu+KWsWbKetGlGeUywWiHZ+51+aLpxrpZtDHgG53T5iZAc8BxxVrBl2wYIFv2bKlDlFKT08Pq1evbnQYdZW90kDYig0aqHd553uvzTqwodzPbc2aNaxatWrseS3edzX3UljxRCEGKP3ejkq8paj2d0Wt4s0u60aUZ1TLJSPs+MzsGXdfWm1ckaxZc/cXzOx+4J3ANcBbgV71V5NGi8ds2sycPZXea7nvJTOYo5aiUL5RiKEczRRvM8TaiBijXi5RjS+SyVraB4FrzOwCYBB4d4PjEREREam7SDaDVsPMEsDzjY5jmpgF7Gx0ENOIyrt+VNb1pfKuH5V1fS1y96orxqJcs1ap58NoH5bizGyTyrp+VN71o7KuL5V3/ais68vMNoVxnihPiisiIiIy7SlZExEREYmwqZisXdroAKYRlXV9qbzrR2VdXyrv+lFZ11co5T3lBhiIiIiITCVTsWZNREREZMpQsiYiIiISYVMmWTOzF5vZb83sUTO7x8xe0uiYphIz6zWzR8xsffrf29PbF5rZL83sMTN7yMxObHSszcbMvpYuXzezFVnbC5atmXWa2Y/M7PH0Pf+WxkTffCYp7zvN7Mmse/wTWftU3hUwsw4z+0m6zNan7+dl6X26v0NUpKx1b9eAmd1uZg+my/TXZrYyvT38e9vdp8Q/4H+A96Qfvw34XaNjmkr/gF5gRZ7t3wMuSj8+BngKaGl0vM30DzgJWJpbxpOVLfDPwDXpx8tJTQQ9t9HvpRn+TVLedwJvKPAalXdlZd0BvI69/aPPAW5PP9b9Xb+y1r1dmzLvynr8ZuC+9OPQ7+0pUbOWXvj9KOAH6U23AMszf1VITZ0OXA7g7uuAzYBq18rg7ne5e76JEycr27dn7dsA3AW8qfbRNr9JynsyKu8KuPuQu//C099MwO+Bg9KPdX+HqEhZT0ZlXSF37896ug+QTD8O/d6eEskasD/wrLsnANI360bggIZGNfX80Mz+ZGZXmdkCM+sGYu6+JeuYXlTuVSuhbA8g9ddavn1SuUvS9/gNZpb9RafyDsdHgZ/p/q6LjwI/y3que7sGzOw6M3sa+Dzw7lrd21MlWQPInYPEGhLF1HWSux9BqgZzG3BtervKvXaKla1Psk/K9y53Pxx4OfBr4Oc5+1XeVTCzC4AXA/+Y3qT7u0bylLXu7Rpx939w9/2BC4FLMptzDqv63p4qydrTwFIzawEwMyNV27axoVFNIe6+Mf3/UeA/gL9y920AZrYg69ADUblXrYSy3QgsK7BPKuDuT6f/7+7+DeCg9F/JoPKuipl9CngL8Fp33637u3Zyyxp0b9eDu18LrMo8D/venhLJmru/ANwPvDO96a1Ar7v3NiyoKcTMZppZV9amd5Aqb4CbgLPTxx0DLALurmuAU9dkZZu9bzlwMvDTBsQ4JZhZi5ntm/X8rcDmTFKByrtiZnYuqd8Zf5PTx0f3d8jylbXu7dowszlmtjjr+d+RanXaTg3u7SmzgoGZHQpcA3QDg8C73f3PDQ1qikj3b7gFiJOqsn0S+Ji796Z/CXyf1KiWEeDD7r62YcE2ITO7nFQH00XAVmCnu79osrI1s5mkRhy9glSn1gvc/eZGxN9s8pU3cASwFmgnVZ5bgXPd/YH0a1TeFTCzpaRaPp4EdqQ3D7v7sbq/w1WorIHXoHs7dGa2P6nvxRmkym0L8Cl3X1+Le3vKJGsiIiIiU9GUaAYVERERmaqUrImIiIhEmJI1ERERkQhTsiYiIiISYUrWRERERCJMyZqIiIhIhLU0OgARmT7MbH36YRtwCPBQ+vlf0v/+7O431DiG24DPufsfcrafBXyY1FIw7cAf3f2MWsZSjJktA+519/mNjENEGkvJmojUjbuvhHFJyMp6Xt/MZgGHA/fkbD8a+BTwSnffnl6y7sh6xiYiUoiaQUUkEszsGjM7J/34IjP7kZn93MweN7MbzexIM/sfM3vSzC7Net2i9P57zOxBM/vcJJd5LfBLnzgb+P7AAKnVTzJrKN6XdY1j0te+18zuSy/Zk9n3ejNbZ2YPmNl6Mzs2vf209LEPmtlaM3tJevur08d9M/2aP6eTxcz5zk6/518D78vavsDMbjezP6XPeXX5pSwizUg1ayISVUen/+0E7gO+SCrZagE2mNm33f1R4FrgC+5+l5m1AD83s79z9x/nOeffkVqWLlcP8EngaTNbS2odvx+6e196XdwrgNe7+3NmNh/4o5n9BpgDfBc4yd0fNbNWoNPMFgI/AFa5+5/M7AzgRmBF+novBd7n7h9ON79+AVhtZi8H/hE40t03m9k3s2J8J6k1j08FMLN55RWniDQr1ayJSFT1uPuAuwfAg8Cv3H3Y3XeR6t92UHqdvdcAX0v3h7sXeBFwWO7J0onU8cCa3H3uvhv4K+B1wG+BtwAPphOi44GDgP9KX+MOUmvkHgr8DfCLdNKIu4+6+wBwLLDe3f+U3v5DYKmZ7Ze+5F/c/d70498BB6cfvxq4zd03p59fmRXm74HTzOwrZva3wK4SylBEpgDVrIlIVA1lPQ7yPG8h9QenA8e4+2iR870G+E2h49JNo/cD95vZ14GHSSVPw8CD7n5S7mvMbEXutsyudFwTLpP+f773knldXu7+OzNbCZwCvBX4vJkdmU5mRWQKU82aiDQtd98B/Br4TGabmS02s6V5Dn8zkK9pFDM7LN0EmbE/sAB4klRN24vN7DVZx680szZSzaevNbND0ttbzWwfUrVlK83s8PT2/wNscvfni7ylNcDr0s2oAO/NuuZyYKe73wh8hNRo2llFziciU4Bq1kSk2Z0BXGpmf0o/3wmcBWzKHJAe3bkaOK/AOTqBy8xsEbCHVA3XZ9x9ffr1bwQuMbPLgFZgI/Bmd3/czN4L/CjdzBoAH3T3e8zsXcAPzSwO9AOnF3sj7v6gmV0M/NbMngduy9r9auBcMwuAOHBeuslVRKY4mzgoSkRkajGz44AL3f0NjY5FRKRcStZEREREIkx91kREREQiTMmaiIiISIQpWRMRERGJMCVrIiIiIhGmZE1EREQkwpSsiYiIiESYkjURERGRCPv/AQxx4vAYMLN6AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t_final = 300\n", "t_step = 2\n", "\n", "# create a controller instance\n", "controller = predictive_control(dt=t_step)\n", "U1 = next(controller)\n", "\n", "# create estimator instance\n", "L = np.array([[0.4], [0.2]])\n", "observer = tclab_observer(L)\n", "Th, Ts = next(observer)\n", "\n", "# execute the event loop\n", "TCLab = setup(connected=False, speedup=5)\n", "with TCLab() as lab:\n", " h = Historian([('SP', lambda: SP), \n", " ('T1', lambda: T1), \n", " ('U1', lambda: U1), \n", " ('Th', lambda: Th), \n", " ('Ts', lambda: Ts),\n", " ('Tamb', lambda: Tamb)])\n", " p = Plotter(h, t_final, layout=[['T1','Ts','Th', 'SP', 'Tamb'], ['U1']])\n", " for t in clock(t_final, t_step):\n", " T1 = lab.T1 \n", " Th, Ts = observer.send([t, U1, T1, Tamb])\n", " U1 = controller.send([SP, Th, Ts, Tamb])\n", " lab.Q1(U1)\n", " p.update(t)" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.2 Exercise 2. Predictive control of the four state model.](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.2-Exercise-2.-Predictive-control-of-the-four-state-model.)", "section": "6.4.7.2 Exercise 2. Predictive control of the four state model." } }, "source": [ "### 6.4.7.2 Exercise 2. Predictive control of the four state model.\n", "\n", "Using the results of the first exercise, now modify the your code to accomodate the complete four state model of the TCLab hardware. \n", "\n", "1. Targeting setpoints of 45 and 35 degrees for the sensor temperatures, test your results in simulation.\n", "2. Modify the code to control the heater temperatures to those same setpoints. Do you need to modify your controller tuning?\n", "\n", "For this exercise, you only need to show the final simulation result." ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.3 Exercise 3. Putting it all together.](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.3-Exercise-3.-Putting-it-all-together.)", "section": "6.4.7.3 Exercise 3. Putting it all together." } }, "source": [ "### 6.4.7.3 Exercise 3. Putting it all together.\n", "\n", "For the final exercise, apply the results of Exercise 2 to your actual device hardware. Run the experiment for at least 600 seconds. How did you do?" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.4 Exercise 4. Do something nice for yourself.](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.4-Exercise-4.-Do-something-nice-for-yourself.)", "section": "6.4.7.4 Exercise 4. Do something nice for yourself." } }, "source": [ "### 6.4.7.4 Exercise 4. Do something nice for yourself.\n", "\n", "Congratulations on your newly minted expertise! If you got this far, then you have successfully implemented multivariable model predictive control on real hardware. That's an outstanding accomplishment for any engineer, and gives you the conceptual and practical framework to understand many of the contemporary applications of advanced process control.\n", "\n", "If you want validation, just Google \"Model predictive control of\" and add a topic of interest to you. " ] }, { "cell_type": "code", "execution_count": null, "metadata": { "nbpages": { "level": 3, "link": "[6.4.7.4 Exercise 4. Do something nice for yourself.](https://jckantor.github.io/cbe30338-2021/06.04-Implementing-Predictive-Control.html#6.4.7.4-Exercise-4.-Do-something-nice-for-yourself.)", "section": "6.4.7.4 Exercise 4. Do something nice for yourself." } }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [6.3 Predictive Control](https://jckantor.github.io/cbe30338-2021/06.03-Predictive-Control.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [6.5 Quiz Review for Chapters 5 and 6](https://jckantor.github.io/cbe30338-2021/06.05-Quiz-Review.html) >

\"Open

\"Download\"" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "Predictive-Control.ipynb", "provenance": [ { "file_id": "https://github.com/jckantor/cbe30338-2021/blob/master/docs/06.02-Simulation-and-Open-Loop-Optimal-Control.ipynb", "timestamp": 1618928532300 } ] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }