Skip to content
Snippets Groups Projects
Commit 3b6bb209 authored by Filippos Tourlomousis's avatar Filippos Tourlomousis
Browse files

starting page

parents
Branches
No related tags found
No related merge requests found
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="accountSettings">
<option name="activeRegion" value="us-east-1" />
<option name="recentlyUsedRegions">
<list>
<option value="us-east-1" />
</list>
</option>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/control-lecture-mtm2021.iml" filepath="$PROJECT_DIR$/.idea/control-lecture-mtm2021.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
# control-lecture
machine learning control lecture for the machine that make class
Page style modified based on the following:
- https://css-tricks.com/sticky-table-of-contents-with-scrolling-active-states/
MathJax docs here for typing math:
- http://docs.mathjax.org/en/latest/input/tex/html.html
\ No newline at end of file
img/mpc-1.JPG

54.1 KiB

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>Control Lecture Filippos Tourlomousis</title>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
</script>
<script type="text/javascript" src="mystyle.js"></script>
<link href="mystyle.css" rel="stylesheet" type="text/css">
</head>
<body>
<main>
<div>
<h1>Optimal & Data-Driven Control</h1>
<h3>by Filippos Tourlomousis & Eric Strand, CBA</h3>
<h3>for the class <a href="">Machines that Make</a>, taught by Prof. Neil Gershenfeld</h3>
<section id="introduction">
<h2>Introduction</h2>
<p>
Let's get some perspective and think about the world in terms of dynamical systems, whose state can be
mathematically described through systems of ordinary differential equations (ODE's). This has been a
very effective way of modeling real-world phenomena such as the fluid flow over a wing, the population dynamics in
a city or the spread of disease, the stock market climate or teh movement of planets around a solar system.
Treating all these as dynamical systems with data from the real world allows us to build predictive models.
<br>
Often we want to go beyond just describing the system of interest, and we want to actively manipulate
the system of interest by changing its behavior. This could be done by imposing a certain preplanned control
logic aiming to manipulate it or actually using sensors to measure the system and make decisions based
on how the system is resepsonding
</p>
<p>
<ol>
<li>Optimal & Modern Control Theory</li>
https://www.youtube.com/watch?v=Pi7l8mMjYVE&list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m
<li>Data-Driven Control</li>
https://www.youtube.com/watch?v=oulLR06lj_E&list=PLMrJAkhIeNNQkv98vuPjO2X2qJO_UPeWR
<li>Reinforcement Learning</li>
https://www.youtube.com/watch?v=0MNVhXEX9to
<li>Deep Reinforcement Learning</li>
</ol>
</p>
<p>
When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
\[x = {-b \pm \sqrt{b^2-4ac} \over 2a}.\]
</p>
</section>
<section id="optimal-modern-control">
<h2>Optimal Control</h2>
<p>
Optimal & Modern control theory includes how to write down a system description of a control system
with inputs and outputs. This system description encompasses a system of linear differential equations
enabling you to design controllers to manipulate the behavior of that system or design estimators like the
Kalman filter to reconstruct various aspects of that system behavior if you had limited sensors.
</p>
<p>
Thus, the overarching view of control theory can be summarized in the following bullet points:
<ol>
<li>* You have a dynamical system fo interest that we want to make more stable</li>
<li>* Write down the system fo equations</li>
<li>* Design some control policy that changes the system behavior to be more desirable</li>
</ol>
</p>
<section id="optimal-control--types">
<h2>Types of Control </h2>
<p>
open loop: you think about your system - you pre-plan a trajectory and you just enact that control law
Why feedback?
1. Uncertainty (makes the pre-planned trajectory sub-optimal - but if we measure we can adjust the control law
even if I don't have a perfect model of my system)
2.
</p>
</section>
<section id="optimal-control--mpc">
<h2>Model Predictive Control </h2>
<p>
Model Predictive Control (MPC) is a powerful optimization strategy for feedback control. The principle
behind MPC is the following: if you have a model of your system of interest, you run forward in time
set of forecasts of this model for different actuation strategies you optimize over the
control input \(u\) over a short time period and essentially you determine your
immediate next control action based on that optimization. Once you've applied
that immediate next control action, then you re-initialize your optimization over, you move your window
over, you re-optimized to find your next control inputs and this thing essentially keeps marching that
window forward and forward in time.
</p>
<p>
MPC @ APMonitor
https://apmonitor.com/pdc/index.php/Main/ModelPredictiveControl
</p>
</section>
</section>
<section id="reinforcement-learning">
<h2>Reinforcement Learning</h2>
<p></p>
</section>
</div>
<nav class="section-nav">
<ol>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#optimal-control">Optimal Control</a>
<ul>
<li class=""><a href="#optimal-control--types">Types of Control</a></li>
</ul>
<ul>
<li class=""><a href="#optimal-control--linear">Linear Programming</a></li>
</ul>
<ul>
<li class=""><a href="#optimal-control--nonlinear">Nonlinear Programming</a></li>
</ul>
<ul>
<li class=""><a href="#optimal-control--mpc">Model Predictive Control</a></li>
</ul>
</li>
<li><a href="#si">Learning Dynamical Models</a>
<ul>
<li class=""><a href="#si--linear">Linear Sys Identification</a></li>
</ul>
<ul>
<li class=""><a href="#si--bopd">Proper Orthogonal Decomposition</a></li>
</ul>
<ul>
<li class=""><a href="#si--era">Eigensystem Realization</a></li>
</ul>
<ul>
<li class=""><a href="#si--okid">Observer Kalman Filter Identification</a></li>
</ul>
<ul>
<li class=""><a href="#si--dmd">Dynamic Mode Decomposition</a></li>
</ul>
<ul>
<li class=""><a href="#si--mpc">Sparse Identification for Model Predictive Control</a></li>
</ul>
<ul>
<li class=""><a href="#si--koopman">Koopman with Control</a></li>
</ul>
</li>
<li><a href="#si">Learning Control Laws</a>
<ul>
<li class=""><a href="#lcl--evolutionary">Evolutionary Learning</a></li>
</ul>
<ul>
<li class=""><a href="#lcl--rl">Reinforcement Learning</a></li>
</ul>
<ul>
<li class=""><a href="#lcl--drl">Deep Reinforcement Learning</a></li>
</ul>
</li>
<li><a href="#si">Learning Sensors & Actuators</a></li>
</ol>
</nav>
</main>
</body>
</html>
/* 1. Enable smooth scrolling */
html {
scroll-behavior: smooth;
}
/* 2. Make nav sticky */
main > nav {
position: sticky;
top: 2rem;
align-self: start;
}
/* 3. ScrollSpy active styles (see JS tab for activation) */
.section-nav li.active > a {
color: #333;
font-weight: 500;
}
/* Sidebar Navigation */
.section-nav {
padding-left: 0;
border-left: 1px solid #efefef;
}
.section-nav a {
text-decoration: none;
display: block;
padding: .125rem 0;
color: #ccc;
transition: all 50ms ease-in-out; /* 💡 This small transition makes setting of the active state smooth */
}
.section-nav a:hover,
.section-nav a:focus {
color: #666;
}
/** Poor man's reset **/
* {
box-sizing: border-box;
}
html, body {
background: #fff;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
}
ul, ol {
list-style: none;
margin: 0;
padding: 0;
}
li {
margin-left: 1rem;
}
h1 {
font-weight: 300;
}
/** page layout **/
main {
display: grid;
grid-template-columns: 1fr 15em;
max-width: 100em;
width: 90%;
margin: 0 auto;
}
/** enlarge the sections for a long scrollable page **/
section {
padding-bottom: 20rem;
}
\ No newline at end of file
window.addEventListener('DOMContentLoaded', () => {
const observer = new IntersectionObserver(entries => {
entries.forEach(entry => {
const id = entry.target.getAttribute('id');
if (entry.intersectionRatio > 0) {
document.querySelector(`nav li a[href="#${id}"]`).parentElement.classList.add('active');
} else {
document.querySelector(`nav li a[href="#${id}"]`).parentElement.classList.remove('active');
}
});
});
// Track all sections that have an `id` applied
document.querySelectorAll('section[id]').forEach((section) => {
observer.observe(section);
});
});
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment