Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: '1'
version: '1.10.5'
- uses: julia-actions/cache@v2
- name: Install dependencies
run: julia --project=docs/ -e 'using Pkg; Pkg.instantiate()'
Expand Down
286 changes: 143 additions & 143 deletions class01/class01_intro.jl
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ begin
MarkdownLiteral.@markdown(
"""

[^cmu]: Zachary Manchester et al. Optimal Control and Reinforcement Learning at Carnegie Mellon University - [CMU 16-745]("https://optimalcontrol.ri.cmu.edu/")
[^cmu]: Zachary Manchester et al. [Optimal Control and Reinforcement Learning at Carnegie Mellon University - CMU 16-745](https://optimalcontrol.ri.cmu.edu/)

[^OptProx]: Van Hentenryck, P., 2024. Fusing Artificial Intelligence and Optimization with Trustworthy Optimization Proxies. Collections, 57(02).
[^OptProx]: Van Hentenryck, P., 2024. [Fusing Artificial Intelligence and Optimization with Trustworthy Optimization Proxies](https://www.siam.org/publications/siam-news/articles/fusing-artificial-intelligence-and-optimization-with-trustworthy-optimization-proxies/). Collections, 57(02).

[^ArmManip]: Guechi, E.H., Bouzoualegh, S., Zennir, Y. and Blažič, S., 2018. MPC control and LQ optimal control of a two-link robot arm: A comparative study. Machines, 6(3), p.37.
[^ArmManip]: Guechi, E.H., Bouzoualegh, S., Zennir, Y. and Blažič, S., 2018. [MPC control and LQ optimal control of a two-link robot arm: A comparative study](https://www.mdpi.com/2075-1702/6/3/37). Machines, 6(3), p.37.

[^ZachMIT]: Zachary Manchester talk at MIT - [MIT Robotics - Zac Manchester - Composable Optimization for Robotic Motion Planning and Control]("https://www.youtube.com/watch?v=eSleutHuc0w&ab_channel=MITRobotics").
[^ZachMIT]: Zachary Manchester talk at MIT - [MIT Robotics - Zac Manchester - Composable Optimization for Robotic Motion Planning and Control](https://www.youtube.com/watch?v=eSleutHuc0w&ab_channel=MITRobotics).

"""
)
Expand Down Expand Up @@ -210,143 +210,143 @@ md"[^OptProx]"

"""

# ╔═╡ 45275d44-e268-43cb-8156-feecd916a6da
@htl """
<div style="
border:1px solid #ccc;
border-radius:6px;
padding:1rem;
font-size:0.9rem;
max-width:760px;
line-height:1.45;
">

<!-- ─────────────────────── header ─────────────────────── -->
<h2 style="margin-top:0">LearningToOptimize&nbsp;Organization</h2>

<p>
<strong>LearningToOptimize&nbsp;(L2O)</strong> is a collection of open-source tools
focused on the emerging paradigm of <em>amortized optimization</em>—using machine-learning
methods to accelerate traditional constrained-optimization solvers.
<em>L2O is a work-in-progress; existing functionality is considered experimental and may
change.</em>
</p>

<!-- ─────────────────── repositories table ──────────────── -->
<h3>Open-Source&nbsp;Repositories</h3>

