├── .gitignore ├── 1_20_recitation.pdf ├── 1_27_recitation.pdf ├── 2_02_recitation.pdf ├── 2_10_recitation.pdf ├── 2_17_recitation ├── Convex.jl_tutorial.ipynb ├── Manifest.toml └── Project.toml ├── 2_24_recitation ├── 2_24_recitation.pdf ├── Manifest.toml ├── Project.toml ├── quadrotor_mpc.ipynb └── utils │ ├── quadrotor.jl │ └── quadrotor.obj ├── 3_17_recitation ├── 3_17_recitation.pdf └── rk4_jacobians.ipynb ├── 3_24_recitation.pdf ├── 3_2_recitation.pdf ├── 3_31_recitation ├── 3_31_recitation.pdf ├── CBF_demo.ipynb ├── Manifest.toml ├── Project.toml └── double_integrator_collision_avoidance.ipynb ├── README.md └── meshcat_tutorial ├── Manifest.toml ├── MeshCat_guide.ipynb └── Project.toml /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | **/.DS_Store 3 | .ipynb_checkpoints 4 | */.ipynb_checkpoints/* 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /1_20_recitation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Optimal-Control-16-745/recitations-2023/d864eba9a3e35686644c3258346c35685b315e5f/1_20_recitation.pdf -------------------------------------------------------------------------------- /1_27_recitation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Optimal-Control-16-745/recitations-2023/d864eba9a3e35686644c3258346c35685b315e5f/1_27_recitation.pdf -------------------------------------------------------------------------------- /2_02_recitation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Optimal-Control-16-745/recitations-2023/d864eba9a3e35686644c3258346c35685b315e5f/2_02_recitation.pdf -------------------------------------------------------------------------------- /2_10_recitation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Optimal-Control-16-745/recitations-2023/d864eba9a3e35686644c3258346c35685b315e5f/2_10_recitation.pdf -------------------------------------------------------------------------------- /2_17_recitation/Convex.jl_tutorial.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 38, 6 | "id": "c0d29247", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stderr", 11 | "output_type": "stream", 12 | "text": [ 13 | "\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m environment at `~/devel/hw_ideas/hw2/Project.toml`\n" 14 | ] 15 | }, 16 | { 17 | "data": { 18 | "text/plain": [ 19 | "MersenneTwister(1)" 20 | ] 21 | }, 22 | "execution_count": 38, 23 | "metadata": {}, 24 | "output_type": "execute_result" 25 | } 26 | ], 27 | "source": [ 28 | "import Pkg\n", 29 | "Pkg.activate(@__DIR__)\n", 30 | "Pkg.instantiate()\n", 31 | "using LinearAlgebra, Plots\n", 32 | "import ForwardDiff as FD\n", 33 | "using Test\n", 34 | "import Convex as cvx \n", 35 | "import ECOS\n", 36 | "using Random\n", 37 | "Random.seed!(1)" 38 | ] 39 | }, 40 | { 41 | "cell_type": "markdown", 42 | "id": "4a25e2dc", 43 | "metadata": {}, 44 | "source": [ 45 | "# Convex.jl tutorial\n", 46 | "\n", 47 | "This is convex modeling tool in Julia that let's us write out problems in a simple way, and then Convex.jl transforms them and sends them off to be solved (we're using [ECOS](https://github.com/embotech/ecos) as our solver today). If you want examples/inspiration for this technology, there are a few like this:\n", 48 | "\n", 49 | "- Python: [CVXPY](https://www.cvxpy.org/) or [CVXOPT](http://cvxopt.org/) (cvxpy is probably what you want)\n", 50 | "- Matlab: [CVX](http://cvxr.com/cvx/) or [YALMIP](https://yalmip.github.io/) (I like CVX better)\n", 51 | "- R: [CVXR](https://cvxr.rbind.io/)\n", 52 | "\n", 53 | "For Convex.jl the [repo is here](https://github.com/jump-dev/Convex.jl), and the [docs are here](https://jump.dev/Convex.jl/stable/)\n", 54 | "\n", 55 | "These tools are just used for formulating your problem and verifying that it is Convex. The problem itself is solved by one of many available solvers, many common ones are:\n", 56 | "\n", 57 | "- OSQP\n", 58 | "- ECOS \n", 59 | "- CPLEX \n", 60 | "- Mosek \n", 61 | "- Gurobi\n", 62 | "- COSMO \n", 63 | "- SeDuMi \n", 64 | "- SDPT3 \n", 65 | "- GLPK \n", 66 | "- Hypatia " 67 | ] 68 | }, 69 | { 70 | "cell_type": "markdown", 71 | "id": "84eefc5a", 72 | "metadata": {}, 73 | "source": [ 74 | "## Least Squares \n", 75 | "For overdetermined systems (more equations than variables, \"skinny\" matrix A)\n", 76 | "$$ \\begin{align} \\min_{x} \\quad & \\|Ax - b\\|^2_2\n", 77 | " \\end{align}$$" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 39, 83 | "id": "e9213570", 84 | "metadata": {}, 85 | "outputs": [ 86 | { 87 | "name": "stdout", 88 | "output_type": "stream", 89 | "text": [ 90 | "\u001b[0m\u001b[1mTest Summary: | \u001b[22m\u001b[32m\u001b[1mPass \u001b[22m\u001b[39m\u001b[36m\u001b[1mTotal\u001b[22m\u001b[39m\n", 91 | "overdetermined | \u001b[32m 1 \u001b[39m\u001b[36m 1\u001b[39m\n", 92 | "\n", 93 | "ECOS 2.0.8 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n", 94 | "\n", 95 | "It pcost dcost gap pres dres k/t mu step sigma IR | BT\n", 96 | " 0 +0.000e+00 -1.322e+00 +7e+00 5e-01 6e-02 1e+00 2e+00 --- --- 1 1 - | - - \n", 97 | " 1 -8.414e-02 -2.498e-01 +1e+00 9e-02 9e-03 2e-01 4e-01 0.7930 2e-02 1 1 1 | 0 0\n", 98 | " 2 +6.991e-01 +1.012e+00 +1e+00 9e-01 4e-02 3e+00 3e-01 0.5543 6e-01 2 2 2 | 0 0\n", 99 | " 3 +2.161e+00 +2.412e+00 +2e-01 1e-01 6e-03 6e-01 5e-02 0.8494 1e-02 2 1 1 | 0 0\n", 100 | " 4 +6.859e-01 +1.938e+00 +1e-01 3e-01 9e-03 2e+00 4e-02 0.4696 5e-01 2 2 2 | 0 0\n", 101 | " 5 +2.934e+00 +2.803e+00 +1e-01 6e-02 3e-03 4e-02 3e-02 0.5767 6e-01 2 2 2 | 0 0\n", 102 | " 6 +4.186e+00 +4.179e+00 +1e-02 1e-02 5e-04 2e-02 3e-03 0.8948 4e-03 2 2 2 | 0 0\n", 103 | " 7 +4.628e+00 +4.647e+00 +2e-03 4e-03 1e-04 3e-02 7e-04 0.8782 8e-02 2 2 2 | 0 0\n", 104 | " 8 +4.709e+00 +4.713e+00 +5e-04 7e-04 3e-05 5e-03 1e-04 0.8152 2e-02 2 1 2 | 0 0\n", 105 | " 9 +4.744e+00 +4.744e+00 +2e-05 2e-05 1e-06 1e-04 5e-06 0.9723 1e-02 2 2 2 | 0 0\n", 106 | "10 +4.745e+00 +4.745e+00 +1e-06 1e-06 5e-08 7e-06 3e-07 0.9503 3e-04 3 1 1 | 0 0\n", 107 | "11 +4.745e+00 +4.745e+00 +3e-08 4e-08 2e-09 5e-07 9e-09 0.9829 2e-02 2 1 1 | 0 0\n", 108 | "12 +4.745e+00 +4.745e+00 +4e-10 6e-10 2e-11 8e-09 1e-10 0.9858 1e-04 2 1 1 | 0 0\n", 109 | "\n", 110 | "OPTIMAL (within feastol=6.2e-10, reltol=9.1e-11, abstol=4.3e-10).\n", 111 | "Runtime: 0.000489 seconds.\n", 112 | "\n" 113 | ] 114 | }, 115 | { 116 | "data": { 117 | "text/plain": [ 118 | "Test.DefaultTestSet(\"overdetermined\", Any[], 1, false, false)" 119 | ] 120 | }, 121 | "execution_count": 39, 122 | "metadata": {}, 123 | "output_type": "execute_result" 124 | } 125 | ], 126 | "source": [ 127 | "@testset \"overdetermined\" begin \n", 128 | " # overdetermined\n", 129 | " A = randn(10,5)\n", 130 | " b = randn(10)\n", 131 | " x = cvx.Variable(5)\n", 132 | " \n", 133 | " prob = cvx.minimize(cvx.sumsquares(A*x - b)) # sumsquares(y) = dot(y,y) = norm(y)^2\n", 134 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = false)\n", 135 | " \n", 136 | " xcvx = x.value::Matrix # This will always be a matrix\n", 137 | " xcvx = vec(x.value) # convert to vector easily \n", 138 | " \n", 139 | " # compare with pseudoinverse\n", 140 | " @test norm(xcvx - (A'*A\\(A'*b))) < 1e-4\n", 141 | "\n", 142 | "end" 143 | ] 144 | }, 145 | { 146 | "cell_type": "markdown", 147 | "id": "4523e464", 148 | "metadata": {}, 149 | "source": [ 150 | "For underdetermined systems (more variables than equations, \"fat\" matrix A)\n", 151 | "$$ \\begin{align} \\min_{x} \\quad & \\|x\\|^2_2 \\\\ \n", 152 | " \\text{st} \\quad & A x = b \n", 153 | " \\end{align}$$" 154 | ] 155 | }, 156 | { 157 | "cell_type": "code", 158 | "execution_count": 40, 159 | "id": "76000841", 160 | "metadata": {}, 161 | "outputs": [ 162 | { 163 | "name": "stdout", 164 | "output_type": "stream", 165 | "text": [ 166 | "\u001b[0m\u001b[1mTest Summary: | \u001b[22m\u001b[32m\u001b[1mPass \u001b[22m\u001b[39m\u001b[36m\u001b[1mTotal\u001b[22m\u001b[39m\n", 167 | "underdetermined | \u001b[32m 1 \u001b[39m\u001b[36m 1\u001b[39m\n", 168 | "\n", 169 | "ECOS 2.0.8 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n", 170 | "\n", 171 | "It pcost dcost gap pres dres k/t mu step sigma IR | BT\n", 172 | " 0 +0.000e+00 -1.322e+00 +7e+00 3e-01 7e-02 1e+00 2e+00 --- --- 1 1 - | - - \n", 173 | " 1 -6.948e-02 -2.844e-01 +2e+00 8e-02 1e-02 3e-01 5e-01 0.7428 2e-02 1 1 1 | 0 0\n", 174 | " 2 +8.012e-01 +9.778e-01 +1e+00 5e-01 3e-02 2e+00 4e-01 0.7082 5e-01 2 2 2 | 0 0\n", 175 | " 3 +1.660e+00 +2.051e+00 +1e-01 6e-02 3e-03 5e-01 4e-02 0.9860 9e-02 2 1 1 | 0 0\n", 176 | " 4 +2.893e+00 +3.067e+00 +2e-02 1e-02 7e-04 2e-01 7e-03 0.8954 9e-02 2 2 2 | 0 0\n", 177 | " 5 +3.168e+00 +3.279e+00 +1e-02 1e-02 4e-04 1e-01 3e-03 0.6701 3e-01 2 2 2 | 0 0\n", 178 | " 6 +3.468e+00 +3.471e+00 +4e-04 3e-04 2e-05 4e-03 1e-04 0.9676 5e-03 3 1 2 | 0 0\n", 179 | " 7 +3.481e+00 +3.481e+00 +3e-05 2e-05 1e-06 2e-04 9e-06 0.9890 6e-02 2 1 2 | 0 0\n", 180 | " 8 +3.482e+00 +3.482e+00 +8e-07 6e-07 3e-08 7e-06 3e-07 0.9731 1e-04 2 1 1 | 0 0\n", 181 | " 9 +3.482e+00 +3.482e+00 +6e-08 5e-08 2e-09 5e-07 2e-08 0.9331 5e-03 3 1 1 | 0 0\n", 182 | "10 +3.482e+00 +3.482e+00 +7e-10 6e-10 2e-11 7e-09 2e-10 0.9890 2e-03 2 1 1 | 0 0\n", 183 | "\n", 184 | "OPTIMAL (within feastol=6.0e-10, reltol=2.1e-10, abstol=7.2e-10).\n", 185 | "Runtime: 0.000404 seconds.\n", 186 | "\n" 187 | ] 188 | }, 189 | { 190 | "data": { 191 | "text/plain": [ 192 | "Test.DefaultTestSet(\"underdetermined\", Any[], 1, false, false)" 193 | ] 194 | }, 195 | "execution_count": 40, 196 | "metadata": {}, 197 | "output_type": "execute_result" 198 | } 199 | ], 200 | "source": [ 201 | "@testset \"underdetermined\" begin \n", 202 | " \n", 203 | " # overdetermined\n", 204 | " A = randn(5,10)\n", 205 | " b = randn(5)\n", 206 | " x = cvx.Variable(10)\n", 207 | " prob = cvx.minimize(cvx.sumsquares(x))\n", 208 | " \n", 209 | " # add constraint \n", 210 | " prob.constraints += (A*x == b)\n", 211 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = false)\n", 212 | " \n", 213 | " xcvx = x.value::Matrix # This will always be a matrix\n", 214 | " xcvx = vec(x.value) # convert to vector easily \n", 215 | " \n", 216 | " # compare with pseudoinverse\n", 217 | " @test norm(xcvx - A'*((A*A')\\b)) < 1e-4\n", 218 | "\n", 219 | "\n", 220 | "end" 221 | ] 222 | }, 223 | { 224 | "cell_type": "markdown", 225 | "id": "81106200", 226 | "metadata": {}, 227 | "source": [ 228 | "## Equality constrained QP \n", 229 | "\n", 230 | "$$ \\begin{align} \\min_{x} \\quad & \\frac{1}{2} x^TQx + q^Tx \\\\ \n", 231 | " \\text{st} \\quad & A x = b \n", 232 | " \\end{align}$$" 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": 41, 238 | "id": "46ecd904", 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "name": "stdout", 243 | "output_type": "stream", 244 | "text": [ 245 | "\n", 246 | "ECOS 2.0.8 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n", 247 | "\n", 248 | "It pcost dcost gap pres dres k/t mu step sigma IR | BT\n", 249 | " 0 +2.158e-01 -3.037e+01 +1e+02 4e-01 3e-01 1e+00 3e+01 --- --- 1 3 - | - - \n", 250 | " 1 -3.434e-01 -1.277e+00 +6e+00 2e-02 1e-02 5e-01 2e+00 0.9552 3e-02 2 2 2 | 0 0\n", 251 | " 2 -8.480e-01 -9.915e-01 +1e+00 4e-03 3e-03 3e-01 4e-01 0.8503 9e-02 2 2 2 | 0 0\n", 252 | " 3 -7.309e-01 -7.334e-01 +2e-02 6e-05 6e-05 4e-03 7e-03 0.9890 6e-03 2 2 2 | 0 0\n", 253 | " 4 -7.289e-01 -7.289e-01 +4e-04 1e-06 1e-06 7e-05 1e-04 0.9830 1e-04 2 1 2 | 0 0\n", 254 | " 5 -7.289e-01 -7.289e-01 +1e-05 3e-08 3e-08 2e-06 4e-06 0.9679 1e-04 2 1 1 | 0 0\n", 255 | " 6 -7.289e-01 -7.289e-01 +7e-07 2e-09 2e-09 1e-07 2e-07 0.9430 5e-04 3 1 1 | 0 0\n", 256 | " 7 -7.289e-01 -7.289e-01 +7e-08 2e-10 2e-10 1e-08 2e-08 0.8932 9e-04 2 2 2 | 0 0\n", 257 | " 8 -7.289e-01 -7.289e-01 +4e-09 2e-10 1e-11 8e-10 1e-09 0.9586 1e-02 1 1 1 | 0 0\n", 258 | "\n", 259 | "OPTIMAL (within feastol=1.6e-10, reltol=5.3e-09, abstol=3.9e-09).\n", 260 | "Runtime: 0.001113 seconds.\n", 261 | "\n" 262 | ] 263 | }, 264 | { 265 | "data": { 266 | "text/plain": [ 267 | "10-element Vector{Float64}:\n", 268 | " 0.09724791987373017\n", 269 | " 0.1488434193275145\n", 270 | " 0.4860290018506496\n", 271 | " 0.29931754044643294\n", 272 | " -0.106880331362541\n", 273 | " 0.04208103746402248\n", 274 | " -0.1814010503222913\n", 275 | " 0.3390224830173805\n", 276 | " 0.12993335881168483\n", 277 | " -0.2421193804358406" 278 | ] 279 | }, 280 | "execution_count": 41, 281 | "metadata": {}, 282 | "output_type": "execute_result" 283 | } 284 | ], 285 | "source": [ 286 | "let \n", 287 | " \n", 288 | " n = 10 \n", 289 | " Q = randn(n,n); Q = Q'*Q + I # create PSD matrix \n", 290 | " q = randn(n)\n", 291 | " \n", 292 | " A = randn(3,n)\n", 293 | " b = randn(3)\n", 294 | " \n", 295 | " x = cvx.Variable(n)\n", 296 | " \n", 297 | " # NOTE: quadform(x,Q) = x'*Q*x \n", 298 | " cost = 0.5*cvx.quadform(x,Q) + dot(q,x) \n", 299 | " \n", 300 | " prob = cvx.minimize(cost)\n", 301 | " \n", 302 | " prob.constraints += (A*x == b)\n", 303 | " \n", 304 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = false)\n", 305 | " \n", 306 | " xcvx = x.value::Matrix # This will always be a matrix\n", 307 | " xcvx = vec(x.value) # convert to vector easily \n", 308 | " \n", 309 | " \n", 310 | "end\n", 311 | " " 312 | ] 313 | }, 314 | { 315 | "cell_type": "markdown", 316 | "id": "076ed79c", 317 | "metadata": {}, 318 | "source": [ 319 | "## Letting Convex.jl do the parsing \n", 320 | "\n", 321 | "$$ \\begin{align} \\min_{x} \\quad & \\|Ax - b\\|_1 \\\\ \n", 322 | " \\text{st} \\quad &\\|x\\|_2 \\leq 3\n", 323 | " \\end{align}$$\n", 324 | " \n", 325 | " This problem is not in any sort of \"standard form\", but it is convex. We will let Convex.jl will convert this into a standard form \"canonicalizing it\", and send it ECOS to solve. " 326 | ] 327 | }, 328 | { 329 | "cell_type": "code", 330 | "execution_count": 42, 331 | "id": "c5b9665e", 332 | "metadata": {}, 333 | "outputs": [ 334 | { 335 | "name": "stdout", 336 | "output_type": "stream", 337 | "text": [ 338 | "\n", 339 | "ECOS 2.0.8 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n", 340 | "\n", 341 | "It pcost dcost gap pres dres k/t mu step sigma IR | BT\n", 342 | " 0 +1.147e-17 -3.000e+00 +7e+01 5e-01 6e-01 1e+00 3e+00 --- --- 1 1 - | - - \n", 343 | " 1 +4.051e+00 +4.241e+00 +2e+01 7e-02 1e-01 8e-01 8e-01 0.8261 1e-01 1 1 1 | 0 0\n", 344 | " 2 +4.510e+00 +4.552e+00 +3e+00 1e-02 2e-02 2e-01 2e-01 0.8209 3e-02 1 1 1 | 0 0\n", 345 | " 3 +4.534e+00 +4.533e+00 +1e-01 3e-04 5e-04 3e-03 5e-03 0.9890 2e-02 1 1 1 | 0 0\n", 346 | " 4 +4.535e+00 +4.535e+00 +1e-03 4e-06 6e-06 3e-05 6e-05 0.9890 1e-04 1 1 1 | 0 0\n", 347 | " 5 +4.535e+00 +4.535e+00 +1e-05 4e-08 6e-08 3e-07 7e-07 0.9890 1e-04 1 1 1 | 0 0\n", 348 | " 6 +4.535e+00 +4.535e+00 +2e-07 4e-10 7e-10 4e-09 7e-09 0.9890 1e-04 1 0 0 | 0 0\n", 349 | " 7 +4.535e+00 +4.535e+00 +2e-09 5e-12 8e-12 4e-11 8e-11 0.9890 1e-04 1 0 0 | 0 0\n", 350 | "\n", 351 | "OPTIMAL (within feastol=7.8e-12, reltol=3.7e-10, abstol=1.7e-09).\n", 352 | "Runtime: 0.000185 seconds.\n", 353 | "\n" 354 | ] 355 | }, 356 | { 357 | "data": { 358 | "text/plain": [ 359 | "5-element Vector{Float64}:\n", 360 | " 0.7522684827972297\n", 361 | " 0.1491383275306395\n", 362 | " 0.3234098585384891\n", 363 | " 0.045071042424177546\n", 364 | " -0.4801159046796672" 365 | ] 366 | }, 367 | "execution_count": 42, 368 | "metadata": {}, 369 | "output_type": "execute_result" 370 | } 371 | ], 372 | "source": [ 373 | "let \n", 374 | " A = randn(10,5)\n", 375 | " b = randn(10)\n", 376 | " x = cvx.Variable(5)\n", 377 | " \n", 378 | " prob = cvx.minimize(norm(A*x - b, 1)) \n", 379 | " prob.constraints += (norm(x,2) <= 3)\n", 380 | "\n", 381 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = false)\n", 382 | " \n", 383 | " xcvx = x.value::Matrix # This will always be a matrix\n", 384 | " xcvx = vec(x.value) # convert to vector easily \n", 385 | "end" 386 | ] 387 | }, 388 | { 389 | "cell_type": "markdown", 390 | "id": "e172aedc", 391 | "metadata": {}, 392 | "source": [ 393 | "## Convex Trajectory Optimization\n", 394 | "$$ \\begin{align} \\min_{x_{1:N},u_{1:N-1}} \\quad & \\sum_{i=1}^{N-1} \\bigg[ \\|x_i - x_g\\|_2^2 + \\|u_i\\|_1 \\bigg] + \\frac{1}{2}x_N^TQ_fx_N & \\\\ \n", 395 | " \\text{st} \\quad & x_1 = x_{\\text{IC}} \\\\ \n", 396 | " & x_{i+1} = A x_i + Bu_i \\quad &\\text{for } i = 1,2,\\ldots,N-1 \\\\ \n", 397 | " & x_N = x_g \\\\ \n", 398 | " & \\|u_i\\|_2 \\leq 3 \\quad &\\text{for } i = 1,2,\\ldots,N-1\\\\ \n", 399 | " & x_{min} \\leq x_i \\leq x_{max} \\quad &\\text{for } i = 1,2,\\ldots,N-1\\\\ \n", 400 | " \\end{align}$$" 401 | ] 402 | }, 403 | { 404 | "cell_type": "code", 405 | "execution_count": 45, 406 | "id": "dc09a0a5", 407 | "metadata": {}, 408 | "outputs": [ 409 | { 410 | "name": "stdout", 411 | "output_type": "stream", 412 | "text": [ 413 | "\n", 414 | "ECOS 2.0.8 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS\n", 415 | "\n", 416 | "It pcost dcost gap pres dres k/t mu step sigma IR | BT\n", 417 | " 0 +0.000e+00 -4.005e+03 +5e+03 8e-02 5e-01 1e+00 2e+01 --- --- 1 2 - | - - \n", 418 | " 1 +7.779e+01 -2.055e+03 +3e+03 4e-02 2e-01 3e+00 8e+00 0.6415 3e-01 1 1 1 | 0 0\n", 419 | " 2 +1.066e+02 -1.838e+03 +3e+03 4e-02 9e-02 4e+00 8e+00 0.2601 6e-01 1 1 2 | 0 0\n", 420 | " 3 +1.637e+02 -1.401e+03 +2e+03 3e-02 6e-02 5e+00 6e+00 0.5704 6e-01 1 1 1 | 0 0\n", 421 | " 4 +1.317e+02 -7.523e+02 +1e+03 2e-02 2e-02 3e+00 3e+00 0.5222 2e-01 1 1 1 | 0 0\n", 422 | " 5 +1.367e+02 -3.889e+02 +7e+02 1e-02 1e-02 2e+00 2e+00 0.6982 4e-01 1 1 1 | 0 0\n", 423 | " 6 +1.544e+02 -2.490e+02 +5e+02 7e-03 5e-03 2e+00 1e+00 0.6411 6e-01 2 2 2 | 0 0\n", 424 | " 7 +1.463e+02 -2.720e+01 +2e+02 3e-03 2e-03 8e-01 6e-01 0.9890 4e-01 2 1 1 | 0 0\n", 425 | " 8 +1.427e+02 +1.103e+02 +4e+01 6e-04 3e-04 2e-01 1e-01 0.8677 6e-02 2 2 2 | 0 0\n", 426 | " 9 +1.455e+02 +1.356e+02 +1e+01 2e-04 1e-04 4e-02 3e-02 0.8428 2e-01 2 1 2 | 0 0\n", 427 | "10 +1.466e+02 +1.457e+02 +1e+00 2e-05 9e-06 4e-03 3e-03 0.9135 4e-03 2 1 1 | 0 0\n", 428 | "11 +1.467e+02 +1.466e+02 +2e-01 3e-06 2e-06 7e-04 6e-04 0.8736 7e-02 3 1 1 | 0 0\n", 429 | "12 +1.468e+02 +1.467e+02 +1e-02 2e-07 1e-07 5e-05 4e-05 0.9499 3e-02 2 1 1 | 0 0\n", 430 | "13 +1.468e+02 +1.468e+02 +2e-03 3e-08 2e-08 7e-06 6e-06 0.8880 2e-02 2 2 1 | 0 0\n", 431 | "14 +1.468e+02 +1.468e+02 +4e-04 6e-09 3e-09 1e-06 1e-06 0.8208 2e-02 3 1 1 | 0 0\n", 432 | "15 +1.468e+02 +1.468e+02 +2e-05 4e-10 2e-10 8e-08 7e-08 0.9838 4e-02 2 2 2 | 0 0\n", 433 | "16 +1.468e+02 +1.468e+02 +1e-06 2e-11 9e-12 4e-09 3e-09 0.9518 1e-03 2 2 2 | 0 0\n", 434 | "\n", 435 | "OPTIMAL (within feastol=1.8e-11, reltol=7.3e-09, abstol=1.1e-06).\n", 436 | "Runtime: 0.002303 seconds.\n", 437 | "\n" 438 | ] 439 | }, 440 | { 441 | "data": { 442 | "text/plain": [ 443 | "2×19 Matrix{Float64}:\n", 444 | " -1.94916 -1.88156 -0.385014 … 0.459161 0.47516 0.973417\n", 445 | " 0.721039 1.89804 0.357858 -0.0978981 -0.109679 -0.39604" 446 | ] 447 | }, 448 | "execution_count": 45, 449 | "metadata": {}, 450 | "output_type": "execute_result" 451 | } 452 | ], 453 | "source": [ 454 | "function controllable(A,B)\n", 455 | " n = size(A,1)\n", 456 | " C = hcat([A^i*B for i = 0:(n-1)]...)\n", 457 | " return rank(C) == n \n", 458 | "end\n", 459 | "\n", 460 | "let \n", 461 | " \n", 462 | " # create linear system\n", 463 | " nx = 4 \n", 464 | " nu = 2 \n", 465 | " A = randn(nx,nx);\n", 466 | " B = randn(nx,nu);\n", 467 | " @assert controllable(A,B)\n", 468 | " \n", 469 | " # time steps \n", 470 | " N = 20 \n", 471 | " x_ic = randn(nx)\n", 472 | " x_g = randn(nx)\n", 473 | " \n", 474 | " # terminal cost \n", 475 | " Qf = randn(nx,nx); Qf = Qf'*Qf + I # make PSD Qf \n", 476 | " \n", 477 | " # create cvx variables x_k = X[:,k], u_k = U[:,k]\n", 478 | " X = cvx.Variable(nx, N)\n", 479 | " U = cvx.Variable(nu, N - 1)\n", 480 | " \n", 481 | " # create cost \n", 482 | " cost = 0 \n", 483 | " for k = 1:(N-1)\n", 484 | " xk = X[:,k]\n", 485 | " uk = U[:,k]\n", 486 | " cost += cvx.sumsquares(xk - x_g)\n", 487 | " cost += norm(uk, 1)\n", 488 | " end\n", 489 | " xn = X[:,N]\n", 490 | " cost += 0.5*cvx.quadform(xn, Qf)\n", 491 | " \n", 492 | " # initialize cvx problem \n", 493 | " prob = cvx.minimize(cost)\n", 494 | " \n", 495 | " # initial condition constraint \n", 496 | " prob.constraints += X[:,1] == x_ic \n", 497 | " \n", 498 | " for k = 1:(N-1)\n", 499 | " # dynamics constraints \n", 500 | " prob.constraints += (X[:,k+1] == A*X[:,k] + B*U[:,k])\n", 501 | " end\n", 502 | " \n", 503 | " # goal constraint \n", 504 | " prob.constraints += X[:,N] == x_g\n", 505 | " \n", 506 | " # norm(u)<3 \n", 507 | " for k = 1:(N-1)\n", 508 | " uk = U[:,k]\n", 509 | " prob.constraints += norm(uk,2) <= 3 \n", 510 | " end\n", 511 | " \n", 512 | " x_min = -20*ones(nx)\n", 513 | " x_max = 20*ones(nx)\n", 514 | " for k = 1:N\n", 515 | " xk = X[:,k]\n", 516 | " prob.constraints += xk <= x_max \n", 517 | " prob.constraints += xk >= x_min \n", 518 | " end\n", 519 | " \n", 520 | " # solve problem (silent solver tells us the output)\n", 521 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = false)\n", 522 | " \n", 523 | " if prob.status != cvx.MathOptInterface.OPTIMAL\n", 524 | " error(\"Convex.jl problem failed to solve for some reason\")\n", 525 | " end\n", 526 | " \n", 527 | " # convert the solution matrices into vectors of vectors \n", 528 | " X = X.value::Matrix\n", 529 | " U = U.value::Matrix\n", 530 | "end" 531 | ] 532 | } 533 | ], 534 | "metadata": { 535 | "kernelspec": { 536 | "display_name": "Julia 1.6.7", 537 | "language": "julia", 538 | "name": "julia-1.6" 539 | }, 540 | "language_info": { 541 | "file_extension": ".jl", 542 | "mimetype": "application/julia", 543 | "name": "julia", 544 | "version": "1.6.7" 545 | } 546 | }, 547 | "nbformat": 4, 548 | "nbformat_minor": 5 549 | } 550 | -------------------------------------------------------------------------------- /2_17_recitation/Manifest.toml: -------------------------------------------------------------------------------- 1 | # This file is machine-generated - editing it directly is not advised 2 | 3 | [[AMD]] 4 | deps = ["Libdl", "LinearAlgebra", "SparseArrays", "Test"] 5 | git-tree-sha1 = "00163dc02b882ca5ec032400b919e5f5011dbd31" 6 | uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" 7 | version = "0.5.0" 8 | 9 | [[AbstractTrees]] 10 | git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" 11 | uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" 12 | version = "0.4.4" 13 | 14 | [[Adapt]] 15 | deps = ["LinearAlgebra"] 16 | git-tree-sha1 = "0310e08cb19f5da31d08341c6120c047598f5b9c" 17 | uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" 18 | version = "3.5.0" 19 | 20 | [[ArgTools]] 21 | uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" 22 | 23 | [[Artifacts]] 24 | uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" 25 | 26 | [[AssetRegistry]] 27 | deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] 28 | git-tree-sha1 = "b25e88db7944f98789130d7b503276bc34bc098e" 29 | uuid = "bf4720bc-e11a-5d0c-854e-bdca1663c893" 30 | version = "0.1.0" 31 | 32 | [[Base64]] 33 | uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" 34 | 35 | [[BenchmarkTools]] 36 | deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] 37 | git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" 38 | uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" 39 | version = "1.3.2" 40 | 41 | [[BinDeps]] 42 | deps = ["Libdl", "Pkg", "SHA", "URIParser", "Unicode"] 43 | git-tree-sha1 = "1289b57e8cf019aede076edab0587eb9644175bd" 44 | uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" 45 | version = "1.0.2" 46 | 47 | [[Blink]] 48 | deps = ["Base64", "BinDeps", "Distributed", "JSExpr", "JSON", "Lazy", "Logging", "MacroTools", "Mustache", "Mux", "Reexport", "Sockets", "WebIO", "WebSockets"] 49 | git-tree-sha1 = "08d0b679fd7caa49e2bca9214b131289e19808c0" 50 | uuid = "ad839575-38b3-5650-b840-f874b8c74a25" 51 | version = "0.12.5" 52 | 53 | [[Bzip2_jll]] 54 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 55 | git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" 56 | uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" 57 | version = "1.0.8+0" 58 | 59 | [[CEnum]] 60 | git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" 61 | uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" 62 | version = "0.4.2" 63 | 64 | [[Cairo_jll]] 65 | deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] 66 | git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" 67 | uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" 68 | version = "1.16.1+1" 69 | 70 | [[Calculus]] 71 | deps = ["LinearAlgebra"] 72 | git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" 73 | uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" 74 | version = "0.5.1" 75 | 76 | [[Cassette]] 77 | git-tree-sha1 = "a70f220ea09ec61401745ff338f8fb340420165c" 78 | uuid = "7057c7e9-c182-5462-911a-8362d720325c" 79 | version = "0.3.11" 80 | 81 | [[ChainRulesCore]] 82 | deps = ["Compat", "LinearAlgebra", "SparseArrays"] 83 | git-tree-sha1 = "c6d890a52d2c4d55d326439580c3b8d0875a77d9" 84 | uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" 85 | version = "1.15.7" 86 | 87 | [[ChangesOfVariables]] 88 | deps = ["ChainRulesCore", "LinearAlgebra", "Test"] 89 | git-tree-sha1 = "844b061c104c408b24537482469400af6075aae4" 90 | uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" 91 | version = "0.1.5" 92 | 93 | [[CodecBzip2]] 94 | deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] 95 | git-tree-sha1 = "2e62a725210ce3c3c2e1a3080190e7ca491f18d7" 96 | uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" 97 | version = "0.7.2" 98 | 99 | [[CodecZlib]] 100 | deps = ["TranscodingStreams", "Zlib_jll"] 101 | git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" 102 | uuid = "944b1d66-785c-5afd-91f1-9de20f533193" 103 | version = "0.7.1" 104 | 105 | [[ColorSchemes]] 106 | deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Random", "SnoopPrecompile"] 107 | git-tree-sha1 = "aa3edc8f8dea6cbfa176ee12f7c2fc82f0608ed3" 108 | uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" 109 | version = "3.20.0" 110 | 111 | [[ColorTypes]] 112 | deps = ["FixedPointNumbers", "Random"] 113 | git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" 114 | uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" 115 | version = "0.11.4" 116 | 117 | [[ColorVectorSpace]] 118 | deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] 119 | git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" 120 | uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" 121 | version = "0.9.10" 122 | 123 | [[Colors]] 124 | deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] 125 | git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" 126 | uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" 127 | version = "0.12.10" 128 | 129 | [[Combinatorics]] 130 | git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" 131 | uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" 132 | version = "1.0.2" 133 | 134 | [[CommonSubexpressions]] 135 | deps = ["MacroTools", "Test"] 136 | git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" 137 | uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" 138 | version = "0.3.0" 139 | 140 | [[Compat]] 141 | deps = ["Dates", "LinearAlgebra", "UUIDs"] 142 | git-tree-sha1 = "61fdd77467a5c3ad071ef8277ac6bd6af7dd4c04" 143 | uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" 144 | version = "4.6.0" 145 | 146 | [[CompilerSupportLibraries_jll]] 147 | deps = ["Artifacts", "Libdl"] 148 | uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" 149 | 150 | [[Contour]] 151 | git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" 152 | uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" 153 | version = "0.6.2" 154 | 155 | [[Convex]] 156 | deps = ["AbstractTrees", "BenchmarkTools", "LDLFactorizations", "LinearAlgebra", "MathOptInterface", "OrderedCollections", "SparseArrays", "Test"] 157 | git-tree-sha1 = "af4188609c0620ed4b0e4493ed416d3c8b2dadeb" 158 | uuid = "f65535da-76fb-5f13-bab9-19810c17039a" 159 | version = "0.15.3" 160 | 161 | [[CoordinateTransformations]] 162 | deps = ["LinearAlgebra", "StaticArrays"] 163 | git-tree-sha1 = "681ea870b918e7cff7111da58791d7f718067a19" 164 | uuid = "150eb455-5306-5404-9cee-2592286d6298" 165 | version = "0.6.2" 166 | 167 | [[DataAPI]] 168 | git-tree-sha1 = "e8119c1a33d267e16108be441a287a6981ba1630" 169 | uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" 170 | version = "1.14.0" 171 | 172 | [[DataStructures]] 173 | deps = ["Compat", "InteractiveUtils", "OrderedCollections"] 174 | git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" 175 | uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" 176 | version = "0.18.13" 177 | 178 | [[DataValueInterfaces]] 179 | git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" 180 | uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" 181 | version = "1.0.0" 182 | 183 | [[Dates]] 184 | deps = ["Printf"] 185 | uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" 186 | 187 | [[DelimitedFiles]] 188 | deps = ["Mmap"] 189 | uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" 190 | 191 | [[DiffResults]] 192 | deps = ["StaticArraysCore"] 193 | git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" 194 | uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" 195 | version = "1.1.0" 196 | 197 | [[DiffRules]] 198 | deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] 199 | git-tree-sha1 = "c5b6685d53f933c11404a3ae9822afe30d522494" 200 | uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" 201 | version = "1.12.2" 202 | 203 | [[Distributed]] 204 | deps = ["Random", "Serialization", "Sockets"] 205 | uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" 206 | 207 | [[DocStringExtensions]] 208 | deps = ["LibGit2"] 209 | git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" 210 | uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" 211 | version = "0.8.6" 212 | 213 | [[Downloads]] 214 | deps = ["ArgTools", "LibCURL", "NetworkOptions"] 215 | uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" 216 | 217 | [[DualNumbers]] 218 | deps = ["Calculus", "NaNMath", "SpecialFunctions"] 219 | git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" 220 | uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" 221 | version = "0.6.8" 222 | 223 | [[ECOS]] 224 | deps = ["CEnum", "ECOS_jll", "MathOptInterface"] 225 | git-tree-sha1 = "a10ccdc509a938d02b32904edb037b7045c49665" 226 | uuid = "e2685f51-7e38-5353-a97d-a921fd2c8199" 227 | version = "1.1.0" 228 | 229 | [[ECOS_jll]] 230 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 231 | git-tree-sha1 = "5f84034ddd642cf595e57d46ea2f085321c260e4" 232 | uuid = "c2c64177-6a8e-5dca-99a7-64895ad7445f" 233 | version = "200.0.800+0" 234 | 235 | [[EarCut_jll]] 236 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 237 | git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" 238 | uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" 239 | version = "2.2.4+0" 240 | 241 | [[Expat_jll]] 242 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 243 | git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d" 244 | uuid = "2e619515-83b5-522b-bb60-26c02a35a201" 245 | version = "2.4.8+0" 246 | 247 | [[Extents]] 248 | git-tree-sha1 = "5e1e4c53fa39afe63a7d356e30452249365fba99" 249 | uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" 250 | version = "0.1.1" 251 | 252 | [[FFMPEG]] 253 | deps = ["FFMPEG_jll"] 254 | git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" 255 | uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" 256 | version = "0.4.1" 257 | 258 | [[FFMPEG_jll]] 259 | deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] 260 | git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" 261 | uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" 262 | version = "4.4.2+2" 263 | 264 | [[FileIO]] 265 | deps = ["Pkg", "Requires", "UUIDs"] 266 | git-tree-sha1 = "7be5f99f7d15578798f338f5433b6c432ea8037b" 267 | uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" 268 | version = "1.16.0" 269 | 270 | [[FileWatching]] 271 | uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" 272 | 273 | [[FixedPointNumbers]] 274 | deps = ["Statistics"] 275 | git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" 276 | uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" 277 | version = "0.8.4" 278 | 279 | [[Fontconfig_jll]] 280 | deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] 281 | git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" 282 | uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" 283 | version = "2.13.93+0" 284 | 285 | [[Formatting]] 286 | deps = ["Printf"] 287 | git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" 288 | uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" 289 | version = "0.4.2" 290 | 291 | [[ForwardDiff]] 292 | deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] 293 | git-tree-sha1 = "a69dd6db8a809f78846ff259298678f0d6212180" 294 | uuid = "f6369f11-7733-5829-9624-2563aa707210" 295 | version = "0.10.34" 296 | 297 | [[FreeType2_jll]] 298 | deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 299 | git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" 300 | uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" 301 | version = "2.10.4+0" 302 | 303 | [[FriBidi_jll]] 304 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 305 | git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" 306 | uuid = "559328eb-81f9-559d-9380-de523a88c83c" 307 | version = "1.0.10+0" 308 | 309 | [[FunctionalCollections]] 310 | deps = ["Test"] 311 | git-tree-sha1 = "04cb9cfaa6ba5311973994fe3496ddec19b6292a" 312 | uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" 313 | version = "0.5.0" 314 | 315 | [[GLFW_jll]] 316 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] 317 | git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" 318 | uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" 319 | version = "3.3.8+0" 320 | 321 | [[GPUArraysCore]] 322 | deps = ["Adapt"] 323 | git-tree-sha1 = "1cd7f0af1aa58abc02ea1d872953a97359cb87fa" 324 | uuid = "46192b85-c4d5-4398-a991-12ede77f4527" 325 | version = "0.1.4" 326 | 327 | [[GR]] 328 | deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] 329 | git-tree-sha1 = "660b2ea2ec2b010bb02823c6d0ff6afd9bdc5c16" 330 | uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" 331 | version = "0.71.7" 332 | 333 | [[GR_jll]] 334 | deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] 335 | git-tree-sha1 = "d5e1fd17ac7f3aa4c5287a61ee28d4f8b8e98873" 336 | uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" 337 | version = "0.71.7+0" 338 | 339 | [[GenericLinearAlgebra]] 340 | deps = ["LinearAlgebra", "Printf", "Random", "libblastrampoline_jll"] 341 | git-tree-sha1 = "856610594f8759d2a3d3afe3397ce5242982bfdd" 342 | uuid = "14197337-ba66-59df-a3e3-ca00e7dcff7a" 343 | version = "0.3.5" 344 | 345 | [[GeoInterface]] 346 | deps = ["Extents"] 347 | git-tree-sha1 = "e07a1b98ed72e3cdd02c6ceaab94b8a606faca40" 348 | uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" 349 | version = "1.2.1" 350 | 351 | [[GeometryBasics]] 352 | deps = ["EarCut_jll", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] 353 | git-tree-sha1 = "fe9aea4ed3ec6afdfbeb5a4f39a2208909b162a6" 354 | uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" 355 | version = "0.4.5" 356 | 357 | [[Gettext_jll]] 358 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] 359 | git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" 360 | uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" 361 | version = "0.21.0+0" 362 | 363 | [[Glib_jll]] 364 | deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] 365 | git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" 366 | uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" 367 | version = "2.74.0+2" 368 | 369 | [[Graphite2_jll]] 370 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 371 | git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" 372 | uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" 373 | version = "1.3.14+0" 374 | 375 | [[Grisu]] 376 | git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" 377 | uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" 378 | version = "1.0.2" 379 | 380 | [[HTTP]] 381 | deps = ["Base64", "Dates", "IniFile", "MbedTLS", "Sockets"] 382 | git-tree-sha1 = "c7ec02c4c6a039a98a15f955462cd7aea5df4508" 383 | uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" 384 | version = "0.8.19" 385 | 386 | [[HarfBuzz_jll]] 387 | deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] 388 | git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" 389 | uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" 390 | version = "2.8.1+1" 391 | 392 | [[Hiccup]] 393 | deps = ["MacroTools", "Test"] 394 | git-tree-sha1 = "6187bb2d5fcbb2007c39e7ac53308b0d371124bd" 395 | uuid = "9fb69e20-1954-56bb-a84f-559cc56a8ff7" 396 | version = "0.2.2" 397 | 398 | [[Hypatia]] 399 | deps = ["Combinatorics", "DocStringExtensions", "GenericLinearAlgebra", "IterativeSolvers", "LinearAlgebra", "LinearMaps", "MathOptInterface", "PolynomialRoots", "Printf", "Requires", "SparseArrays", "SpecialFunctions", "SuiteSparse", "Test"] 400 | git-tree-sha1 = "c34619ebb5bbdd66e6d91e12c7141b2c09d2e50b" 401 | uuid = "b99e6be6-89ff-11e8-14f8-45c827f4f8f2" 402 | version = "0.7.0" 403 | 404 | [[IniFile]] 405 | git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" 406 | uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" 407 | version = "0.5.1" 408 | 409 | [[InteractiveUtils]] 410 | deps = ["Markdown"] 411 | uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" 412 | 413 | [[InverseFunctions]] 414 | deps = ["Test"] 415 | git-tree-sha1 = "49510dfcb407e572524ba94aeae2fced1f3feb0f" 416 | uuid = "3587e190-3f89-42d0-90ee-14403ec27112" 417 | version = "0.1.8" 418 | 419 | [[IrrationalConstants]] 420 | git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" 421 | uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" 422 | version = "0.1.1" 423 | 424 | [[IterTools]] 425 | git-tree-sha1 = "fa6287a4469f5e048d763df38279ee729fbd44e5" 426 | uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" 427 | version = "1.4.0" 428 | 429 | [[IterativeSolvers]] 430 | deps = ["LinearAlgebra", "Printf", "Random", "RecipesBase", "SparseArrays"] 431 | git-tree-sha1 = "1169632f425f79429f245113b775a0e3d121457c" 432 | uuid = "42fd0dbc-a981-5370-80f2-aaf504508153" 433 | version = "0.9.2" 434 | 435 | [[IteratorInterfaceExtensions]] 436 | git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" 437 | uuid = "82899510-4779-5014-852e-03e436cf321d" 438 | version = "1.0.0" 439 | 440 | [[JLD2]] 441 | deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "TranscodingStreams", "UUIDs"] 442 | git-tree-sha1 = "c3244ef42b7d4508c638339df1bdbf4353e144db" 443 | uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" 444 | version = "0.4.30" 445 | 446 | [[JLFzf]] 447 | deps = ["Pipe", "REPL", "Random", "fzf_jll"] 448 | git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" 449 | uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" 450 | version = "0.1.5" 451 | 452 | [[JLLWrappers]] 453 | deps = ["Preferences"] 454 | git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" 455 | uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" 456 | version = "1.4.1" 457 | 458 | [[JSExpr]] 459 | deps = ["JSON", "MacroTools", "Observables", "WebIO"] 460 | git-tree-sha1 = "b413a73785b98474d8af24fd4c8a975e31df3658" 461 | uuid = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" 462 | version = "0.5.4" 463 | 464 | [[JSON]] 465 | deps = ["Dates", "Mmap", "Parsers", "Unicode"] 466 | git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" 467 | uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" 468 | version = "0.21.3" 469 | 470 | [[JpegTurbo_jll]] 471 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 472 | git-tree-sha1 = "b53380851c6e6664204efb2e62cd24fa5c47e4ba" 473 | uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" 474 | version = "2.1.2+0" 475 | 476 | [[LAME_jll]] 477 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 478 | git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" 479 | uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" 480 | version = "3.100.1+0" 481 | 482 | [[LDLFactorizations]] 483 | deps = ["AMD", "LinearAlgebra", "SparseArrays", "Test"] 484 | git-tree-sha1 = "cbf4b646f82bfc58bb48bcca9dcce2eb88da4cd1" 485 | uuid = "40e66cde-538c-5869-a4ad-c39174c6795b" 486 | version = "0.10.0" 487 | 488 | [[LERC_jll]] 489 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 490 | git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" 491 | uuid = "88015f11-f218-50d7-93a8-a6af411a945d" 492 | version = "3.0.0+1" 493 | 494 | [[LZO_jll]] 495 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 496 | git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" 497 | uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" 498 | version = "2.10.1+0" 499 | 500 | [[LaTeXStrings]] 501 | git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" 502 | uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" 503 | version = "1.3.0" 504 | 505 | [[Latexify]] 506 | deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] 507 | git-tree-sha1 = "2422f47b34d4b127720a18f86fa7b1aa2e141f29" 508 | uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" 509 | version = "0.15.18" 510 | 511 | [[Lazy]] 512 | deps = ["MacroTools"] 513 | git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" 514 | uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" 515 | version = "0.15.1" 516 | 517 | [[LibCURL]] 518 | deps = ["LibCURL_jll", "MozillaCACerts_jll"] 519 | uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" 520 | 521 | [[LibCURL_jll]] 522 | deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] 523 | uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" 524 | 525 | [[LibGit2]] 526 | deps = ["Base64", "NetworkOptions", "Printf", "SHA"] 527 | uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" 528 | 529 | [[LibSSH2_jll]] 530 | deps = ["Artifacts", "Libdl", "MbedTLS_jll"] 531 | uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" 532 | 533 | [[Libdl]] 534 | uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" 535 | 536 | [[Libffi_jll]] 537 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 538 | git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" 539 | uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" 540 | version = "3.2.2+1" 541 | 542 | [[Libgcrypt_jll]] 543 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] 544 | git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" 545 | uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" 546 | version = "1.8.7+0" 547 | 548 | [[Libglvnd_jll]] 549 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] 550 | git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" 551 | uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" 552 | version = "1.6.0+0" 553 | 554 | [[Libgpg_error_jll]] 555 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 556 | git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" 557 | uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" 558 | version = "1.42.0+0" 559 | 560 | [[Libiconv_jll]] 561 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 562 | git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" 563 | uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" 564 | version = "1.16.1+2" 565 | 566 | [[Libmount_jll]] 567 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 568 | git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" 569 | uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" 570 | version = "2.35.0+0" 571 | 572 | [[Libtiff_jll]] 573 | deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] 574 | git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713" 575 | uuid = "89763e89-9b03-5906-acba-b20f662cd828" 576 | version = "4.4.0+0" 577 | 578 | [[Libuuid_jll]] 579 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 580 | git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" 581 | uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" 582 | version = "2.36.0+0" 583 | 584 | [[LinearAlgebra]] 585 | deps = ["Libdl"] 586 | uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" 587 | 588 | [[LinearMaps]] 589 | deps = ["ChainRulesCore", "LinearAlgebra", "SparseArrays", "Statistics"] 590 | git-tree-sha1 = "42970dad6b0d2515571613010bd32ba37e07f874" 591 | uuid = "7a12625a-238d-50fd-b39a-03d52299707e" 592 | version = "3.9.0" 593 | 594 | [[LogExpFunctions]] 595 | deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] 596 | git-tree-sha1 = "680e733c3a0a9cea9e935c8c2184aea6a63fa0b5" 597 | uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" 598 | version = "0.3.21" 599 | 600 | [[Logging]] 601 | uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" 602 | 603 | [[MacroTools]] 604 | deps = ["Markdown", "Random"] 605 | git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" 606 | uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" 607 | version = "0.5.10" 608 | 609 | [[Markdown]] 610 | deps = ["Base64"] 611 | uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" 612 | 613 | [[MathOptInterface]] 614 | deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "Printf", "SnoopPrecompile", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] 615 | git-tree-sha1 = "2a58c70db9287898dcc76b8394f0ff601c11b270" 616 | uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" 617 | version = "1.12.0" 618 | 619 | [[MbedTLS]] 620 | deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] 621 | git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" 622 | uuid = "739be429-bea8-5141-9913-cc70e7f3736d" 623 | version = "1.1.7" 624 | 625 | [[MbedTLS_jll]] 626 | deps = ["Artifacts", "Libdl"] 627 | uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" 628 | 629 | [[Measures]] 630 | git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" 631 | uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" 632 | version = "0.3.2" 633 | 634 | [[MeshCat]] 635 | deps = ["Base64", "BinDeps", "Blink", "Cassette", "Colors", "CoordinateTransformations", "DocStringExtensions", "FFMPEG", "GeometryBasics", "LinearAlgebra", "Logging", "MsgPack", "Mux", "Parameters", "Pkg", "Requires", "Rotations", "Sockets", "StaticArrays", "UUIDs", "WebSockets"] 636 | git-tree-sha1 = "bd707ee5273b7778554b0b22b3071cf97f71e1f4" 637 | uuid = "283c5d60-a78f-5afe-a0af-af636b173e11" 638 | version = "0.14.2" 639 | 640 | [[Missings]] 641 | deps = ["DataAPI"] 642 | git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" 643 | uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" 644 | version = "1.1.0" 645 | 646 | [[Mmap]] 647 | uuid = "a63ad114-7e13-5084-954f-fe012c677804" 648 | 649 | [[MozillaCACerts_jll]] 650 | uuid = "14a3606d-f60d-562e-9121-12d972cd8159" 651 | 652 | [[MsgPack]] 653 | deps = ["Serialization"] 654 | git-tree-sha1 = "fc8c15ca848b902015bd4a745d350f02cf791c2a" 655 | uuid = "99f44e22-a591-53d1-9472-aa23ef4bd671" 656 | version = "1.2.0" 657 | 658 | [[Mustache]] 659 | deps = ["Printf", "Tables"] 660 | git-tree-sha1 = "1e566ae913a57d0062ff1af54d2697b9344b99cd" 661 | uuid = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70" 662 | version = "1.0.14" 663 | 664 | [[MutableArithmetics]] 665 | deps = ["LinearAlgebra", "SparseArrays", "Test"] 666 | git-tree-sha1 = "b8b5827b5939d926d3f5954d80bb5a8ab5ccd27a" 667 | uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" 668 | version = "1.2.1" 669 | 670 | [[Mux]] 671 | deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "Pkg", "Sockets", "WebSockets"] 672 | git-tree-sha1 = "82dfb2cead9895e10ee1b0ca37a01088456c4364" 673 | uuid = "a975b10e-0019-58db-a62f-e48ff68538c9" 674 | version = "0.7.6" 675 | 676 | [[NaNMath]] 677 | deps = ["OpenLibm_jll"] 678 | git-tree-sha1 = "a7c3d1da1189a1c2fe843a3bfa04d18d20eb3211" 679 | uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" 680 | version = "1.0.1" 681 | 682 | [[NetworkOptions]] 683 | uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" 684 | 685 | [[Observables]] 686 | git-tree-sha1 = "6862738f9796b3edc1c09d0890afce4eca9e7e93" 687 | uuid = "510215fc-4207-5dde-b226-833fc4488ee2" 688 | version = "0.5.4" 689 | 690 | [[Ogg_jll]] 691 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 692 | git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" 693 | uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" 694 | version = "1.3.5+1" 695 | 696 | [[OpenLibm_jll]] 697 | deps = ["Artifacts", "Libdl"] 698 | uuid = "05823500-19ac-5b8b-9628-191a04bc5112" 699 | 700 | [[OpenSSL_jll]] 701 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 702 | git-tree-sha1 = "9ff31d101d987eb9d66bd8b176ac7c277beccd09" 703 | uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" 704 | version = "1.1.20+0" 705 | 706 | [[OpenSpecFun_jll]] 707 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] 708 | git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" 709 | uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" 710 | version = "0.5.5+0" 711 | 712 | [[Opus_jll]] 713 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 714 | git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" 715 | uuid = "91d4177d-7536-5919-b921-800302f37372" 716 | version = "1.3.2+0" 717 | 718 | [[OrderedCollections]] 719 | git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" 720 | uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" 721 | version = "1.4.1" 722 | 723 | [[PCRE2_jll]] 724 | deps = ["Artifacts", "Libdl"] 725 | uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" 726 | 727 | [[Parameters]] 728 | deps = ["OrderedCollections", "UnPack"] 729 | git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" 730 | uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" 731 | version = "0.12.3" 732 | 733 | [[Parsers]] 734 | deps = ["Dates", "SnoopPrecompile"] 735 | git-tree-sha1 = "6f4fbcd1ad45905a5dee3f4256fabb49aa2110c6" 736 | uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" 737 | version = "2.5.7" 738 | 739 | [[Pidfile]] 740 | deps = ["FileWatching", "Test"] 741 | git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" 742 | uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" 743 | version = "1.3.0" 744 | 745 | [[Pipe]] 746 | git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" 747 | uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" 748 | version = "1.3.0" 749 | 750 | [[Pixman_jll]] 751 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 752 | git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" 753 | uuid = "30392449-352a-5448-841d-b1acce4e97dc" 754 | version = "0.40.1+0" 755 | 756 | [[Pkg]] 757 | deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] 758 | uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" 759 | 760 | [[PlotThemes]] 761 | deps = ["PlotUtils", "Statistics"] 762 | git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" 763 | uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" 764 | version = "3.1.0" 765 | 766 | [[PlotUtils]] 767 | deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "SnoopPrecompile", "Statistics"] 768 | git-tree-sha1 = "c95373e73290cf50a8a22c3375e4625ded5c5280" 769 | uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" 770 | version = "1.3.4" 771 | 772 | [[Plots]] 773 | deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SnoopPrecompile", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"] 774 | git-tree-sha1 = "8ac949bd0ebc46a44afb1fdca1094554a84b086e" 775 | uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" 776 | version = "1.38.5" 777 | 778 | [[PolynomialRoots]] 779 | git-tree-sha1 = "5f807b5345093487f733e520a1b7395ee9324825" 780 | uuid = "3a141323-8675-5d76-9d11-e1df1406c778" 781 | version = "1.0.0" 782 | 783 | [[Preferences]] 784 | deps = ["TOML"] 785 | git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" 786 | uuid = "21216c6a-2e73-6563-6e65-726566657250" 787 | version = "1.3.0" 788 | 789 | [[Printf]] 790 | deps = ["Unicode"] 791 | uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" 792 | 793 | [[Profile]] 794 | deps = ["Printf"] 795 | uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" 796 | 797 | [[ProgressMeter]] 798 | deps = ["Distributed", "Printf"] 799 | git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9" 800 | uuid = "92933f4c-e287-5a05-a399-4b506db050ca" 801 | version = "1.7.2" 802 | 803 | [[Qt5Base_jll]] 804 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] 805 | git-tree-sha1 = "0c03844e2231e12fda4d0086fd7cbe4098ee8dc5" 806 | uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" 807 | version = "5.15.3+2" 808 | 809 | [[Quaternions]] 810 | deps = ["DualNumbers", "LinearAlgebra", "Random"] 811 | git-tree-sha1 = "0b345302b17b0e694092621915de0e0dc7443a1a" 812 | uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" 813 | version = "0.4.9" 814 | 815 | [[REPL]] 816 | deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] 817 | uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" 818 | 819 | [[Random]] 820 | deps = ["Serialization"] 821 | uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" 822 | 823 | [[RecipesBase]] 824 | deps = ["SnoopPrecompile"] 825 | git-tree-sha1 = "261dddd3b862bd2c940cf6ca4d1c8fe593e457c8" 826 | uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" 827 | version = "1.3.3" 828 | 829 | [[RecipesPipeline]] 830 | deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase", "SnoopPrecompile"] 831 | git-tree-sha1 = "e974477be88cb5e3040009f3767611bc6357846f" 832 | uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" 833 | version = "0.6.11" 834 | 835 | [[Reexport]] 836 | git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" 837 | uuid = "189a3867-3050-52da-a836-e630ba90ab69" 838 | version = "1.2.2" 839 | 840 | [[RelocatableFolders]] 841 | deps = ["SHA", "Scratch"] 842 | git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" 843 | uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" 844 | version = "1.0.0" 845 | 846 | [[Requires]] 847 | deps = ["UUIDs"] 848 | git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" 849 | uuid = "ae029012-a4dd-5104-9daa-d747884805df" 850 | version = "1.3.0" 851 | 852 | [[Rotations]] 853 | deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays", "Statistics"] 854 | git-tree-sha1 = "2fa87d198bc5356c649b92109ed3ce46ee1eb89d" 855 | uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" 856 | version = "1.1.1" 857 | 858 | [[SHA]] 859 | uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" 860 | 861 | [[Scratch]] 862 | deps = ["Dates"] 863 | git-tree-sha1 = "f94f779c94e58bf9ea243e77a37e16d9de9126bd" 864 | uuid = "6c6a2e73-6563-6170-7368-637461726353" 865 | version = "1.1.1" 866 | 867 | [[Serialization]] 868 | uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" 869 | 870 | [[Showoff]] 871 | deps = ["Dates", "Grisu"] 872 | git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" 873 | uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" 874 | version = "1.0.3" 875 | 876 | [[SnoopPrecompile]] 877 | deps = ["Preferences"] 878 | git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" 879 | uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" 880 | version = "1.0.3" 881 | 882 | [[Sockets]] 883 | uuid = "6462fe0b-24de-5631-8697-dd941f90decc" 884 | 885 | [[SortingAlgorithms]] 886 | deps = ["DataStructures"] 887 | git-tree-sha1 = "a4ada03f999bd01b3a25dcaa30b2d929fe537e00" 888 | uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" 889 | version = "1.1.0" 890 | 891 | [[SparseArrays]] 892 | deps = ["LinearAlgebra", "Random"] 893 | uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" 894 | 895 | [[SpecialFunctions]] 896 | deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] 897 | git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d" 898 | uuid = "276daf66-3868-5448-9aa4-cd146d93841b" 899 | version = "2.1.7" 900 | 901 | [[StaticArrays]] 902 | deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] 903 | git-tree-sha1 = "67d3e75e8af8089ea34ce96974d5468d4a008ca6" 904 | uuid = "90137ffa-7385-5640-81b9-e52037218182" 905 | version = "1.5.15" 906 | 907 | [[StaticArraysCore]] 908 | git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" 909 | uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" 910 | version = "1.4.0" 911 | 912 | [[Statistics]] 913 | deps = ["LinearAlgebra", "SparseArrays"] 914 | uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" 915 | 916 | [[StatsAPI]] 917 | deps = ["LinearAlgebra"] 918 | git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6" 919 | uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" 920 | version = "1.5.0" 921 | 922 | [[StatsBase]] 923 | deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] 924 | git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" 925 | uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" 926 | version = "0.33.21" 927 | 928 | [[StructArrays]] 929 | deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] 930 | git-tree-sha1 = "b03a3b745aa49b566f128977a7dd1be8711c5e71" 931 | uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" 932 | version = "0.6.14" 933 | 934 | [[SuiteSparse]] 935 | deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] 936 | uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" 937 | 938 | [[TOML]] 939 | deps = ["Dates"] 940 | uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" 941 | 942 | [[TableTraits]] 943 | deps = ["IteratorInterfaceExtensions"] 944 | git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" 945 | uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" 946 | version = "1.0.1" 947 | 948 | [[Tables]] 949 | deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] 950 | git-tree-sha1 = "c79322d36826aa2f4fd8ecfa96ddb47b174ac78d" 951 | uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" 952 | version = "1.10.0" 953 | 954 | [[Tar]] 955 | deps = ["ArgTools", "SHA"] 956 | uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" 957 | 958 | [[TensorCore]] 959 | deps = ["LinearAlgebra"] 960 | git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" 961 | uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" 962 | version = "0.1.1" 963 | 964 | [[Test]] 965 | deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] 966 | uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" 967 | 968 | [[TranscodingStreams]] 969 | deps = ["Random", "Test"] 970 | git-tree-sha1 = "94f38103c984f89cf77c402f2a68dbd870f8165f" 971 | uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" 972 | version = "0.9.11" 973 | 974 | [[URIParser]] 975 | deps = ["Unicode"] 976 | git-tree-sha1 = "53a9f49546b8d2dd2e688d216421d050c9a31d0d" 977 | uuid = "30578b45-9adc-5946-b283-645ec420af67" 978 | version = "0.4.1" 979 | 980 | [[UUIDs]] 981 | deps = ["Random", "SHA"] 982 | uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" 983 | 984 | [[UnPack]] 985 | git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" 986 | uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" 987 | version = "1.0.2" 988 | 989 | [[Unicode]] 990 | uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" 991 | 992 | [[UnicodeFun]] 993 | deps = ["REPL"] 994 | git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" 995 | uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" 996 | version = "0.4.1" 997 | 998 | [[Unzip]] 999 | git-tree-sha1 = "34db80951901073501137bdbc3d5a8e7bbd06670" 1000 | uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" 1001 | version = "0.1.2" 1002 | 1003 | [[Wayland_jll]] 1004 | deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] 1005 | git-tree-sha1 = "ed8d92d9774b077c53e1da50fd81a36af3744c1c" 1006 | uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" 1007 | version = "1.21.0+0" 1008 | 1009 | [[Wayland_protocols_jll]] 1010 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1011 | git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" 1012 | uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" 1013 | version = "1.25.0+0" 1014 | 1015 | [[WebIO]] 1016 | deps = ["AssetRegistry", "Base64", "Distributed", "FunctionalCollections", "JSON", "Logging", "Observables", "Pkg", "Random", "Requires", "Sockets", "UUIDs", "WebSockets", "Widgets"] 1017 | git-tree-sha1 = "976d0738247f155d0dcd77607edea644f069e1e9" 1018 | uuid = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" 1019 | version = "0.8.20" 1020 | 1021 | [[WebSockets]] 1022 | deps = ["Base64", "Dates", "HTTP", "Logging", "Sockets"] 1023 | git-tree-sha1 = "f91a602e25fe6b89afc93cf02a4ae18ee9384ce3" 1024 | uuid = "104b5d7c-a370-577a-8038-80a2059c5097" 1025 | version = "1.5.9" 1026 | 1027 | [[Widgets]] 1028 | deps = ["Colors", "Dates", "Observables", "OrderedCollections"] 1029 | git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" 1030 | uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" 1031 | version = "0.6.6" 1032 | 1033 | [[XML2_jll]] 1034 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] 1035 | git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" 1036 | uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" 1037 | version = "2.10.3+0" 1038 | 1039 | [[XSLT_jll]] 1040 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] 1041 | git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" 1042 | uuid = "aed1982a-8fda-507f-9586-7b0439959a61" 1043 | version = "1.1.34+0" 1044 | 1045 | [[Xorg_libX11_jll]] 1046 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] 1047 | git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" 1048 | uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" 1049 | version = "1.6.9+4" 1050 | 1051 | [[Xorg_libXau_jll]] 1052 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1053 | git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" 1054 | uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" 1055 | version = "1.0.9+4" 1056 | 1057 | [[Xorg_libXcursor_jll]] 1058 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] 1059 | git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" 1060 | uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" 1061 | version = "1.2.0+4" 1062 | 1063 | [[Xorg_libXdmcp_jll]] 1064 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1065 | git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" 1066 | uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" 1067 | version = "1.1.3+4" 1068 | 1069 | [[Xorg_libXext_jll]] 1070 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1071 | git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" 1072 | uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" 1073 | version = "1.3.4+4" 1074 | 1075 | [[Xorg_libXfixes_jll]] 1076 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1077 | git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" 1078 | uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" 1079 | version = "5.0.3+4" 1080 | 1081 | [[Xorg_libXi_jll]] 1082 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] 1083 | git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" 1084 | uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" 1085 | version = "1.7.10+4" 1086 | 1087 | [[Xorg_libXinerama_jll]] 1088 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] 1089 | git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" 1090 | uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" 1091 | version = "1.1.4+4" 1092 | 1093 | [[Xorg_libXrandr_jll]] 1094 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] 1095 | git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" 1096 | uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" 1097 | version = "1.5.2+4" 1098 | 1099 | [[Xorg_libXrender_jll]] 1100 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1101 | git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" 1102 | uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" 1103 | version = "0.9.10+4" 1104 | 1105 | [[Xorg_libpthread_stubs_jll]] 1106 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1107 | git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" 1108 | uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" 1109 | version = "0.1.0+3" 1110 | 1111 | [[Xorg_libxcb_jll]] 1112 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] 1113 | git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" 1114 | uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" 1115 | version = "1.13.0+3" 1116 | 1117 | [[Xorg_libxkbfile_jll]] 1118 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1119 | git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" 1120 | uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" 1121 | version = "1.1.0+4" 1122 | 1123 | [[Xorg_xcb_util_image_jll]] 1124 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1125 | git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" 1126 | uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" 1127 | version = "0.4.0+1" 1128 | 1129 | [[Xorg_xcb_util_jll]] 1130 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] 1131 | git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" 1132 | uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" 1133 | version = "0.4.0+1" 1134 | 1135 | [[Xorg_xcb_util_keysyms_jll]] 1136 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1137 | git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" 1138 | uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" 1139 | version = "0.4.0+1" 1140 | 1141 | [[Xorg_xcb_util_renderutil_jll]] 1142 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1143 | git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" 1144 | uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" 1145 | version = "0.3.9+1" 1146 | 1147 | [[Xorg_xcb_util_wm_jll]] 1148 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1149 | git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" 1150 | uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" 1151 | version = "0.4.1+1" 1152 | 1153 | [[Xorg_xkbcomp_jll]] 1154 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] 1155 | git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" 1156 | uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" 1157 | version = "1.4.2+4" 1158 | 1159 | [[Xorg_xkeyboard_config_jll]] 1160 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] 1161 | git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" 1162 | uuid = "33bec58e-1273-512f-9401-5d533626f822" 1163 | version = "2.27.0+4" 1164 | 1165 | [[Xorg_xtrans_jll]] 1166 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1167 | git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" 1168 | uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" 1169 | version = "1.4.0+3" 1170 | 1171 | [[Zlib_jll]] 1172 | deps = ["Libdl"] 1173 | uuid = "83775a58-1f1d-513f-b197-d71354ab007a" 1174 | 1175 | [[Zstd_jll]] 1176 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 1177 | git-tree-sha1 = "c6edfe154ad7b313c01aceca188c05c835c67360" 1178 | uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" 1179 | version = "1.5.4+0" 1180 | 1181 | [[fzf_jll]] 1182 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1183 | git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" 1184 | uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" 1185 | version = "0.29.0+0" 1186 | 1187 | [[libaom_jll]] 1188 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1189 | git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" 1190 | uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" 1191 | version = "3.4.0+0" 1192 | 1193 | [[libass_jll]] 1194 | deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 1195 | git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" 1196 | uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" 1197 | version = "0.15.1+0" 1198 | 1199 | [[libblastrampoline_jll]] 1200 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1201 | git-tree-sha1 = "576c27f2c23add3ce8f10717d72fbaee6fe120e9" 1202 | uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" 1203 | version = "3.1.0+2" 1204 | 1205 | [[libfdk_aac_jll]] 1206 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1207 | git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" 1208 | uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" 1209 | version = "2.0.2+0" 1210 | 1211 | [[libpng_jll]] 1212 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 1213 | git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" 1214 | uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" 1215 | version = "1.6.38+0" 1216 | 1217 | [[libvorbis_jll]] 1218 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] 1219 | git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" 1220 | uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" 1221 | version = "1.3.7+1" 1222 | 1223 | [[nghttp2_jll]] 1224 | deps = ["Artifacts", "Libdl"] 1225 | uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" 1226 | 1227 | [[p7zip_jll]] 1228 | deps = ["Artifacts", "Libdl"] 1229 | uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" 1230 | 1231 | [[x264_jll]] 1232 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1233 | git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" 1234 | uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" 1235 | version = "2021.5.5+0" 1236 | 1237 | [[x265_jll]] 1238 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1239 | git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" 1240 | uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" 1241 | version = "3.5.0+0" 1242 | 1243 | [[xkbcommon_jll]] 1244 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] 1245 | git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" 1246 | uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" 1247 | version = "1.4.1+0" 1248 | -------------------------------------------------------------------------------- /2_17_recitation/Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | Convex = "f65535da-76fb-5f13-bab9-19810c17039a" 3 | ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199" 4 | ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" 5 | Hypatia = "b99e6be6-89ff-11e8-14f8-45c827f4f8f2" 6 | JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" 7 | MeshCat = "283c5d60-a78f-5afe-a0af-af636b173e11" 8 | Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" 9 | ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" 10 | -------------------------------------------------------------------------------- /2_24_recitation/2_24_recitation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Optimal-Control-16-745/recitations-2023/d864eba9a3e35686644c3258346c35685b315e5f/2_24_recitation/2_24_recitation.pdf -------------------------------------------------------------------------------- /2_24_recitation/Manifest.toml: -------------------------------------------------------------------------------- 1 | # This file is machine-generated - editing it directly is not advised 2 | 3 | [[AMD]] 4 | deps = ["Libdl", "LinearAlgebra", "SparseArrays", "Test"] 5 | git-tree-sha1 = "00163dc02b882ca5ec032400b919e5f5011dbd31" 6 | uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" 7 | version = "0.5.0" 8 | 9 | [[AbstractTrees]] 10 | git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" 11 | uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" 12 | version = "0.4.4" 13 | 14 | [[Adapt]] 15 | deps = ["LinearAlgebra"] 16 | git-tree-sha1 = "0310e08cb19f5da31d08341c6120c047598f5b9c" 17 | uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" 18 | version = "3.5.0" 19 | 20 | [[ArgTools]] 21 | uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" 22 | 23 | [[Artifacts]] 24 | uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" 25 | 26 | [[AssetRegistry]] 27 | deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] 28 | git-tree-sha1 = "b25e88db7944f98789130d7b503276bc34bc098e" 29 | uuid = "bf4720bc-e11a-5d0c-854e-bdca1663c893" 30 | version = "0.1.0" 31 | 32 | [[Base64]] 33 | uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" 34 | 35 | [[BenchmarkTools]] 36 | deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] 37 | git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" 38 | uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" 39 | version = "1.3.2" 40 | 41 | [[BinDeps]] 42 | deps = ["Libdl", "Pkg", "SHA", "URIParser", "Unicode"] 43 | git-tree-sha1 = "1289b57e8cf019aede076edab0587eb9644175bd" 44 | uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" 45 | version = "1.0.2" 46 | 47 | [[Blink]] 48 | deps = ["Base64", "BinDeps", "Distributed", "JSExpr", "JSON", "Lazy", "Logging", "MacroTools", "Mustache", "Mux", "Reexport", "Sockets", "WebIO", "WebSockets"] 49 | git-tree-sha1 = "08d0b679fd7caa49e2bca9214b131289e19808c0" 50 | uuid = "ad839575-38b3-5650-b840-f874b8c74a25" 51 | version = "0.12.5" 52 | 53 | [[Bzip2_jll]] 54 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 55 | git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" 56 | uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" 57 | version = "1.0.8+0" 58 | 59 | [[CEnum]] 60 | git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" 61 | uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" 62 | version = "0.4.2" 63 | 64 | [[COSMO]] 65 | deps = ["AMD", "COSMOAccelerators", "DataStructures", "IterTools", "LinearAlgebra", "MathOptInterface", "Pkg", "Printf", "QDLDL", "Random", "Reexport", "Requires", "SparseArrays", "Statistics", "SuiteSparse", "Test", "UnsafeArrays"] 66 | git-tree-sha1 = "fc2f86234831163a6a29f70f083f15e1eb941859" 67 | uuid = "1e616198-aa4e-51ec-90a2-23f7fbd31d8d" 68 | version = "0.8.6" 69 | 70 | [[COSMOAccelerators]] 71 | deps = ["LinearAlgebra", "Random", "SparseArrays", "Test"] 72 | git-tree-sha1 = "b1153b40dd95f856e379f25ae335755ecc24298e" 73 | uuid = "bbd8fffe-5ad0-4d78-a55e-85575421b4ac" 74 | version = "0.1.0" 75 | 76 | [[Cairo_jll]] 77 | deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] 78 | git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" 79 | uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" 80 | version = "1.16.1+1" 81 | 82 | [[Calculus]] 83 | deps = ["LinearAlgebra"] 84 | git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" 85 | uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" 86 | version = "0.5.1" 87 | 88 | [[Cassette]] 89 | git-tree-sha1 = "a70f220ea09ec61401745ff338f8fb340420165c" 90 | uuid = "7057c7e9-c182-5462-911a-8362d720325c" 91 | version = "0.3.11" 92 | 93 | [[ChainRulesCore]] 94 | deps = ["Compat", "LinearAlgebra", "SparseArrays"] 95 | git-tree-sha1 = "c6d890a52d2c4d55d326439580c3b8d0875a77d9" 96 | uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" 97 | version = "1.15.7" 98 | 99 | [[ChangesOfVariables]] 100 | deps = ["ChainRulesCore", "LinearAlgebra", "Test"] 101 | git-tree-sha1 = "485193efd2176b88e6622a39a246f8c5b600e74e" 102 | uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" 103 | version = "0.1.6" 104 | 105 | [[CodecBzip2]] 106 | deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] 107 | git-tree-sha1 = "2e62a725210ce3c3c2e1a3080190e7ca491f18d7" 108 | uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" 109 | version = "0.7.2" 110 | 111 | [[CodecZlib]] 112 | deps = ["TranscodingStreams", "Zlib_jll"] 113 | git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" 114 | uuid = "944b1d66-785c-5afd-91f1-9de20f533193" 115 | version = "0.7.1" 116 | 117 | [[ColorSchemes]] 118 | deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Random", "SnoopPrecompile"] 119 | git-tree-sha1 = "aa3edc8f8dea6cbfa176ee12f7c2fc82f0608ed3" 120 | uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" 121 | version = "3.20.0" 122 | 123 | [[ColorTypes]] 124 | deps = ["FixedPointNumbers", "Random"] 125 | git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" 126 | uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" 127 | version = "0.11.4" 128 | 129 | [[ColorVectorSpace]] 130 | deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] 131 | git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" 132 | uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" 133 | version = "0.9.10" 134 | 135 | [[Colors]] 136 | deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] 137 | git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" 138 | uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" 139 | version = "0.12.10" 140 | 141 | [[CommonSubexpressions]] 142 | deps = ["MacroTools", "Test"] 143 | git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" 144 | uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" 145 | version = "0.3.0" 146 | 147 | [[Compat]] 148 | deps = ["Dates", "LinearAlgebra", "UUIDs"] 149 | git-tree-sha1 = "61fdd77467a5c3ad071ef8277ac6bd6af7dd4c04" 150 | uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" 151 | version = "4.6.0" 152 | 153 | [[CompilerSupportLibraries_jll]] 154 | deps = ["Artifacts", "Libdl"] 155 | uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" 156 | 157 | [[Contour]] 158 | git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" 159 | uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" 160 | version = "0.6.2" 161 | 162 | [[Convex]] 163 | deps = ["AbstractTrees", "BenchmarkTools", "LDLFactorizations", "LinearAlgebra", "MathOptInterface", "OrderedCollections", "SparseArrays", "Test"] 164 | git-tree-sha1 = "af4188609c0620ed4b0e4493ed416d3c8b2dadeb" 165 | uuid = "f65535da-76fb-5f13-bab9-19810c17039a" 166 | version = "0.15.3" 167 | 168 | [[CoordinateTransformations]] 169 | deps = ["LinearAlgebra", "StaticArrays"] 170 | git-tree-sha1 = "681ea870b918e7cff7111da58791d7f718067a19" 171 | uuid = "150eb455-5306-5404-9cee-2592286d6298" 172 | version = "0.6.2" 173 | 174 | [[DataAPI]] 175 | git-tree-sha1 = "e8119c1a33d267e16108be441a287a6981ba1630" 176 | uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" 177 | version = "1.14.0" 178 | 179 | [[DataStructures]] 180 | deps = ["Compat", "InteractiveUtils", "OrderedCollections"] 181 | git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" 182 | uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" 183 | version = "0.18.13" 184 | 185 | [[DataValueInterfaces]] 186 | git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" 187 | uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" 188 | version = "1.0.0" 189 | 190 | [[Dates]] 191 | deps = ["Printf"] 192 | uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" 193 | 194 | [[DelimitedFiles]] 195 | deps = ["Mmap"] 196 | uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" 197 | 198 | [[DiffResults]] 199 | deps = ["StaticArraysCore"] 200 | git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" 201 | uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" 202 | version = "1.1.0" 203 | 204 | [[DiffRules]] 205 | deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] 206 | git-tree-sha1 = "a4ad7ef19d2cdc2eff57abbbe68032b1cd0bd8f8" 207 | uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" 208 | version = "1.13.0" 209 | 210 | [[Distributed]] 211 | deps = ["Random", "Serialization", "Sockets"] 212 | uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" 213 | 214 | [[DocStringExtensions]] 215 | deps = ["LibGit2"] 216 | git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" 217 | uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" 218 | version = "0.8.6" 219 | 220 | [[Downloads]] 221 | deps = ["ArgTools", "LibCURL", "NetworkOptions"] 222 | uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" 223 | 224 | [[DualNumbers]] 225 | deps = ["Calculus", "NaNMath", "SpecialFunctions"] 226 | git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" 227 | uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" 228 | version = "0.6.8" 229 | 230 | [[ECOS]] 231 | deps = ["CEnum", "ECOS_jll", "MathOptInterface"] 232 | git-tree-sha1 = "a10ccdc509a938d02b32904edb037b7045c49665" 233 | uuid = "e2685f51-7e38-5353-a97d-a921fd2c8199" 234 | version = "1.1.0" 235 | 236 | [[ECOS_jll]] 237 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 238 | git-tree-sha1 = "5f84034ddd642cf595e57d46ea2f085321c260e4" 239 | uuid = "c2c64177-6a8e-5dca-99a7-64895ad7445f" 240 | version = "200.0.800+0" 241 | 242 | [[EarCut_jll]] 243 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 244 | git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" 245 | uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" 246 | version = "2.2.4+0" 247 | 248 | [[Expat_jll]] 249 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 250 | git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d" 251 | uuid = "2e619515-83b5-522b-bb60-26c02a35a201" 252 | version = "2.4.8+0" 253 | 254 | [[Extents]] 255 | git-tree-sha1 = "5e1e4c53fa39afe63a7d356e30452249365fba99" 256 | uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" 257 | version = "0.1.1" 258 | 259 | [[FFMPEG]] 260 | deps = ["FFMPEG_jll"] 261 | git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" 262 | uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" 263 | version = "0.4.1" 264 | 265 | [[FFMPEG_jll]] 266 | deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] 267 | git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" 268 | uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" 269 | version = "4.4.2+2" 270 | 271 | [[FileIO]] 272 | deps = ["Pkg", "Requires", "UUIDs"] 273 | git-tree-sha1 = "7be5f99f7d15578798f338f5433b6c432ea8037b" 274 | uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" 275 | version = "1.16.0" 276 | 277 | [[FileWatching]] 278 | uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" 279 | 280 | [[FixedPointNumbers]] 281 | deps = ["Statistics"] 282 | git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" 283 | uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" 284 | version = "0.8.4" 285 | 286 | [[Fontconfig_jll]] 287 | deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] 288 | git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" 289 | uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" 290 | version = "2.13.93+0" 291 | 292 | [[Formatting]] 293 | deps = ["Printf"] 294 | git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" 295 | uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" 296 | version = "0.4.2" 297 | 298 | [[ForwardDiff]] 299 | deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] 300 | git-tree-sha1 = "a69dd6db8a809f78846ff259298678f0d6212180" 301 | uuid = "f6369f11-7733-5829-9624-2563aa707210" 302 | version = "0.10.34" 303 | 304 | [[FreeType2_jll]] 305 | deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 306 | git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" 307 | uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" 308 | version = "2.10.4+0" 309 | 310 | [[FriBidi_jll]] 311 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 312 | git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" 313 | uuid = "559328eb-81f9-559d-9380-de523a88c83c" 314 | version = "1.0.10+0" 315 | 316 | [[FunctionalCollections]] 317 | deps = ["Test"] 318 | git-tree-sha1 = "04cb9cfaa6ba5311973994fe3496ddec19b6292a" 319 | uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" 320 | version = "0.5.0" 321 | 322 | [[GLFW_jll]] 323 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] 324 | git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" 325 | uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" 326 | version = "3.3.8+0" 327 | 328 | [[GPUArraysCore]] 329 | deps = ["Adapt"] 330 | git-tree-sha1 = "1cd7f0af1aa58abc02ea1d872953a97359cb87fa" 331 | uuid = "46192b85-c4d5-4398-a991-12ede77f4527" 332 | version = "0.1.4" 333 | 334 | [[GR]] 335 | deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] 336 | git-tree-sha1 = "660b2ea2ec2b010bb02823c6d0ff6afd9bdc5c16" 337 | uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" 338 | version = "0.71.7" 339 | 340 | [[GR_jll]] 341 | deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] 342 | git-tree-sha1 = "d5e1fd17ac7f3aa4c5287a61ee28d4f8b8e98873" 343 | uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" 344 | version = "0.71.7+0" 345 | 346 | [[GeoInterface]] 347 | deps = ["Extents"] 348 | git-tree-sha1 = "e07a1b98ed72e3cdd02c6ceaab94b8a606faca40" 349 | uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" 350 | version = "1.2.1" 351 | 352 | [[GeometryBasics]] 353 | deps = ["EarCut_jll", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] 354 | git-tree-sha1 = "fe9aea4ed3ec6afdfbeb5a4f39a2208909b162a6" 355 | uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" 356 | version = "0.4.5" 357 | 358 | [[Gettext_jll]] 359 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] 360 | git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" 361 | uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" 362 | version = "0.21.0+0" 363 | 364 | [[Glib_jll]] 365 | deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] 366 | git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" 367 | uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" 368 | version = "2.74.0+2" 369 | 370 | [[Graphite2_jll]] 371 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 372 | git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" 373 | uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" 374 | version = "1.3.14+0" 375 | 376 | [[Grisu]] 377 | git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" 378 | uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" 379 | version = "1.0.2" 380 | 381 | [[HTTP]] 382 | deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] 383 | git-tree-sha1 = "0fa77022fe4b511826b39c894c90daf5fce3334a" 384 | uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" 385 | version = "0.9.17" 386 | 387 | [[HarfBuzz_jll]] 388 | deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] 389 | git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" 390 | uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" 391 | version = "2.8.1+1" 392 | 393 | [[Hiccup]] 394 | deps = ["MacroTools", "Test"] 395 | git-tree-sha1 = "6187bb2d5fcbb2007c39e7ac53308b0d371124bd" 396 | uuid = "9fb69e20-1954-56bb-a84f-559cc56a8ff7" 397 | version = "0.2.2" 398 | 399 | [[IniFile]] 400 | git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" 401 | uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" 402 | version = "0.5.1" 403 | 404 | [[InteractiveUtils]] 405 | deps = ["Markdown"] 406 | uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" 407 | 408 | [[InverseFunctions]] 409 | deps = ["Test"] 410 | git-tree-sha1 = "49510dfcb407e572524ba94aeae2fced1f3feb0f" 411 | uuid = "3587e190-3f89-42d0-90ee-14403ec27112" 412 | version = "0.1.8" 413 | 414 | [[IrrationalConstants]] 415 | git-tree-sha1 = "3868cac300a188a7c3a74f9abd930e52ce1a7a51" 416 | uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" 417 | version = "0.2.1" 418 | 419 | [[IterTools]] 420 | git-tree-sha1 = "fa6287a4469f5e048d763df38279ee729fbd44e5" 421 | uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" 422 | version = "1.4.0" 423 | 424 | [[IteratorInterfaceExtensions]] 425 | git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" 426 | uuid = "82899510-4779-5014-852e-03e436cf321d" 427 | version = "1.0.0" 428 | 429 | [[JLD2]] 430 | deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "TranscodingStreams", "UUIDs"] 431 | git-tree-sha1 = "c3244ef42b7d4508c638339df1bdbf4353e144db" 432 | uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" 433 | version = "0.4.30" 434 | 435 | [[JLFzf]] 436 | deps = ["Pipe", "REPL", "Random", "fzf_jll"] 437 | git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" 438 | uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" 439 | version = "0.1.5" 440 | 441 | [[JLLWrappers]] 442 | deps = ["Preferences"] 443 | git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" 444 | uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" 445 | version = "1.4.1" 446 | 447 | [[JSExpr]] 448 | deps = ["JSON", "MacroTools", "Observables", "WebIO"] 449 | git-tree-sha1 = "b413a73785b98474d8af24fd4c8a975e31df3658" 450 | uuid = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" 451 | version = "0.5.4" 452 | 453 | [[JSON]] 454 | deps = ["Dates", "Mmap", "Parsers", "Unicode"] 455 | git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" 456 | uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" 457 | version = "0.21.3" 458 | 459 | [[JpegTurbo_jll]] 460 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 461 | git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" 462 | uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" 463 | version = "2.1.91+0" 464 | 465 | [[LAME_jll]] 466 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 467 | git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" 468 | uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" 469 | version = "3.100.1+0" 470 | 471 | [[LDLFactorizations]] 472 | deps = ["AMD", "LinearAlgebra", "SparseArrays", "Test"] 473 | git-tree-sha1 = "cbf4b646f82bfc58bb48bcca9dcce2eb88da4cd1" 474 | uuid = "40e66cde-538c-5869-a4ad-c39174c6795b" 475 | version = "0.10.0" 476 | 477 | [[LERC_jll]] 478 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 479 | git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" 480 | uuid = "88015f11-f218-50d7-93a8-a6af411a945d" 481 | version = "3.0.0+1" 482 | 483 | [[LZO_jll]] 484 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 485 | git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" 486 | uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" 487 | version = "2.10.1+0" 488 | 489 | [[LaTeXStrings]] 490 | git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" 491 | uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" 492 | version = "1.3.0" 493 | 494 | [[Latexify]] 495 | deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] 496 | git-tree-sha1 = "2422f47b34d4b127720a18f86fa7b1aa2e141f29" 497 | uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" 498 | version = "0.15.18" 499 | 500 | [[Lazy]] 501 | deps = ["MacroTools"] 502 | git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" 503 | uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" 504 | version = "0.15.1" 505 | 506 | [[LibCURL]] 507 | deps = ["LibCURL_jll", "MozillaCACerts_jll"] 508 | uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" 509 | 510 | [[LibCURL_jll]] 511 | deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] 512 | uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" 513 | 514 | [[LibGit2]] 515 | deps = ["Base64", "NetworkOptions", "Printf", "SHA"] 516 | uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" 517 | 518 | [[LibSSH2_jll]] 519 | deps = ["Artifacts", "Libdl", "MbedTLS_jll"] 520 | uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" 521 | 522 | [[Libdl]] 523 | uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" 524 | 525 | [[Libffi_jll]] 526 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 527 | git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" 528 | uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" 529 | version = "3.2.2+1" 530 | 531 | [[Libgcrypt_jll]] 532 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] 533 | git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" 534 | uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" 535 | version = "1.8.7+0" 536 | 537 | [[Libglvnd_jll]] 538 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] 539 | git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" 540 | uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" 541 | version = "1.6.0+0" 542 | 543 | [[Libgpg_error_jll]] 544 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 545 | git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" 546 | uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" 547 | version = "1.42.0+0" 548 | 549 | [[Libiconv_jll]] 550 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 551 | git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" 552 | uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" 553 | version = "1.16.1+2" 554 | 555 | [[Libmount_jll]] 556 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 557 | git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" 558 | uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" 559 | version = "2.35.0+0" 560 | 561 | [[Libtiff_jll]] 562 | deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] 563 | git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713" 564 | uuid = "89763e89-9b03-5906-acba-b20f662cd828" 565 | version = "4.4.0+0" 566 | 567 | [[Libuuid_jll]] 568 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 569 | git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" 570 | uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" 571 | version = "2.36.0+0" 572 | 573 | [[LinearAlgebra]] 574 | deps = ["Libdl", "libblastrampoline_jll"] 575 | uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" 576 | 577 | [[LogExpFunctions]] 578 | deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] 579 | git-tree-sha1 = "0a1b7c2863e44523180fdb3146534e265a91870b" 580 | uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" 581 | version = "0.3.23" 582 | 583 | [[Logging]] 584 | uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" 585 | 586 | [[MacroTools]] 587 | deps = ["Markdown", "Random"] 588 | git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" 589 | uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" 590 | version = "0.5.10" 591 | 592 | [[Markdown]] 593 | deps = ["Base64"] 594 | uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" 595 | 596 | [[MathOptInterface]] 597 | deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "Printf", "SnoopPrecompile", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] 598 | git-tree-sha1 = "2a58c70db9287898dcc76b8394f0ff601c11b270" 599 | uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" 600 | version = "1.12.0" 601 | 602 | [[MbedTLS]] 603 | deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] 604 | git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" 605 | uuid = "739be429-bea8-5141-9913-cc70e7f3736d" 606 | version = "1.1.7" 607 | 608 | [[MbedTLS_jll]] 609 | deps = ["Artifacts", "Libdl"] 610 | uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" 611 | 612 | [[Measures]] 613 | git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" 614 | uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" 615 | version = "0.3.2" 616 | 617 | [[MeshCat]] 618 | deps = ["Base64", "BinDeps", "Blink", "Cassette", "Colors", "CoordinateTransformations", "DocStringExtensions", "FFMPEG", "GeometryBasics", "LinearAlgebra", "Logging", "MsgPack", "Mux", "Parameters", "Pkg", "Requires", "Rotations", "Sockets", "StaticArrays", "UUIDs", "WebSockets"] 619 | git-tree-sha1 = "bd707ee5273b7778554b0b22b3071cf97f71e1f4" 620 | uuid = "283c5d60-a78f-5afe-a0af-af636b173e11" 621 | version = "0.14.2" 622 | 623 | [[Missings]] 624 | deps = ["DataAPI"] 625 | git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" 626 | uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" 627 | version = "1.1.0" 628 | 629 | [[Mmap]] 630 | uuid = "a63ad114-7e13-5084-954f-fe012c677804" 631 | 632 | [[MozillaCACerts_jll]] 633 | uuid = "14a3606d-f60d-562e-9121-12d972cd8159" 634 | 635 | [[MsgPack]] 636 | deps = ["Serialization"] 637 | git-tree-sha1 = "fc8c15ca848b902015bd4a745d350f02cf791c2a" 638 | uuid = "99f44e22-a591-53d1-9472-aa23ef4bd671" 639 | version = "1.2.0" 640 | 641 | [[Mustache]] 642 | deps = ["Printf", "Tables"] 643 | git-tree-sha1 = "1e566ae913a57d0062ff1af54d2697b9344b99cd" 644 | uuid = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70" 645 | version = "1.0.14" 646 | 647 | [[MutableArithmetics]] 648 | deps = ["LinearAlgebra", "SparseArrays", "Test"] 649 | git-tree-sha1 = "3295d296288ab1a0a2528feb424b854418acff57" 650 | uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" 651 | version = "1.2.3" 652 | 653 | [[Mux]] 654 | deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "Pkg", "Sockets", "WebSockets"] 655 | git-tree-sha1 = "82dfb2cead9895e10ee1b0ca37a01088456c4364" 656 | uuid = "a975b10e-0019-58db-a62f-e48ff68538c9" 657 | version = "0.7.6" 658 | 659 | [[NaNMath]] 660 | deps = ["OpenLibm_jll"] 661 | git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" 662 | uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" 663 | version = "1.0.2" 664 | 665 | [[NetworkOptions]] 666 | uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" 667 | 668 | [[Observables]] 669 | git-tree-sha1 = "6862738f9796b3edc1c09d0890afce4eca9e7e93" 670 | uuid = "510215fc-4207-5dde-b226-833fc4488ee2" 671 | version = "0.5.4" 672 | 673 | [[Ogg_jll]] 674 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 675 | git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" 676 | uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" 677 | version = "1.3.5+1" 678 | 679 | [[OpenBLAS_jll]] 680 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] 681 | uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" 682 | 683 | [[OpenLibm_jll]] 684 | deps = ["Artifacts", "Libdl"] 685 | uuid = "05823500-19ac-5b8b-9628-191a04bc5112" 686 | 687 | [[OpenSSL_jll]] 688 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 689 | git-tree-sha1 = "9ff31d101d987eb9d66bd8b176ac7c277beccd09" 690 | uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" 691 | version = "1.1.20+0" 692 | 693 | [[OpenSpecFun_jll]] 694 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] 695 | git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" 696 | uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" 697 | version = "0.5.5+0" 698 | 699 | [[Opus_jll]] 700 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 701 | git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" 702 | uuid = "91d4177d-7536-5919-b921-800302f37372" 703 | version = "1.3.2+0" 704 | 705 | [[OrderedCollections]] 706 | git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" 707 | uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" 708 | version = "1.4.1" 709 | 710 | [[PCRE2_jll]] 711 | deps = ["Artifacts", "Libdl"] 712 | uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" 713 | 714 | [[Parameters]] 715 | deps = ["OrderedCollections", "UnPack"] 716 | git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" 717 | uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" 718 | version = "0.12.3" 719 | 720 | [[Parsers]] 721 | deps = ["Dates", "SnoopPrecompile"] 722 | git-tree-sha1 = "6f4fbcd1ad45905a5dee3f4256fabb49aa2110c6" 723 | uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" 724 | version = "2.5.7" 725 | 726 | [[Pidfile]] 727 | deps = ["FileWatching", "Test"] 728 | git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" 729 | uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" 730 | version = "1.3.0" 731 | 732 | [[Pipe]] 733 | git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" 734 | uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" 735 | version = "1.3.0" 736 | 737 | [[Pixman_jll]] 738 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 739 | git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" 740 | uuid = "30392449-352a-5448-841d-b1acce4e97dc" 741 | version = "0.40.1+0" 742 | 743 | [[Pkg]] 744 | deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] 745 | uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" 746 | 747 | [[PlotThemes]] 748 | deps = ["PlotUtils", "Statistics"] 749 | git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" 750 | uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" 751 | version = "3.1.0" 752 | 753 | [[PlotUtils]] 754 | deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "SnoopPrecompile", "Statistics"] 755 | git-tree-sha1 = "c95373e73290cf50a8a22c3375e4625ded5c5280" 756 | uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" 757 | version = "1.3.4" 758 | 759 | [[Plots]] 760 | deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SnoopPrecompile", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"] 761 | git-tree-sha1 = "8ac949bd0ebc46a44afb1fdca1094554a84b086e" 762 | uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" 763 | version = "1.38.5" 764 | 765 | [[Preferences]] 766 | deps = ["TOML"] 767 | git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" 768 | uuid = "21216c6a-2e73-6563-6e65-726566657250" 769 | version = "1.3.0" 770 | 771 | [[Printf]] 772 | deps = ["Unicode"] 773 | uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" 774 | 775 | [[Profile]] 776 | deps = ["Printf"] 777 | uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" 778 | 779 | [[ProgressMeter]] 780 | deps = ["Distributed", "Printf"] 781 | git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9" 782 | uuid = "92933f4c-e287-5a05-a399-4b506db050ca" 783 | version = "1.7.2" 784 | 785 | [[QDLDL]] 786 | deps = ["AMD", "LinearAlgebra", "SparseArrays"] 787 | git-tree-sha1 = "aa1a32b0917794199aeeb15d6fba46ca02450306" 788 | uuid = "bfc457fd-c171-5ab7-bd9e-d5dbfc242d63" 789 | version = "0.2.1" 790 | 791 | [[Qt5Base_jll]] 792 | deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] 793 | git-tree-sha1 = "0c03844e2231e12fda4d0086fd7cbe4098ee8dc5" 794 | uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" 795 | version = "5.15.3+2" 796 | 797 | [[Quaternions]] 798 | deps = ["DualNumbers", "LinearAlgebra", "Random"] 799 | git-tree-sha1 = "0b345302b17b0e694092621915de0e0dc7443a1a" 800 | uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0" 801 | version = "0.4.9" 802 | 803 | [[REPL]] 804 | deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] 805 | uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" 806 | 807 | [[Random]] 808 | deps = ["SHA", "Serialization"] 809 | uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" 810 | 811 | [[RecipesBase]] 812 | deps = ["SnoopPrecompile"] 813 | git-tree-sha1 = "261dddd3b862bd2c940cf6ca4d1c8fe593e457c8" 814 | uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" 815 | version = "1.3.3" 816 | 817 | [[RecipesPipeline]] 818 | deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase", "SnoopPrecompile"] 819 | git-tree-sha1 = "e974477be88cb5e3040009f3767611bc6357846f" 820 | uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" 821 | version = "0.6.11" 822 | 823 | [[Reexport]] 824 | git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" 825 | uuid = "189a3867-3050-52da-a836-e630ba90ab69" 826 | version = "1.2.2" 827 | 828 | [[RelocatableFolders]] 829 | deps = ["SHA", "Scratch"] 830 | git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" 831 | uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" 832 | version = "1.0.0" 833 | 834 | [[Requires]] 835 | deps = ["UUIDs"] 836 | git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" 837 | uuid = "ae029012-a4dd-5104-9daa-d747884805df" 838 | version = "1.3.0" 839 | 840 | [[Rotations]] 841 | deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays", "Statistics"] 842 | git-tree-sha1 = "2fa87d198bc5356c649b92109ed3ce46ee1eb89d" 843 | uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc" 844 | version = "1.1.1" 845 | 846 | [[SHA]] 847 | uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" 848 | 849 | [[Scratch]] 850 | deps = ["Dates"] 851 | git-tree-sha1 = "f94f779c94e58bf9ea243e77a37e16d9de9126bd" 852 | uuid = "6c6a2e73-6563-6170-7368-637461726353" 853 | version = "1.1.1" 854 | 855 | [[Serialization]] 856 | uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" 857 | 858 | [[Showoff]] 859 | deps = ["Dates", "Grisu"] 860 | git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" 861 | uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" 862 | version = "1.0.3" 863 | 864 | [[SnoopPrecompile]] 865 | deps = ["Preferences"] 866 | git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" 867 | uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" 868 | version = "1.0.3" 869 | 870 | [[Sockets]] 871 | uuid = "6462fe0b-24de-5631-8697-dd941f90decc" 872 | 873 | [[SortingAlgorithms]] 874 | deps = ["DataStructures"] 875 | git-tree-sha1 = "a4ada03f999bd01b3a25dcaa30b2d929fe537e00" 876 | uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" 877 | version = "1.1.0" 878 | 879 | [[SparseArrays]] 880 | deps = ["LinearAlgebra", "Random"] 881 | uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" 882 | 883 | [[SpecialFunctions]] 884 | deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] 885 | git-tree-sha1 = "ef28127915f4229c971eb43f3fc075dd3fe91880" 886 | uuid = "276daf66-3868-5448-9aa4-cd146d93841b" 887 | version = "2.2.0" 888 | 889 | [[StaticArrays]] 890 | deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] 891 | git-tree-sha1 = "2d7d9e1ddadc8407ffd460e24218e37ef52dd9a3" 892 | uuid = "90137ffa-7385-5640-81b9-e52037218182" 893 | version = "1.5.16" 894 | 895 | [[StaticArraysCore]] 896 | git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" 897 | uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" 898 | version = "1.4.0" 899 | 900 | [[Statistics]] 901 | deps = ["LinearAlgebra", "SparseArrays"] 902 | uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" 903 | 904 | [[StatsAPI]] 905 | deps = ["LinearAlgebra"] 906 | git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6" 907 | uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" 908 | version = "1.5.0" 909 | 910 | [[StatsBase]] 911 | deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] 912 | git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" 913 | uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" 914 | version = "0.33.21" 915 | 916 | [[StructArrays]] 917 | deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] 918 | git-tree-sha1 = "b03a3b745aa49b566f128977a7dd1be8711c5e71" 919 | uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" 920 | version = "0.6.14" 921 | 922 | [[SuiteSparse]] 923 | deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] 924 | uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" 925 | 926 | [[TOML]] 927 | deps = ["Dates"] 928 | uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" 929 | 930 | [[TableTraits]] 931 | deps = ["IteratorInterfaceExtensions"] 932 | git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" 933 | uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" 934 | version = "1.0.1" 935 | 936 | [[Tables]] 937 | deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] 938 | git-tree-sha1 = "c79322d36826aa2f4fd8ecfa96ddb47b174ac78d" 939 | uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" 940 | version = "1.10.0" 941 | 942 | [[Tar]] 943 | deps = ["ArgTools", "SHA"] 944 | uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" 945 | 946 | [[TensorCore]] 947 | deps = ["LinearAlgebra"] 948 | git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" 949 | uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" 950 | version = "0.1.1" 951 | 952 | [[Test]] 953 | deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] 954 | uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" 955 | 956 | [[TranscodingStreams]] 957 | deps = ["Random", "Test"] 958 | git-tree-sha1 = "94f38103c984f89cf77c402f2a68dbd870f8165f" 959 | uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" 960 | version = "0.9.11" 961 | 962 | [[URIParser]] 963 | deps = ["Unicode"] 964 | git-tree-sha1 = "53a9f49546b8d2dd2e688d216421d050c9a31d0d" 965 | uuid = "30578b45-9adc-5946-b283-645ec420af67" 966 | version = "0.4.1" 967 | 968 | [[URIs]] 969 | git-tree-sha1 = "074f993b0ca030848b897beff716d93aca60f06a" 970 | uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" 971 | version = "1.4.2" 972 | 973 | [[UUIDs]] 974 | deps = ["Random", "SHA"] 975 | uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" 976 | 977 | [[UnPack]] 978 | git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" 979 | uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" 980 | version = "1.0.2" 981 | 982 | [[Unicode]] 983 | uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" 984 | 985 | [[UnicodeFun]] 986 | deps = ["REPL"] 987 | git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" 988 | uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" 989 | version = "0.4.1" 990 | 991 | [[UnsafeArrays]] 992 | git-tree-sha1 = "3350f94f6caa02f324a23645bf524fc9334c7488" 993 | uuid = "c4a57d5a-5b31-53a6-b365-19f8c011fbd6" 994 | version = "1.0.4" 995 | 996 | [[Unzip]] 997 | git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" 998 | uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" 999 | version = "0.2.0" 1000 | 1001 | [[Wayland_jll]] 1002 | deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] 1003 | git-tree-sha1 = "ed8d92d9774b077c53e1da50fd81a36af3744c1c" 1004 | uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" 1005 | version = "1.21.0+0" 1006 | 1007 | [[Wayland_protocols_jll]] 1008 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1009 | git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" 1010 | uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" 1011 | version = "1.25.0+0" 1012 | 1013 | [[WebIO]] 1014 | deps = ["AssetRegistry", "Base64", "Distributed", "FunctionalCollections", "JSON", "Logging", "Observables", "Pkg", "Random", "Requires", "Sockets", "UUIDs", "WebSockets", "Widgets"] 1015 | git-tree-sha1 = "976d0738247f155d0dcd77607edea644f069e1e9" 1016 | uuid = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" 1017 | version = "0.8.20" 1018 | 1019 | [[WebSockets]] 1020 | deps = ["Base64", "Dates", "HTTP", "Logging", "Sockets"] 1021 | git-tree-sha1 = "f91a602e25fe6b89afc93cf02a4ae18ee9384ce3" 1022 | uuid = "104b5d7c-a370-577a-8038-80a2059c5097" 1023 | version = "1.5.9" 1024 | 1025 | [[Widgets]] 1026 | deps = ["Colors", "Dates", "Observables", "OrderedCollections"] 1027 | git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" 1028 | uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" 1029 | version = "0.6.6" 1030 | 1031 | [[XML2_jll]] 1032 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] 1033 | git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" 1034 | uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" 1035 | version = "2.10.3+0" 1036 | 1037 | [[XSLT_jll]] 1038 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] 1039 | git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" 1040 | uuid = "aed1982a-8fda-507f-9586-7b0439959a61" 1041 | version = "1.1.34+0" 1042 | 1043 | [[Xorg_libX11_jll]] 1044 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] 1045 | git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" 1046 | uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" 1047 | version = "1.6.9+4" 1048 | 1049 | [[Xorg_libXau_jll]] 1050 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1051 | git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" 1052 | uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" 1053 | version = "1.0.9+4" 1054 | 1055 | [[Xorg_libXcursor_jll]] 1056 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] 1057 | git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" 1058 | uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" 1059 | version = "1.2.0+4" 1060 | 1061 | [[Xorg_libXdmcp_jll]] 1062 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1063 | git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" 1064 | uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" 1065 | version = "1.1.3+4" 1066 | 1067 | [[Xorg_libXext_jll]] 1068 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1069 | git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" 1070 | uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" 1071 | version = "1.3.4+4" 1072 | 1073 | [[Xorg_libXfixes_jll]] 1074 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1075 | git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" 1076 | uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" 1077 | version = "5.0.3+4" 1078 | 1079 | [[Xorg_libXi_jll]] 1080 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] 1081 | git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" 1082 | uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" 1083 | version = "1.7.10+4" 1084 | 1085 | [[Xorg_libXinerama_jll]] 1086 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] 1087 | git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" 1088 | uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" 1089 | version = "1.1.4+4" 1090 | 1091 | [[Xorg_libXrandr_jll]] 1092 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] 1093 | git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" 1094 | uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" 1095 | version = "1.5.2+4" 1096 | 1097 | [[Xorg_libXrender_jll]] 1098 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1099 | git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" 1100 | uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" 1101 | version = "0.9.10+4" 1102 | 1103 | [[Xorg_libpthread_stubs_jll]] 1104 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1105 | git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" 1106 | uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" 1107 | version = "0.1.0+3" 1108 | 1109 | [[Xorg_libxcb_jll]] 1110 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] 1111 | git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" 1112 | uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" 1113 | version = "1.13.0+3" 1114 | 1115 | [[Xorg_libxkbfile_jll]] 1116 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] 1117 | git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" 1118 | uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" 1119 | version = "1.1.0+4" 1120 | 1121 | [[Xorg_xcb_util_image_jll]] 1122 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1123 | git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" 1124 | uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" 1125 | version = "0.4.0+1" 1126 | 1127 | [[Xorg_xcb_util_jll]] 1128 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] 1129 | git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" 1130 | uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" 1131 | version = "0.4.0+1" 1132 | 1133 | [[Xorg_xcb_util_keysyms_jll]] 1134 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1135 | git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" 1136 | uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" 1137 | version = "0.4.0+1" 1138 | 1139 | [[Xorg_xcb_util_renderutil_jll]] 1140 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1141 | git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" 1142 | uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" 1143 | version = "0.3.9+1" 1144 | 1145 | [[Xorg_xcb_util_wm_jll]] 1146 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] 1147 | git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" 1148 | uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" 1149 | version = "0.4.1+1" 1150 | 1151 | [[Xorg_xkbcomp_jll]] 1152 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] 1153 | git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" 1154 | uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" 1155 | version = "1.4.2+4" 1156 | 1157 | [[Xorg_xkeyboard_config_jll]] 1158 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] 1159 | git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" 1160 | uuid = "33bec58e-1273-512f-9401-5d533626f822" 1161 | version = "2.27.0+4" 1162 | 1163 | [[Xorg_xtrans_jll]] 1164 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1165 | git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" 1166 | uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" 1167 | version = "1.4.0+3" 1168 | 1169 | [[Zlib_jll]] 1170 | deps = ["Libdl"] 1171 | uuid = "83775a58-1f1d-513f-b197-d71354ab007a" 1172 | 1173 | [[Zstd_jll]] 1174 | deps = ["Artifacts", "JLLWrappers", "Libdl"] 1175 | git-tree-sha1 = "c6edfe154ad7b313c01aceca188c05c835c67360" 1176 | uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" 1177 | version = "1.5.4+0" 1178 | 1179 | [[fzf_jll]] 1180 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1181 | git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" 1182 | uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" 1183 | version = "0.29.0+0" 1184 | 1185 | [[libaom_jll]] 1186 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1187 | git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" 1188 | uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" 1189 | version = "3.4.0+0" 1190 | 1191 | [[libass_jll]] 1192 | deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 1193 | git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" 1194 | uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" 1195 | version = "0.15.1+0" 1196 | 1197 | [[libblastrampoline_jll]] 1198 | deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] 1199 | uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" 1200 | 1201 | [[libfdk_aac_jll]] 1202 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1203 | git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" 1204 | uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" 1205 | version = "2.0.2+0" 1206 | 1207 | [[libpng_jll]] 1208 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] 1209 | git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" 1210 | uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" 1211 | version = "1.6.38+0" 1212 | 1213 | [[libvorbis_jll]] 1214 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] 1215 | git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" 1216 | uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" 1217 | version = "1.3.7+1" 1218 | 1219 | [[nghttp2_jll]] 1220 | deps = ["Artifacts", "Libdl"] 1221 | uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" 1222 | 1223 | [[p7zip_jll]] 1224 | deps = ["Artifacts", "Libdl"] 1225 | uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" 1226 | 1227 | [[x264_jll]] 1228 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1229 | git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" 1230 | uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" 1231 | version = "2021.5.5+0" 1232 | 1233 | [[x265_jll]] 1234 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] 1235 | git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" 1236 | uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" 1237 | version = "3.5.0+0" 1238 | 1239 | [[xkbcommon_jll]] 1240 | deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] 1241 | git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" 1242 | uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" 1243 | version = "1.4.1+0" 1244 | -------------------------------------------------------------------------------- /2_24_recitation/Project.toml: -------------------------------------------------------------------------------- 1 | [deps] 2 | COSMO = "1e616198-aa4e-51ec-90a2-23f7fbd31d8d" 3 | Convex = "f65535da-76fb-5f13-bab9-19810c17039a" 4 | ECOS = "e2685f51-7e38-5353-a97d-a921fd2c8199" 5 | ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" 6 | JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" 7 | MeshCat = "283c5d60-a78f-5afe-a0af-af636b173e11" 8 | Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" 9 | ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" 10 | -------------------------------------------------------------------------------- /2_24_recitation/quadrotor_mpc.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "709491a7", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stderr", 11 | "output_type": "stream", 12 | "text": [ 13 | "\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m environment at `~/devel/hw_ideas/hw2/Project.toml`\n" 14 | ] 15 | } 16 | ], 17 | "source": [ 18 | "import Pkg\n", 19 | "Pkg.activate(@__DIR__)\n", 20 | "Pkg.instantiate()\n", 21 | "using LinearAlgebra, Plots\n", 22 | "import ForwardDiff as FD\n", 23 | "import MeshCat as mc \n", 24 | "# using JLD2\n", 25 | "using Test\n", 26 | "using Random\n", 27 | "import Convex as cvx \n", 28 | "import ECOS \n", 29 | "using ProgressMeter" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 2, 35 | "id": "b027add5", 36 | "metadata": {}, 37 | "outputs": [ 38 | { 39 | "data": { 40 | "text/plain": [ 41 | "animate_quadrotor (generic function with 1 method)" 42 | ] 43 | }, 44 | "execution_count": 2, 45 | "metadata": {}, 46 | "output_type": "execute_result" 47 | } 48 | ], 49 | "source": [ 50 | "include(joinpath(@__DIR__, \"utils\",\"quadrotor.jl\"))" 51 | ] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "id": "3479fbac", 56 | "metadata": {}, 57 | "source": [ 58 | "## Linearization warmup \n", 59 | "Before we apply convex MPC to nonlinear systems, let's go over what it means to \"linearize our system\". Specifically, we are going to approximate our nonlinear system with a first-order Taylor series, and define a new set of $(\\Delta x, \\Delta u)$ coordinates.\n", 60 | "\n", 61 | "First, assume our discrete time dynamics are the following:\n", 62 | "\n", 63 | "$$ x_{k+1} = f(x_k,u_k) $$\n", 64 | "\n", 65 | "And we are going to linearize about a reference trajectory $\\bar{x}_{1:N}, \\bar{u}_{1:N-1}$. From here, we can define our delta's accordingly:\n", 66 | "\n", 67 | "$$ \\begin{align} x_k &= \\bar{x}_k + \\Delta x_k \\\\ u_k &= \\bar{u}_k + \\Delta u_k \\end{align}$$ \n", 68 | "\n", 69 | "Next, we are going to approximate our discrete time dynamics function with the following first order Taylor series:\n", 70 | "\n", 71 | "$$ \n", 72 | "x_{k+1} \\approx f(\\bar{x}_k, \\bar{u}_k) + \\bigg[\\frac{\\partial f}{\\partial x} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg](x_k - \\bar{x}_k) + \\bigg[\\frac{\\partial f}{\\partial u} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg](u_k - \\bar{u}_k)\n", 73 | "$$\n", 74 | "\n", 75 | "Which we can substitute in our delta notation to get the following:\n", 76 | "\n", 77 | "$$ \n", 78 | "\\bar{x}_{k+1} + \\Delta x_{k+1} \\approx f(\\bar{x}_k, \\bar{u}_k) + \\bigg[\\frac{\\partial f}{\\partial x} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg]\\Delta x_k + \\bigg[\\frac{\\partial f}{\\partial u} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg] \\Delta u_k\n", 79 | "$$\n", 80 | "\n", 81 | "If the trajectory $\\bar{x},\\bar{u}$ is dynamically feasible (meaning $\\bar{x}_{k+1} = f(\\bar{x}_k, \\bar{u}_k)$), then we can cancel these equivalent terms on each side of the above equation, resulting in the following:\n", 82 | "\n", 83 | "$$ \n", 84 | " \\Delta x_{k+1} \\approx \\bigg[\\frac{\\partial f}{\\partial x} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg]\\Delta x_k + \\bigg[\\frac{\\partial f}{\\partial u} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg] \\Delta u_k\n", 85 | "$$" 86 | ] 87 | }, 88 | { 89 | "cell_type": "markdown", 90 | "id": "f9be643b", 91 | "metadata": {}, 92 | "source": [ 93 | "## Quadrotor MPC\n", 94 | "We can formulate this MPC problem where we optimize over $x,u$:\n", 95 | "$$ \\begin{align} \\min_{x_{1:N},u_{1:N-1}} \\quad & \\sum_{i=1}^{N-1} \\bigg[ (x_i - x_{i,ref})^TQ(x_i - x_{i,ref}) + (u_i - u_{i,ref})^TR(u_i - u_{i,ref}) \\bigg] + \\frac{1}{2}(x_N - x_{N,ref})^TQ_f(x_N - x_{N,ref}) & \\\\ \n", 96 | " \\text{st} \\quad & x_1 = x_{\\text{IC}} \\\\ \n", 97 | " & x_{k+1} = f(\\bar{x}_k, \\bar{u}_k) + \\bigg[\\frac{\\partial f}{\\partial x} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg](x_k - \\bar{x}_k) + \\bigg[\\frac{\\partial f}{\\partial u} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg](u_k - \\bar{u}_k) \\quad &\\text{for } i = 1,2,\\ldots,N-1 \\\\ \n", 98 | " & u_{min} \\leq u_i \\leq u_{max} \\quad &\\text{for } i = 1,2,\\ldots,N-1\\\\ \n", 99 | " \\end{align}$$\n", 100 | " Or equivalently where we optimize over $\\Delta x, \\Delta u$, by simply substituting in $x = \\bar{x} + \\Delta x$ and $u = \\bar{u} + \\Delta u$:\n", 101 | " $$ \\begin{align} \\min_{\\Delta x_{1:N},\\Delta u_{1:N-1}} \\quad & \\sum_{i=1}^{N-1} \\bigg[ (\\bar{x}_i + \\Delta x_i - x_{i,ref})^TQ(\\bar{x}_i + \\Delta x_i - x_{i,ref}) + (\\bar{u}_i + \\Delta u_i - u_{i,ref})^TR(\\bar{u}_i + \\Delta u_i - u_{i,ref}) \\bigg] \\\\ & + \\frac{1}{2}(\\bar{x}_N + \\Delta x_N - x_{N,ref})^TQ_f(\\bar{x}_N + \\Delta x_N - x_{N,ref}) & \\\\ \n", 102 | " \\text{st} \\quad & \\bar{x}_1 + \\Delta x_1 = x_{\\text{IC}} \\\\ \n", 103 | " & \\bar{x}_{k+1} + \\Delta x_{k+1} = f(\\bar{x}_k, \\bar{u}_k) + \\bigg[\\frac{\\partial f}{\\partial x} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg]\\Delta x_k + \\bigg[\\frac{\\partial f}{\\partial u} \\bigg|_{\\bar{x}_k, \\bar{u}_k} \\bigg] \\Delta u_k \\quad &\\text{for } i = 1,2,\\ldots,N-1 \\\\ \n", 104 | " & u_{min} \\leq \\bar{u}_i + \\Delta u_i \\leq u_{max} \\quad &\\text{for } i = 1,2,\\ldots,N-1\\\\ \n", 105 | " \\end{align}$$" 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "execution_count": 3, 111 | "id": "8fb1ea8c", 112 | "metadata": {}, 113 | "outputs": [ 114 | { 115 | "data": { 116 | "text/plain": [ 117 | "convex_mpc_controller_deltas (generic function with 1 method)" 118 | ] 119 | }, 120 | "execution_count": 3, 121 | "metadata": {}, 122 | "output_type": "execute_result" 123 | } 124 | ], 125 | "source": [ 126 | "function get_jacobians(model, X̄, Ū)\n", 127 | " N_mpc = length(X̄)\n", 128 | " A = [FD.jacobian(_x -> rk4(model,dynamics,_x,Ū[i],model.dt), X̄[i]) for i = 1:(N_mpc - 1)]\n", 129 | " B = [FD.jacobian(_u -> rk4(model,dynamics,X̄[i],_u,model.dt), Ū[i]) for i = 1:(N_mpc - 1)]\n", 130 | " return A, B\n", 131 | "end\n", 132 | "function convex_mpc_controller_full(model,params,x0,idx)\n", 133 | "\n", 134 | " N_mpc, Q, R = params.N_mpc, params.Q, params.R\n", 135 | "\n", 136 | " # get slice of the relevant trajectories for the N_mpc window\n", 137 | " X̄ = params.X̄[idx:(idx + N_mpc - 1)]\n", 138 | " Ū = params.Ū[idx:(idx + N_mpc - 2)]\n", 139 | " Xref = params.Xref[idx:(idx + N_mpc - 1)]\n", 140 | " Uref = params.Uref[idx:(idx + N_mpc - 2)]\n", 141 | "\n", 142 | " # create variables \n", 143 | " X = cvx.Variable(params.nx,N_mpc)\n", 144 | " U = cvx.Variable(params.nu,N_mpc - 1)\n", 145 | "\n", 146 | " # cost function (tracking cost on Xref, Uref)\n", 147 | " cost = 0.0\n", 148 | " for i = 1:N_mpc\n", 149 | " cost += 0.5*cvx.quadform(X[:,i] - Xref[i], Q)\n", 150 | " end\n", 151 | " for i = 1:(N_mpc - 1)\n", 152 | " cost += 0.5*cvx.quadform(U[:,i] - Uref[i], R)\n", 153 | " end\n", 154 | " prob = cvx.minimize(cost)\n", 155 | "\n", 156 | " # initial condition constraint\n", 157 | " prob.constraints += X[:,1] == x0\n", 158 | "\n", 159 | " # dynamics constraints\n", 160 | " A,B = get_jacobians(model, X̄, Ū)\n", 161 | " for i = 1:(N_mpc-1)\n", 162 | " prob.constraints += X[:,i+1] == rk4(model, dynamics, X̄[i], Ū[i], params.dt) + A[i]*(X[:,i] - X̄[i]) + B[i]*(U[:,i] - Ū[i])\n", 163 | " end\n", 164 | "\n", 165 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = true)\n", 166 | "\n", 167 | " U = U.value\n", 168 | "\n", 169 | " return vec(U[:,1])\n", 170 | "end\n", 171 | "function convex_mpc_controller_deltas(model,params,x0,idx)\n", 172 | "\n", 173 | " N_mpc, Q, R = params.N_mpc, params.Q, params.R\n", 174 | "\n", 175 | " X̄ = params.X̄[idx:(idx + N_mpc - 1)]\n", 176 | " Ū = params.Ū[idx:(idx + N_mpc - 2)]\n", 177 | " Xref = params.Xref[idx:(idx + N_mpc - 1)]\n", 178 | " Uref = params.Uref[idx:(idx + N_mpc - 2)]\n", 179 | "\n", 180 | "\n", 181 | " ΔX = cvx.Variable(params.nx,N_mpc)\n", 182 | " ΔU = cvx.Variable(params.nu,N_mpc - 1)\n", 183 | "\n", 184 | "\n", 185 | " cost = 0.0\n", 186 | " for i = 1:N_mpc\n", 187 | " xi = X̄[i] + ΔX[:,i]\n", 188 | " cost += 0.5*cvx.quadform(xi - Xref[i], Q)\n", 189 | " end\n", 190 | " for i = 1:(N_mpc - 1)\n", 191 | " ui = Ū[i] + ΔU[:,i]\n", 192 | " cost += 0.5*cvx.quadform(ui - Uref[i], R)\n", 193 | " end\n", 194 | "\n", 195 | " prob = cvx.minimize(cost)\n", 196 | "\n", 197 | " # initial condition constraint\n", 198 | " prob.constraints += X̄[1] + ΔX[:,1] == x0\n", 199 | "\n", 200 | " # add dynamics constraints\n", 201 | " A,B = get_jacobians(model, X̄, Ū)\n", 202 | " for i = 1:(N_mpc-1)\n", 203 | " prob.constraints += X̄[i+1] + ΔX[:,i+1] == rk4(model, dynamics, X̄[i], Ū[i], params.dt) + A[i]*ΔX[:,i] + B[i]*ΔU[:,i]\n", 204 | " end\n", 205 | " cvx.solve!(prob, ECOS.Optimizer; silent_solver = true)\n", 206 | " ΔU = ΔU.value\n", 207 | "\n", 208 | " return Ū[1] + ΔU[:,1]\n", 209 | "end" 210 | ] 211 | }, 212 | { 213 | "cell_type": "code", 214 | "execution_count": 5, 215 | "id": "cb09201d", 216 | "metadata": {}, 217 | "outputs": [ 218 | { 219 | "name": "stderr", 220 | "output_type": "stream", 221 | "text": [ 222 | "\u001b[32msimulating 100%|█████████████████████████████████████████| Time: 0:00:05\u001b[39m\n", 223 | "\u001b[36m\u001b[1m┌ \u001b[22m\u001b[39m\u001b[36m\u001b[1mInfo: \u001b[22m\u001b[39mMeshCat server started. You can open the visualizer by visiting the following URL in your browser:\n", 224 | "\u001b[36m\u001b[1m└ \u001b[22m\u001b[39mhttp://127.0.0.1:8813\n" 225 | ] 226 | }, 227 | { 228 | "data": { 229 | "text/html": [ 230 | "