{ "cells": [ { "cell_type": "markdown", "metadata": { "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-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": { "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html)", "section": "" } }, "source": [ "\n", "< [6.1 Static Operability](https://jckantor.github.io/cbe30338-2021/06.01-Static-Operability.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [6.3 Predictive Control](https://jckantor.github.io/cbe30338-2021/06.03-Predictive-Control.html) >
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 1,
"link": "[6.2 Simulation and Open-Loop Optimal Control](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2-Simulation-and-Open-Loop-Optimal-Control)",
"section": "6.2 Simulation and Open-Loop Optimal Control"
}
},
"source": [
"# 6.2 Simulation and Open-Loop Optimal Control\n",
"\n",
"This notebook demonstrates the use of CVXPY for the simulation and computation of open-loop optimal control. The notebook includes a lab exercise."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[6.2.1 Heater Model](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.1-Heater-Model)",
"section": "6.2.1 Heater Model"
}
},
"source": [
"## 6.2.1 Heater Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.1.1 Model](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.1.1-Model)",
"section": "6.2.1.1 Model"
}
},
"source": [
"### 6.2.1.1 Model\n",
"\n",
"We will use the two-state model for a single heater/sensor assembly for the calculations that follow.\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"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.1.2 Parameter Values](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.1.2-Parameter-Values)",
"section": "6.2.1.2 Parameter Values"
}
},
"source": [
"### 6.2.1.2 Parameter Values"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.1.2 Parameter Values](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.1.2-Parameter-Values)",
"section": "6.2.1.2 Parameter Values"
}
},
"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 rowe"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[6.2.2 The Control Problem](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.2-The-Control-Problem)",
"section": "6.2.2 The Control Problem"
}
},
"source": [
"## 6.2.2 The Control Problem\n",
"\n",
"For the purposes of this notebook, the control problem is to find a control policy $u(t)$ for the interval $0 \\leq t \\leq t_f$ which causes the output $y(t)$ to track a desired setpoint or reference tracjectory $r(t)$."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.2.1 Reference Tractory](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.2.1-Reference-Tractory)",
"section": "6.2.2.1 Reference Tractory"
}
},
"source": [
"### 6.2.2.1 Reference Tractory\n",
"\n",
"The reference trajectory is a sequence of ramp/soak intervals. Python function `r(t)` uses `numpy.interp` to compute values of the reference trajectory at any point in time."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.2.1 Reference Tractory](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.2.1-Reference-Tractory)",
"section": "6.2.2.1 Reference Tractory"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
\n",
"\n",
"**Study Question:** Evaluate how well this control policy performed. Keep in mind that the objective is for $T_S$ to track the reference input (i.e., the setpoint) as closely as possible. Did the controller achieve the desired steady-state? What about the prior ramp and soak periods? \n",
"\n",
"**Study Question:** Edit the cells above to change $u(t)$ in to produce a response closer to the target. Make at least 3 attempts. What changes did you make, and were you able to get a better result.\n",
"\n",
"**Study Question:** What criteria could you use to determine if one control policy was better than another? Give at least three examples of possible criteria.\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[6.2.4 Feedforward Optimal Control](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.4-Feedforward-Optimal-Control)",
"section": "6.2.4 Feedforward Optimal Control"
}
},
"source": [
"## 6.2.4 Feedforward Optimal Control\n",
"\n",
"An optimal control policy minimizes the differences\n",
"\n",
"\\begin{align*}\n",
"\\min_{u} \\int_{t_0}^{t_f} \\|T_H^{SP}(t) - T_H(t)\\|^2\\,dt \\\\\n",
"\\end{align*}\n",
"\n",
"subject to constraints\n",
"\n",
"\\begin{align*}\n",
"C_p^H \\frac{dT_H}{dt} & = U_a (T_{amb} - T_H) + U_c (T_S - T_H) + P u(t) + d(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} \\\\\n",
"T_S(t_0) & = T_{amb}\n",
"\\end{align*}\n",
"\n",
"and prior knowledge of $d(t)$."
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"nbpages": {
"level": 2,
"link": "[6.2.4 Feedforward Optimal Control](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.4-Feedforward-Optimal-Control)",
"section": "6.2.4 Feedforward Optimal Control"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
\n",
"\n",
"**Study Question:** The optimal control computed above requires rapid changes in power level. In process systems where control action requires movement of a valve stem position, there are often limits on how fast the manipulated variable can change. Modify the model to include differential inequalities that limit the time rate of change of control.\n",
"\n",
"\\begin{align*}\n",
"\\frac{du}{dt} & \\leq \\dot{u}_{max} \\\\\n",
"\\frac{du}{dt} & \\geq -\\dot{u}_{max}\n",
"\\end{align*}\n",
"\n",
"where $\\dot{u}_{max}$ is the maximum rate of change. Add these rate constraints to the problem above. Specify that the maximum power cannot change more than 1% per second.\n",
"\n",
"How does that change the response?\n",
"\n",
"**Study Question:** Change the objective so that the goal is to guide the heater (insteady of the sensor) temperature to the reference trajectory. How does the control policy change? Explain what you observe.\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[6.2.5 Lab Assignment 8](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.5-Lab-Assignment-8)",
"section": "6.2.5 Lab Assignment 8"
}
},
"source": [
"## 6.2.5 Lab Assignment 8\n",
"\n",
"The goal of this lab assignment is to extend the calculations shown above to the case of the four-state models with two manipulable inputs and independent setpoint functions for $T_{S,1}$ and $T_{S,2}$."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.5.1 Exercise 1](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.5.1-Exercise-1)",
"section": "6.2.5.1 Exercise 1"
}
},
"source": [
"### 6.2.5.1 Exercise 1\n",
"\n",
"In a new cell, create reference inputs for sensor temperatures $T_{S,1}$ and $T_{S,2}$. The new reference trajectories should \n",
"\n",
"* Set the final time to 800 seconds. \n",
"* Use the same ramp/soak specifications as above for $T_{S,1}$\n",
"* For $T_{S,2}$, delay the ramp by 100 seconds, and set the soak temperature to 45C. The high temperature soak period should remain the same. The slopes of the ramps should remain the same. Plot your results."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.5.2 Exercise 2](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.5.2-Exercise-2)",
"section": "6.2.5.2 Exercise 2"
}
},
"source": [
"### 6.2.5.2 Exercise 2\n",
"\n",
"Set up and solve for the heater control policies minimizing the sum of least squares between the sensor temperatures and reference trajectories. Create functions U1(t) and U2(t) that interpolate the solutions for u1(t) and u2(t) for any value of t. Plot the results."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.5.3 Exercise 3](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.5.3-Exercise-3)",
"section": "6.2.5.3 Exercise 3"
}
},
"source": [
"### 6.2.5.3 Exercise 3\n",
"\n",
"Apply the functions U1(t) and U2(t) to your hardware and compare the measured sensor temperatures to those predicted in Exercise 2. How did you do?"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[6.2.5.3 Exercise 3](https://jckantor.github.io/cbe30338-2021/06.02-Simulation-and-Open-Loop-Optimal-Control.html#6.2.5.3-Exercise-3)",
"section": "6.2.5.3 Exercise 3"
}
},
"source": [
"\n",
"< [6.1 Static Operability](https://jckantor.github.io/cbe30338-2021/06.01-Static-Operability.html) | [Contents](toc.html) | [Tag Index](tag_index.html) | [6.3 Predictive Control](https://jckantor.github.io/cbe30338-2021/06.03-Predictive-Control.html) >"
]
}
],
"metadata": {
"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
}