<table style="border-collapse:collapse;width:100%">
<tbody>
<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/LearningToOptimize.jl"
target="_blank">LearningToOptimize.jl</a>
</td>
<td style="padding:4px 6px;">
Flagship Julia package that wraps data generation, training loops and evaluation
utilities for fitting surrogate models to parametric optimization problems.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/andrewrosemberg/DecisionRules.jl"
target="_blank">DecisionRules.jl</a>
</td>
<td style="padding:4px 6px;">
Build decision rules for multistage stochastic programs, as proposed in
<a href="https://arxiv.org/pdf/2405.14973" target="_blank"><em>Efficiently
Training Deep-Learning Parametric Policies using Lagrangian Duality</em></a>.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/L2OALM.jl"
target="_blank">L2OALM.jl</a>
</td>
<td style="padding:4px 6px;">
Implementation of the primal-dual learning method <strong>ALM</strong>,
introduced in
<a href="https://ojs.aaai.org/index.php/AAAI/article/view/25520" target="_blank">
<em>Self-Supervised Primal-Dual Learning for Constrained Optimization</em></a>.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/L2ODLL.jl"
target="_blank">L2ODLL.jl</a>
</td>
<td style="padding:4px 6px;">
Implementation of the dual learning method <strong>DLL</strong>,
proposed in
<a href="https://neurips.cc/virtual/2024/poster/94146" target="_blank">
<em>Dual Lagrangian Learning for Conic Optimization</em></a>.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/L2ODC3.jl"
target="_blank">L2ODC3.jl</a>
</td>
<td style="padding:4px 6px;">
Implementation of the primal learning method <strong>DC3</strong>, as described in
<a href="https://openreview.net/forum?id=V1ZHVxJ6dSS" target="_blank">
<em>DC3: A Learning Method for Optimization with Hard Constraints</em></a>.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/BatchNLPKernels.jl"
target="_blank">BatchNLPKernels.jl</a>
</td>
<td style="padding:4px 6px;">
GPU kernels that evaluate objectives, Jacobians and Hessians for
<strong>batches</strong> of
<a href="https://github.com/exanauts/ExaModels.jl" target="_blank">ExaModels</a>,
useful when defining loss functions for large-batch ML predictions.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/BatchConeKernels.jl"
target="_blank">BatchConeKernels.jl</a>
</td>
<td style="padding:4px 6px;">
GPU kernels for batched cone operations (projections, distances, etc.),
enabling advanced architectures such as repair layers.
</td>
</tr>

<tr>
<td style="padding:4px 6px;vertical-align:top;">
<a href="https://github.com/LearningToOptimize/LearningToControlClass"
target="_blank">LearningToControlClass</a>
</td>
<td style="padding:4px 6px;">
Course repository for <em>Special Topics on Optimal Control &amp; Learning</em>
(Fall 2025, Georgia Tech).
</td>
</tr>
</tbody>
</table>

<!-- ─────────────── datasets and weights ──────────────── -->
<h3 style="margin-top:1.25rem;">Open Datasets and Weights</h3>

<p>
The
<a href="https://huggingface.co/LearningToOptimize" target="_blank">
LearningToOptimize&nbsp;🤗 Hugging Face organization</a>
hosts datasets and pre-trained weights that can be used with L2O packages.
</p>

</div>
"""
# # ╔═╡ 45275d44-e268-43cb-8156-feecd916a6da
# @htl """
# <div style="
# border:1px solid #ccc;
# border-radius:6px;
# padding:1rem;
# font-size:0.9rem;
# max-width:760px;
# line-height:1.45;
# ">

# <!-- ─────────────────────── header ─────────────────────── -->
# <h2 style="margin-top:0">LearningToOptimize&nbsp;Organization</h2>

# <p>
# <strong>LearningToOptimize&nbsp;(L2O)</strong> is a collection of open-source tools
# focused on the emerging paradigm of <em>amortized optimization</em>—using machine-learning
# methods to accelerate traditional constrained-optimization solvers.
# <em>L2O is a work-in-progress; existing functionality is considered experimental and may
# change.</em>
# </p>

# <!-- ─────────────────── repositories table ──────────────── -->
# <h3>Open-Source&nbsp;Repositories</h3>

# <table style="border-collapse:collapse;width:100%">
# <tbody>
# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/LearningToOptimize.jl"
# target="_blank">LearningToOptimize.jl</a>
# </td>
# <td style="padding:4px 6px;">
# Flagship Julia package that wraps data generation, training loops and evaluation
# utilities for fitting surrogate models to parametric optimization problems.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/andrewrosemberg/DecisionRules.jl"
# target="_blank">DecisionRules.jl</a>
# </td>
# <td style="padding:4px 6px;">
# Build decision rules for multistage stochastic programs, as proposed in
# <a href="https://arxiv.org/pdf/2405.14973" target="_blank"><em>Efficiently
# Training Deep-Learning Parametric Policies using Lagrangian Duality</em></a>.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/L2OALM.jl"
# target="_blank">L2OALM.jl</a>
# </td>
# <td style="padding:4px 6px;">
# Implementation of the primal-dual learning method <strong>ALM</strong>,
# introduced in
# <a href="https://ojs.aaai.org/index.php/AAAI/article/view/25520" target="_blank">
# <em>Self-Supervised Primal-Dual Learning for Constrained Optimization</em></a>.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/L2ODLL.jl"
# target="_blank">L2ODLL.jl</a>
# </td>
# <td style="padding:4px 6px;">
# Implementation of the dual learning method <strong>DLL</strong>,
# proposed in
# <a href="https://neurips.cc/virtual/2024/poster/94146" target="_blank">
# <em>Dual Lagrangian Learning for Conic Optimization</em></a>.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/L2ODC3.jl"
# target="_blank">L2ODC3.jl</a>
# </td>
# <td style="padding:4px 6px;">
# Implementation of the primal learning method <strong>DC3</strong>, as described in
# <a href="https://openreview.net/forum?id=V1ZHVxJ6dSS" target="_blank">
# <em>DC3: A Learning Method for Optimization with Hard Constraints</em></a>.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/BatchNLPKernels.jl"
# target="_blank">BatchNLPKernels.jl</a>
# </td>
# <td style="padding:4px 6px;">
# GPU kernels that evaluate objectives, Jacobians and Hessians for
# <strong>batches</strong> of
# <a href="https://github.com/exanauts/ExaModels.jl" target="_blank">ExaModels</a>,
# useful when defining loss functions for large-batch ML predictions.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/BatchConeKernels.jl"
# target="_blank">BatchConeKernels.jl</a>
# </td>
# <td style="padding:4px 6px;">
# GPU kernels for batched cone operations (projections, distances, etc.),
# enabling advanced architectures such as repair layers.
# </td>
# </tr>

# <tr>
# <td style="padding:4px 6px;vertical-align:top;">
# <a href="https://github.com/LearningToOptimize/LearningToControlClass"
# target="_blank">LearningToControlClass</a>
# </td>
# <td style="padding:4px 6px;">
# Course repository for <em>Special Topics on Optimal Control &amp; Learning</em>
# (Fall 2025, Georgia Tech).
# </td>
# </tr>
# </tbody>
# </table>

# <!-- ─────────────── datasets and weights ──────────────── -->
# <h3 style="margin-top:1.25rem;">Open Datasets and Weights</h3>

# <p>
# The
# <a href="https://huggingface.co/LearningToOptimize" target="_blank">
# LearningToOptimize&nbsp;🤗 Hugging Face organization</a>
# hosts datasets and pre-trained weights that can be used with L2O packages.
# </p>

# </div>
# """

# ╔═╡ c08f511e-b91d-4d17-a286-96469c31568a
md"## Example: Robotic Arm Manipulation"
Expand Down Expand Up @@ -585,7 +585,7 @@ x \in S^{1} \times \mathbb{R} & \text{Cylinder}
""")

# ╔═╡ 4d598933-05a9-44fa-b5a7-f7e1c7afb094
md"## Control--Afine Systems
md"## Control--Affine Systems

Non--linear Systems of the form:
```math
Expand All @@ -594,7 +594,7 @@ Non--linear Systems of the form:

$\implies$ Non--linear in the state but affine in the input/control.

Control--Afine Systems are common in many mechanical systems.
Control--Affine Systems are common in many mechanical systems.

"

Expand Down