From d46c2188ac77b77d460f61a68a5f0b49fa8b8dbe Mon Sep 17 00:00:00 2001 From: Olivier Cots Date: Mon, 19 May 2025 13:25:31 +0200 Subject: [PATCH 1/4] add MPC tuto --- docs/make.jl | 2 + docs/src/assets/Manifest.toml | 2620 +++++++++++++++++++++++++++++++++ docs/src/assets/Project.toml | 29 + docs/src/assets/ship.jpg | Bin 0 -> 96631 bytes docs/src/tutorial-mpc.md | 384 +++++ 5 files changed, 3035 insertions(+) create mode 100644 docs/src/assets/Manifest.toml create mode 100644 docs/src/assets/Project.toml create mode 100644 docs/src/assets/ship.jpg create mode 100644 docs/src/tutorial-mpc.md diff --git a/docs/make.jl b/docs/make.jl index 62d5be4..f0646c0 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -8,6 +8,7 @@ cp("./docs/Project.toml", "./docs/src/assets/Project.toml", force = true) repo_url = "github.com/control-toolbox/Tutorials.jl" makedocs(; + draft = false, warnonly=[:cross_references, :autodocs_block], sitename="Tutorials", format=Documenter.HTML(; @@ -29,6 +30,7 @@ makedocs(; "Goddard: direct, indirect" => "tutorial-goddard.md", "Linear–quadratic regulator" => "tutorial-lqr-basic.md", "Minimal action" => "tutorial-mam.md", + "Model Predictive Control" => "tutorial-mpc.md", ], ], ) diff --git a/docs/src/assets/Manifest.toml b/docs/src/assets/Manifest.toml new file mode 100644 index 0000000..6ac78ba --- /dev/null +++ b/docs/src/assets/Manifest.toml @@ -0,0 +1,2620 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.11.3" +manifest_format = "2.0" +project_hash = "e21855de1a3d3c49137c04b52b4174143136db73" + +[[deps.ADNLPModels]] +deps = ["ADTypes", "ForwardDiff", "LinearAlgebra", "NLPModels", "Requires", "ReverseDiff", "SparseArrays", "SparseConnectivityTracer", "SparseMatrixColorings"] +git-tree-sha1 = "397c37668a74a47a16e0cdd47d1204e564549ace" +uuid = "54578032-b7ea-4c30-94aa-7cbd1cce6c9a" +version = "0.8.12" + +[[deps.ADTypes]] +git-tree-sha1 = "e2478490447631aedba0823d4d7a80b2cc8cdb32" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "1.14.0" +weakdeps = ["ChainRulesCore", "ConstructionBase", "EnzymeCore"] + + [deps.ADTypes.extensions] + ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesConstructionBaseExt = "ConstructionBase" + ADTypesEnzymeCoreExt = "EnzymeCore" + +[[deps.AMD]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "45a1272e3f809d36431e57ab22703c6896b8908f" +uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" +version = "0.5.3" + +[[deps.ANSIColoredPrinters]] +git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" +uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9" +version = "0.0.1" + +[[deps.ASL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6252039f98492252f9e47c312c8ffda0e3b9e78d" +uuid = "ae81ac8f-d209-56e5-92de-9978fef736f9" +version = "0.1.3+0" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "3b86719127f50670efe356bc11073d84b4ed7a5d" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.42" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "f7817e2e585aa6d924fd714df1e2a84be7896c60" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.3.0" +weakdeps = ["SparseArrays", "StaticArrays"] + + [deps.Adapt.extensions] + AdaptSparseArraysExt = "SparseArrays" + AdaptStaticArraysExt = "StaticArrays" + +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.2" + +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra"] +git-tree-sha1 = "bebb10cd3f0796dd1429ba61e43990ba391186e9" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.18.1" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesCoreExt = "ChainRulesCore" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceSparseArraysExt = "SparseArrays" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.ArrayLayouts]] +deps = ["FillArrays", "LinearAlgebra"] +git-tree-sha1 = "4e25216b8fea1908a0ce0f5d87368587899f75be" +uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.ArrayLayouts.extensions] + ArrayLayoutsSparseArraysExt = "SparseArrays" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" + +[[deps.AxisAlgorithms]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] +git-tree-sha1 = "01b8ccb13d68535d73d2b0c23e39bd23155fb712" +uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" +version = "1.1.0" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" + +[[deps.BitFlags]] +git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" +uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" +version = "0.1.9" + +[[deps.BitTwiddlingConvenienceFunctions]] +deps = ["Static"] +git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87" +uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" +version = "0.1.6" + +[[deps.BracketingNonlinearSolve]] +deps = ["CommonSolve", "ConcreteStructs", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "637ebe439ba587828fd997b7810d8171eed2ea1b" +uuid = "70df07ce-3d50-431d-a3e7-ca6ddb60ac1e" +version = "1.2.0" +weakdeps = ["ForwardDiff"] + + [deps.BracketingNonlinearSolve.extensions] + BracketingNonlinearSolveForwardDiffExt = "ForwardDiff" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.9+0" + +[[deps.CPUSummary]] +deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] +git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec" +uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" +version = "0.2.6" + +[[deps.CTBase]] +deps = ["DocStringExtensions"] +git-tree-sha1 = "715a4381eb5e1d11ee92d86759ada1c27689345f" +uuid = "54762871-cc72-4466-b8e8-f6c8b58076cd" +version = "0.16.0" + +[[deps.CTDirect]] +deps = ["ADNLPModels", "CTBase", "CTModels", "CTParser", "DocStringExtensions", "HSL", "MKL", "NLPModelsIpopt", "SparseArrays"] +git-tree-sha1 = "de5a4ecbfd6d5639ad248b2124ffbc0f29bb013e" +uuid = "790bbbee-bee9-49ee-8912-a9de031322d5" +version = "0.14.10" + + [deps.CTDirect.extensions] + CTSolveExtIpopt = ["NLPModelsIpopt"] + CTSolveExtKnitro = ["NLPModelsKnitro"] + CTSolveExtMadNLP = ["MadNLP"] + + [deps.CTDirect.weakdeps] + MadNLP = "2621e9c9-9eb4-46b1-8089-e8c72242dfb6" + NLPModelsKnitro = "bec4dd0d-7755-52d5-9a02-22f0ffc7efcb" + +[[deps.CTFlows]] +deps = ["CTBase", "CTModels", "DocStringExtensions", "ForwardDiff", "MLStyle", "MacroTools"] +git-tree-sha1 = "d5fa7726fede4bf482bef0a71891d7c062e0734e" +uuid = "1c39547c-7794-42f7-af83-d98194f657c2" +version = "0.8.2" +weakdeps = ["OrdinaryDiffEq"] + + [deps.CTFlows.extensions] + CTFlowsODE = "OrdinaryDiffEq" + +[[deps.CTModels]] +deps = ["CTBase", "DocStringExtensions", "Interpolations", "LinearAlgebra", "MLStyle", "MacroTools", "OrderedCollections", "Parameters", "PrettyTables", "RecipesBase"] +git-tree-sha1 = "717ff07c390ce0b1546ed9f07c09b5b24097961d" +uuid = "34c4fa32-2049-4079-8329-de33c2a22e2d" +version = "0.3.6" + + [deps.CTModels.extensions] + CTModelsJLD = "JLD2" + CTModelsJSON = "JSON3" + CTModelsPlots = "Plots" + + [deps.CTModels.weakdeps] + JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" + JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" + Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" + +[[deps.CTParser]] +deps = ["CTBase", "DocStringExtensions", "MLStyle", "OrderedCollections", "Parameters", "Unicode"] +git-tree-sha1 = "a6a28a633c69cd4bb4b7b1990cdb7523a4c50ae8" +uuid = "32681960-a1b1-40db-9bff-a1ca817385d1" +version = "0.2.5" + +[[deps.Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "2ac646d71d0d24b44f3f8c84da8c9f4d70fb67df" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.18.4+0" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "1713c74e00545bfe14605d2a2be1712de8fbcb58" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.25.1" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + +[[deps.CloseOpenIntervals]] +deps = ["Static", "StaticArrayInterface"] +git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581" +uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" +version = "0.1.13" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.8" + +[[deps.ColorSchemes]] +deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] +git-tree-sha1 = "403f2d8e209681fcbd9468a8514efff3ea08452e" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.29.0" + +[[deps.ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.12.1" +weakdeps = ["StyledStrings"] + + [deps.ColorTypes.extensions] + StyledStringsExt = "StyledStrings" + +[[deps.ColorVectorSpace]] +deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] +git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" +uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" +version = "0.11.0" +weakdeps = ["SpecialFunctions"] + + [deps.ColorVectorSpace.extensions] + SpecialFunctionsExt = "SpecialFunctions" + +[[deps.Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "64e15186f0aa277e174aa81798f7eb8598e0157e" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.13.0" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools"] +git-tree-sha1 = "cda2cfaebb4be89c9084adaca7dd7333369715c5" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.1" + +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.0.0" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.16.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.1.1+0" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConcreteStructs]] +git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" +uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" +version = "0.2.3" + +[[deps.ConcurrentUtilities]] +deps = ["Serialization", "Sockets"] +git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" +uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" +version = "2.5.0" + +[[deps.ConstructionBase]] +git-tree-sha1 = "76219f1ed5771adbb096743bff43fb5fdd4c1157" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.8" + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseLinearAlgebraExt = "LinearAlgebra" + ConstructionBaseStaticArraysExt = "StaticArrays" + + [deps.ConstructionBase.weakdeps] + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.Contour]] +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.6.3" + +[[deps.CpuId]] +deps = ["Markdown"] +git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" +uuid = "adafc99b-e345-5852-983c-f28acb93d879" +version = "0.3.1" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.22" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" + +[[deps.Dbus_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "473e9afc9cf30814eb67ffa5f2db7df82c3ad9fd" +uuid = "ee1fde0b-3d02-5ea6-8484-8dfef6360eab" +version = "1.16.2+0" + +[[deps.DelimitedFiles]] +deps = ["Mmap"] +git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" +version = "1.9.1" + +[[deps.DiffEqBase]] +deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "6a0f6f17adbeb77688220cfb3e665c8f6e2a60ea" +uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" +version = "6.172.0" + + [deps.DiffEqBase.extensions] + DiffEqBaseCUDAExt = "CUDA" + DiffEqBaseChainRulesCoreExt = "ChainRulesCore" + DiffEqBaseDistributionsExt = "Distributions" + DiffEqBaseEnzymeExt = ["ChainRulesCore", "Enzyme"] + DiffEqBaseForwardDiffExt = ["ForwardDiff"] + DiffEqBaseGTPSAExt = "GTPSA" + DiffEqBaseGeneralizedGeneratedExt = "GeneralizedGenerated" + DiffEqBaseMPIExt = "MPI" + DiffEqBaseMeasurementsExt = "Measurements" + DiffEqBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements" + DiffEqBaseReverseDiffExt = "ReverseDiff" + DiffEqBaseSparseArraysExt = "SparseArrays" + DiffEqBaseTrackerExt = "Tracker" + DiffEqBaseUnitfulExt = "Unitful" + + [deps.DiffEqBase.weakdeps] + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" + GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.DifferentiationInterface]] +deps = ["ADTypes", "LinearAlgebra"] +git-tree-sha1 = "aa87a743e3778d35a950b76fbd2ae64f810a2bb3" +uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +version = "0.6.52" + + [deps.DifferentiationInterface.extensions] + DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" + DifferentiationInterfaceDiffractorExt = "Diffractor" + DifferentiationInterfaceEnzymeExt = ["EnzymeCore", "Enzyme"] + DifferentiationInterfaceFastDifferentiationExt = "FastDifferentiation" + DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" + DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" + DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] + DifferentiationInterfaceGPUArraysCoreExt = "GPUArraysCore" + DifferentiationInterfaceGTPSAExt = "GTPSA" + DifferentiationInterfaceMooncakeExt = "Mooncake" + DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] + DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] + DifferentiationInterfaceSparseArraysExt = "SparseArrays" + DifferentiationInterfaceSparseConnectivityTracerExt = "SparseConnectivityTracer" + DifferentiationInterfaceSparseMatrixColoringsExt = "SparseMatrixColorings" + DifferentiationInterfaceStaticArraysExt = "StaticArrays" + DifferentiationInterfaceSymbolicsExt = "Symbolics" + DifferentiationInterfaceTrackerExt = "Tracker" + DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] + + [deps.DifferentiationInterface.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" + Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FastDifferentiation = "eb9bf01b-bf85-4b60-bf87-ee5de06c00be" + FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" + FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" + Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseConnectivityTracer = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.DocStringExtensions]] +git-tree-sha1 = "e7b7e6f178525d17c720ab9c081e4ef04429f860" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.4" + +[[deps.Documenter]] +deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"] +git-tree-sha1 = "b7af952d4701252dc45d3b0025693e9cb4dedcd8" +uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +version = "1.10.2" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.EnumX]] +git-tree-sha1 = "bddad79635af6aec424f53ed8aad5d7555dc6f00" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.5" + +[[deps.EnzymeCore]] +git-tree-sha1 = "0cdb7af5c39e92d78a0ee8d0a447d32f7593137e" +uuid = "f151be2c-9106-41f4-ab19-57ee4f262869" +version = "0.8.8" +weakdeps = ["Adapt"] + + [deps.EnzymeCore.extensions] + AdaptExt = "Adapt" + +[[deps.EpollShim_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a4be429317c42cfae6a7fc03c31bad1970c310d" +uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" +version = "0.0.20230411+1" + +[[deps.ExceptionUnwrapping]] +deps = ["Test"] +git-tree-sha1 = "d36f682e590a83d63d1c7dbd287573764682d12a" +uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" +version = "0.1.11" + +[[deps.Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d55dffd9ae73ff72f1c0482454dcf2ec6c6c4a63" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.6.5+0" + +[[deps.ExponentialUtilities]] +deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "cae251c76f353e32d32d76fae2fea655eab652af" +uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" +version = "1.27.0" +weakdeps = ["StaticArrays"] + + [deps.ExponentialUtilities.extensions] + ExponentialUtilitiesStaticArraysExt = "StaticArrays" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + +[[deps.ExproniconLite]] +git-tree-sha1 = "c13f0b150373771b0fdc1713c97860f8df12e6c2" +uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" +version = "0.10.14" + +[[deps.FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "53ebe7511fa11d33bec688a9178fac4e49eeee00" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.2" + +[[deps.FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.4.4+1" + +[[deps.FastBroadcast]] +deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] +git-tree-sha1 = "ab1b34570bcdf272899062e1a56285a53ecaae08" +uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" +version = "0.3.5" + +[[deps.FastClosures]] +git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" +uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" +version = "0.3.2" + +[[deps.FastGaussQuadrature]] +deps = ["LinearAlgebra", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "fd923962364b645f3719855c88f7074413a6ad92" +uuid = "442a2c76-b920-505d-bb47-c5924d526838" +version = "1.0.2" + +[[deps.FastPower]] +git-tree-sha1 = "df32f07f373f06260cd6af5371385b5ef85dd762" +uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" +version = "1.1.2" + + [deps.FastPower.extensions] + FastPowerEnzymeExt = "Enzyme" + FastPowerForwardDiffExt = "ForwardDiff" + FastPowerMeasurementsExt = "Measurements" + FastPowerMonteCarloMeasurementsExt = "MonteCarloMeasurements" + FastPowerReverseDiffExt = "ReverseDiff" + FastPowerTrackerExt = "Tracker" + + [deps.FastPower.weakdeps] + Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" + +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "6a70198746448456524cb442b8af316927ff3e1a" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.13.0" + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + + [deps.FillArrays.weakdeps] + PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.FiniteDiff]] +deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] +git-tree-sha1 = "f089ab1f834470c525562030c8cfde4025d5e915" +uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" +version = "2.27.0" + + [deps.FiniteDiff.extensions] + FiniteDiffBandedMatricesExt = "BandedMatrices" + FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" + FiniteDiffSparseArraysExt = "SparseArrays" + FiniteDiffStaticArraysExt = "StaticArrays" + + [deps.FiniteDiff.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "05882d6995ae5c12bb5f36dd2ed3f61c98cbb172" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.5" + +[[deps.Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Zlib_jll"] +git-tree-sha1 = "301b5d5d731a0654825f1f2e906990f7141a106b" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.16.0+0" + +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "a2df1b776752e3f344e5116c06d75a10436ab853" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.38" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.13.4+0" + +[[deps.FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7a214fdac5ed5f59a22c2d9a885a16da1c74bbc7" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.17+0" + +[[deps.FunctionWrappers]] +git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" +uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" +version = "1.1.3" + +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.3" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "libdecor_jll", "xkbcommon_jll"] +git-tree-sha1 = "fcb0584ff34e25155876418979d4c8971243bb89" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.4.0+2" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "83cf05ab16a73219e5f6bd1bdfa9848fa24ac627" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.2.0" + +[[deps.GR]] +deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] +git-tree-sha1 = "7ffa4049937aeba2e5e1242274dc052b0362157a" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.73.14" + +[[deps.GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "98fc192b4e4b938775ecd276ce88f539bcec358e" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.73.14+0" + +[[deps.GenericSchur]] +deps = ["LinearAlgebra", "Printf"] +git-tree-sha1 = "f88e0ba1f6b42121a7c1dfe93a9687d8e164c91b" +uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" +version = "0.5.5" + +[[deps.Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[deps.Git]] +deps = ["Git_jll", "JLLWrappers", "OpenSSH_jll"] +git-tree-sha1 = "2230a9cc32394b11a3b3aa807a382e3bbab1198c" +uuid = "d7ba0133-e1db-5d97-8f8c-041e4b3a1eb2" +version = "1.4.0" + +[[deps.Git_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "LibCURL_jll", "Libdl", "Libiconv_jll", "OpenSSL_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "2f6d6f7e6d6de361865d4394b802c02fc944fc7c" +uuid = "f8c6e375-362e-5223-8a59-34ff63f689eb" +version = "2.49.0+0" + +[[deps.Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "b0036b392358c80d2d2124746c2bf3d48d457938" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.82.4+0" + +[[deps.Graphite2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a6dbda1fd736d60cc477d99f2e7a042acfa46e8" +uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" +version = "1.3.15+0" + +[[deps.Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[deps.HSL]] +deps = ["HSL_jll", "Libdl", "LinearAlgebra", "OpenBLAS32_jll", "Quadmath", "SparseArrays"] +git-tree-sha1 = "1cfc6a0b38f432db210f6148ad945ce2d56d85fb" +uuid = "34c5aeac-e683-54a6-a0e9-6e0fdc586c50" +version = "0.5.0" + +[[deps.HSL_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "e81ea90c15f7f8cf8c7e72f594e7525ab0ca90f4" +uuid = "017b0a0e-03f4-516a-9b91-836bbd1904dd" +version = "4.0.2+0" + +[[deps.HTTP]] +deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] +git-tree-sha1 = "f93655dc73d7a0b4a368e3c0bce296ae035ad76e" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "1.10.16" + +[[deps.HarfBuzz_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] +git-tree-sha1 = "55c53be97790242c29031e5cd45e8ac296dadda3" +uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" +version = "8.5.0+0" + +[[deps.Hwloc_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f93a9ce66cd89c9ba7a4695a47fd93b4c6bc59fa" +uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" +version = "2.12.0+0" + +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.5" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] +git-tree-sha1 = "0f14a5456bdc6b9731a5682f439a672750a09e48" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2025.0.4+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.Interpolations]] +deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] +git-tree-sha1 = "88a101217d7cb38a7b481ccd50d21876e1d1b0e0" +uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" +version = "0.15.1" +weakdeps = ["Unitful"] + + [deps.Interpolations.extensions] + InterpolationsUnitfulExt = "Unitful" + +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + +[[deps.Ipopt]] +deps = ["Ipopt_jll", "LinearAlgebra", "OpenBLAS32_jll", "PrecompileTools"] +git-tree-sha1 = "100030874c53b61d8c21d1bcb725265555d146ff" +uuid = "b6b21f68-93f8-5de0-b562-5493be1d77c9" +version = "1.10.3" + + [deps.Ipopt.extensions] + IpoptMathOptInterfaceExt = "MathOptInterface" + + [deps.Ipopt.weakdeps] + MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" + +[[deps.Ipopt_jll]] +deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] +git-tree-sha1 = "4f55ad688c698a4f77d892a1cb673f7e8a30f178" +uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" +version = "300.1400.1700+0" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "e2222959fbc6c19554dc15174c81bf7bf3aa691c" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.4" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLFzf]] +deps = ["REPL", "Random", "fzf_jll"] +git-tree-sha1 = "82f7acdc599b65e0f8ccd270ffa1467c21cb647b" +uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" +version = "0.1.11" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "a007feb38b422fbdab534406aeca1b86823cb4d6" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.7.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.Jieko]] +deps = ["ExproniconLite"] +git-tree-sha1 = "2f05ed29618da60c06a87e9c033982d4f71d0b6c" +uuid = "ae98c720-c025-4a4a-838c-29b094483192" +version = "0.2.1" + +[[deps.JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eac1206917768cb54957c65a615460d87b455fc1" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "3.1.1+0" + +[[deps.Krylov]] +deps = ["LinearAlgebra", "Printf", "SparseArrays"] +git-tree-sha1 = "b94257a1a8737099ca40bc7271a8b374033473ed" +uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" +version = "0.10.1" + +[[deps.LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "170b660facf5df5de098d866564877e119141cbd" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.2+0" + +[[deps.LDLFactorizations]] +deps = ["AMD", "LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "70f582b446a1c3ad82cf87e62b878668beef9d13" +uuid = "40e66cde-538c-5869-a4ad-c39174c6795b" +version = "0.10.1" + +[[deps.LERC_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3" +uuid = "88015f11-f218-50d7-93a8-a6af411a945d" +version = "4.0.1+0" + +[[deps.LLVMOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "eb62a3deb62fc6d8822c0c4bef73e4412419c5d8" +uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" +version = "18.1.8+0" + +[[deps.LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.3+0" + +[[deps.LaTeXStrings]] +git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.4.0" + +[[deps.Latexify]] +deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "cd10d2cc78d34c0e2a3a36420ab607b611debfbb" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.7" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SparseArraysExt = "SparseArrays" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + +[[deps.LayoutPointers]] +deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] +git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c" +uuid = "10f19ff3-798f-405d-979b-55457f8fc047" +version = "0.1.17" + +[[deps.LazilyInitializedFields]] +git-tree-sha1 = "0f2da712350b020bc3957f269c9caad516383ee0" +uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" +version = "1.3.0" + +[[deps.LazyArrays]] +deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] +git-tree-sha1 = "866ce84b15e54d758c11946aacd4e5df0e60b7a3" +uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" +version = "2.6.1" + + [deps.LazyArrays.extensions] + LazyArraysBandedMatricesExt = "BandedMatrices" + LazyArraysBlockArraysExt = "BlockArrays" + LazyArraysBlockBandedMatricesExt = "BlockBandedMatrices" + LazyArraysStaticArraysExt = "StaticArrays" + + [deps.LazyArrays.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" +version = "1.11.0" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.6.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.7.2+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" + +[[deps.Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "27ecae93dd25ee0909666e6835051dd684cc035e" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+2" + +[[deps.Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "d36c21b9e7c172a44a10484125024495e2625ac0" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.7.1+1" + +[[deps.Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "be484f5c92fad0bd8acfef35fe017900b0b73809" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.18.0+0" + +[[deps.Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a31572773ac1b745e0343fe5e2c8ddda7a37e997" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.41.0+0" + +[[deps.Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "4ab7581296671007fc33f07a721631b8855f4b1d" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.7.1+0" + +[[deps.Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "321ccef73a96ba828cd51f2ab5b9f917fa73945a" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.41.0+0" + +[[deps.LineSearch]] +deps = ["ADTypes", "CommonSolve", "ConcreteStructs", "FastClosures", "LinearAlgebra", "MaybeInplace", "SciMLBase", "SciMLJacobianOperators", "StaticArraysCore"] +git-tree-sha1 = "97d502765cc5cf3a722120f50da03c2474efce04" +uuid = "87fe0de2-c867-4266-b59a-2f0a94fc965b" +version = "0.1.4" +weakdeps = ["LineSearches"] + + [deps.LineSearch.extensions] + LineSearchLineSearchesExt = "LineSearches" + +[[deps.LineSearches]] +deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] +git-tree-sha1 = "e4c3be53733db1051cc15ecf573b1042b3a712a1" +uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" +version = "7.3.0" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" + +[[deps.LinearOperators]] +deps = ["FastClosures", "LinearAlgebra", "Printf", "Requires", "SparseArrays", "TimerOutputs"] +git-tree-sha1 = "1894a798ed8887895c5ae70f1fe8331c0c1d8480" +uuid = "5c8ed15e-5a4c-59e4-a42b-c7e8811fb125" +version = "2.10.0" + + [deps.LinearOperators.extensions] + LinearOperatorsAMDGPUExt = "AMDGPU" + LinearOperatorsCUDAExt = "CUDA" + LinearOperatorsChainRulesCoreExt = "ChainRulesCore" + LinearOperatorsJLArraysExt = "JLArrays" + LinearOperatorsLDLFactorizationsExt = "LDLFactorizations" + LinearOperatorsMetalExt = "Metal" + + [deps.LinearOperators.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + JLArrays = "27aeb0d3-9eb9-45fb-866b-73c2ecf80fcb" + LDLFactorizations = "40e66cde-538c-5869-a4ad-c39174c6795b" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + +[[deps.LinearSolve]] +deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] +git-tree-sha1 = "dd7a3f6e0cc5ded5d936692d7f9f7981243d75ef" +uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" +version = "3.10.0" + + [deps.LinearSolve.extensions] + LinearSolveBandedMatricesExt = "BandedMatrices" + LinearSolveBlockDiagonalsExt = "BlockDiagonals" + LinearSolveCUDAExt = "CUDA" + LinearSolveCUDSSExt = "CUDSS" + LinearSolveEnzymeExt = "EnzymeCore" + LinearSolveFastAlmostBandedMatricesExt = "FastAlmostBandedMatrices" + LinearSolveFastLapackInterfaceExt = "FastLapackInterface" + LinearSolveHYPREExt = "HYPRE" + LinearSolveIterativeSolversExt = "IterativeSolvers" + LinearSolveKernelAbstractionsExt = "KernelAbstractions" + LinearSolveKrylovKitExt = "KrylovKit" + LinearSolveMetalExt = "Metal" + LinearSolvePardisoExt = ["Pardiso", "SparseArrays"] + LinearSolveRecursiveFactorizationExt = "RecursiveFactorization" + LinearSolveSparseArraysExt = "SparseArrays" + LinearSolveSparspakExt = ["SparseArrays", "Sparspak"] + + [deps.LinearSolve.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockDiagonals = "0a1fb500-61f7-11e9-3c65-f5ef3456f9f0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + FastAlmostBandedMatrices = "9d29842c-ecb8-4973-b1e9-a27b1157504e" + FastLapackInterface = "29a986be-02c6-4525-aec4-84b980013641" + HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" + IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" + KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" + KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" + Metal = "dde4c033-4e86-420c-a63e-0dd931031962" + Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" + RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + Sparspak = "e56a9233-b9d6-4f03-8d0f-1825330902ac" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.29" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" + +[[deps.LoggingExtras]] +deps = ["Dates", "Logging"] +git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3" +uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" +version = "1.1.0" + +[[deps.METIS_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" +uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" +version = "5.1.3+0" + +[[deps.MINPACK]] +deps = ["LinearAlgebra", "Printf", "cminpack_jll"] +git-tree-sha1 = "7833d5fda5c9a7a62b39d37ebd3c7d716fbc0cfc" +uuid = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" +version = "1.3.0" + +[[deps.MKL]] +deps = ["Artifacts", "Libdl", "LinearAlgebra", "Logging", "MKL_jll"] +git-tree-sha1 = "39fd578c295085e77aedec501149a63f9ab0c0b6" +uuid = "33e6dc65-8f57-5167-99aa-e5a354878fb2" +version = "0.8.0" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "5de60bc6cb3899cd318d80d627560fae2e2d99ae" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2025.0.1+1" + +[[deps.MLStyle]] +git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" +uuid = "d8e11817-5142-5d16-987a-aa16d5891078" +version = "0.4.17" + +[[deps.MUMPS_seq_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] +git-tree-sha1 = "0eab12f94948ca67908aec14b9f2ebefd17463fe" +uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" +version = "500.700.301+0" + +[[deps.MacroTools]] +git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.16" + +[[deps.MadNLP]] +deps = ["LDLFactorizations", "LinearAlgebra", "Logging", "NLPModels", "Pkg", "Printf", "SolverCore", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "de72248c46b2e22573a9311045dfc3cd0b7c5cc1" +uuid = "2621e9c9-9eb4-46b1-8089-e8c72242dfb6" +version = "0.8.7" + + [deps.MadNLP.extensions] + MadNLPMOI = "MathOptInterface" + + [deps.MadNLP.weakdeps] + MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" + +[[deps.ManualMemory]] +git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" +uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" +version = "0.1.8" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" + +[[deps.MarkdownAST]] +deps = ["AbstractTrees", "Markdown"] +git-tree-sha1 = "465a70f0fc7d443a00dcdc3267a497397b8a3899" +uuid = "d0879d2d-cac2-40c8-9cee-1863dc0c7391" +version = "0.1.2" + +[[deps.MaybeInplace]] +deps = ["ArrayInterface", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "54e2fdc38130c05b42be423e90da3bade29b74bd" +uuid = "bb5d69b7-63fc-4a16-80bd-7e42200c7bdb" +version = "0.1.4" +weakdeps = ["SparseArrays"] + + [deps.MaybeInplace.extensions] + MaybeInplaceSparseArraysExt = "SparseArrays" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.6+0" + +[[deps.Measures]] +git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.2" + +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" + +[[deps.Moshi]] +deps = ["ExproniconLite", "Jieko"] +git-tree-sha1 = "453de0fc2be3d11b9b93ca4d0fddd91196dcf1ed" +uuid = "2e0e35c7-a2e4-4343-998d-7ef72827ed2d" +version = "0.3.5" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.12.12" + +[[deps.MuladdMacro]] +git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" +uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" +version = "0.2.4" + +[[deps.NLPModels]] +deps = ["FastClosures", "LinearAlgebra", "LinearOperators", "Printf", "SparseArrays"] +git-tree-sha1 = "808b4d1a5ee2a8cc089b285dd27284efb47b35c7" +uuid = "a4795742-8479-5a88-8948-cc11e1c8c1a6" +version = "0.21.4" + +[[deps.NLPModelsIpopt]] +deps = ["Ipopt", "NLPModels", "SolverCore"] +git-tree-sha1 = "06782efc249b21d7b7c538fec4593d72420a36e3" +uuid = "f4238b75-b362-5c4c-b852-0801c9a21d71" +version = "0.10.4" + +[[deps.NLSolversBase]] +deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] +git-tree-sha1 = "b14c7be6046e7d48e9063a0053f95ee0fc954176" +uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" +version = "7.9.1" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "9b8215b1ee9e78a293f99797cd31375471b2bcae" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.1.3" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.NonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DiffEqBase", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseMatrixColorings", "StaticArraysCore", "SymbolicIndexingInterface"] +git-tree-sha1 = "7fd96e0e6585063a7193007349799155ba5a069f" +uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" +version = "4.8.0" + + [deps.NonlinearSolve.extensions] + NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" + NonlinearSolveFixedPointAccelerationExt = "FixedPointAcceleration" + NonlinearSolveLeastSquaresOptimExt = "LeastSquaresOptim" + NonlinearSolveMINPACKExt = "MINPACK" + NonlinearSolveNLSolversExt = "NLSolvers" + NonlinearSolveNLsolveExt = ["NLsolve", "LineSearches"] + NonlinearSolvePETScExt = ["PETSc", "MPI"] + NonlinearSolveSIAMFANLEquationsExt = "SIAMFANLEquations" + NonlinearSolveSpeedMappingExt = "SpeedMapping" + NonlinearSolveSundialsExt = "Sundials" + + [deps.NonlinearSolve.weakdeps] + FastLevenbergMarquardt = "7a0df574-e128-4d35-8cbd-3d84502bf7ce" + FixedPointAcceleration = "817d07cb-a79a-5c30-9a31-890123675176" + LeastSquaresOptim = "0fc2ff8b-aaa3-5acd-a817-1944a5e08891" + LineSearches = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" + MINPACK = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" + MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" + NLSolvers = "337daf1e-9722-11e9-073e-8b9effe078ba" + NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" + PETSc = "ace2c81b-2b5f-4b1e-a30d-d662738edfe0" + SIAMFANLEquations = "084e46ad-d928-497d-ad5e-07fa361a48c4" + SpeedMapping = "f1835b91-879b-4a3f-a438-e4baacf14412" + Sundials = "c3572dad-4567-51f8-b174-8c6c989267f4" + +[[deps.NonlinearSolveBase]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] +git-tree-sha1 = "edfa90b9b46fc841b6f03106d9e1a054816f4f1d" +uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" +version = "1.6.0" + + [deps.NonlinearSolveBase.extensions] + NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" + NonlinearSolveBaseDiffEqBaseExt = "DiffEqBase" + NonlinearSolveBaseForwardDiffExt = "ForwardDiff" + NonlinearSolveBaseLineSearchExt = "LineSearch" + NonlinearSolveBaseLinearSolveExt = "LinearSolve" + NonlinearSolveBaseSparseArraysExt = "SparseArrays" + NonlinearSolveBaseSparseMatrixColoringsExt = "SparseMatrixColorings" + + [deps.NonlinearSolveBase.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + LineSearch = "87fe0de2-c867-4266-b59a-2f0a94fc965b" + LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + SparseMatrixColorings = "0a514795-09f3-496d-8182-132a7b665d35" + +[[deps.NonlinearSolveFirstOrder]] +deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "9c8cd0a986518ba317af263549b48e34ac8f776d" +uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" +version = "1.5.0" + +[[deps.NonlinearSolveQuasiNewton]] +deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] +git-tree-sha1 = "290d60e3e097eed44e0aba00643995a47284746b" +uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" +version = "1.3.0" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveQuasiNewton.extensions] + NonlinearSolveQuasiNewtonForwardDiffExt = "ForwardDiff" + +[[deps.NonlinearSolveSpectralMethods]] +deps = ["CommonSolve", "ConcreteStructs", "DiffEqBase", "LineSearch", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "3398222199e4b9ca0b5840907fb509f28f1a2fdc" +uuid = "26075421-4e9a-44e1-8bd1-420ed7ad02b2" +version = "1.2.0" +weakdeps = ["ForwardDiff"] + + [deps.NonlinearSolveSpectralMethods.extensions] + NonlinearSolveSpectralMethodsForwardDiffExt = "ForwardDiff" + +[[deps.OffsetArrays]] +git-tree-sha1 = "117432e406b5c023f665fa73dc26e79ec3630151" +uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" +version = "1.17.0" +weakdeps = ["Adapt"] + + [deps.OffsetArrays.extensions] + OffsetArraysAdaptExt = "Adapt" + +[[deps.Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+1" + +[[deps.OpenBLAS32_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "ece4587683695fe4c5f20e990da0ed7e83c351e7" +uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" +version = "0.3.29+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.27+1" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+2" + +[[deps.OpenSSH_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenSSL_jll", "Zlib_jll"] +git-tree-sha1 = "cb7acd5d10aff809b4d0191dfe1956c2edf35800" +uuid = "9bd350c2-7e96-507f-8002-3f2e150b4e1b" +version = "10.0.1+0" + +[[deps.OpenSSL]] +deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] +git-tree-sha1 = "38cb508d080d21dc1128f7fb04f20387ed4c0af4" +uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" +version = "1.4.3" + +[[deps.OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "9216a80ff3682833ac4b733caa8c00390620ba5d" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "3.5.0+0" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "1346c9208249809840c91b26703912dff463d335" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.6+0" + +[[deps.OptimalControl]] +deps = ["CTBase", "CTDirect", "CTFlows", "CTModels", "CTParser", "CommonSolve", "DocStringExtensions"] +git-tree-sha1 = "c22d61cfbe3ecad8e4023f05ff8cf11ae4b04a59" +uuid = "5f98b655-cc9a-415a-b60e-744165666948" +version = "1.0.2" + +[[deps.Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6703a85cb3781bd5909d48730a67205f3f31a575" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.3+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "cc4054e898b852042d7b503313f7ad03de99c3dd" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.8.0" + +[[deps.OrdinaryDiffEq]] +deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqAdamsBashforthMoulton", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqExplicitRK", "OrdinaryDiffEqExponentialRK", "OrdinaryDiffEqExtrapolation", "OrdinaryDiffEqFIRK", "OrdinaryDiffEqFeagin", "OrdinaryDiffEqFunctionMap", "OrdinaryDiffEqHighOrderRK", "OrdinaryDiffEqIMEXMultistep", "OrdinaryDiffEqLinear", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqLowStorageRK", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqNordsieck", "OrdinaryDiffEqPDIRK", "OrdinaryDiffEqPRK", "OrdinaryDiffEqQPRK", "OrdinaryDiffEqRKN", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqSSPRK", "OrdinaryDiffEqStabilizedIRK", "OrdinaryDiffEqStabilizedRK", "OrdinaryDiffEqSymplecticRK", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "2d7026dd8e4c7b3e7f47eef9c13c60ae55fe4912" +uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +version = "6.95.1" + +[[deps.OrdinaryDiffEqAdamsBashforthMoulton]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "82f78099ecf4e0fa53545811318520d87e7fe0b8" +uuid = "89bda076-bce5-4f1c-845f-551c83cdda9a" +version = "1.2.0" + +[[deps.OrdinaryDiffEqBDF]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqSDIRK", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "StaticArrays", "TruncatedStacktraces"] +git-tree-sha1 = "a72bf554d5fd1f33a8d2aead3562eddd28ba4c76" +uuid = "6ad6398a-0878-4a85-9266-38940aa047c8" +version = "1.5.0" + +[[deps.OrdinaryDiffEqCore]] +deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "FastBroadcast", "FastClosures", "FastPower", "FillArrays", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleUnPack", "Static", "StaticArrayInterface", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "af7374f4af1b9a67ce29524e7fd328fa3da33189" +uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" +version = "1.23.0" +weakdeps = ["EnzymeCore"] + + [deps.OrdinaryDiffEqCore.extensions] + OrdinaryDiffEqCoreEnzymeCoreExt = "EnzymeCore" + +[[deps.OrdinaryDiffEqDefault]] +deps = ["ADTypes", "DiffEqBase", "EnumX", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "PrecompileTools", "Preferences", "Reexport"] +git-tree-sha1 = "835c06684b6ff1b8904ceae4d18cc8fe45b9a7cc" +uuid = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" +version = "1.3.0" + +[[deps.OrdinaryDiffEqDifferentiation]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseMatrixColorings", "StaticArrayInterface", "StaticArrays"] +git-tree-sha1 = "6595287379a518d7eb8f02edc49a96a02396e887" +uuid = "4302a76b-040a-498a-8c04-15b101fed76b" +version = "1.7.0" + +[[deps.OrdinaryDiffEqExplicitRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"] +git-tree-sha1 = "4dbce3f9e6974567082ce5176e21aab0224a69e9" +uuid = "9286f039-9fbf-40e8-bf65-aa933bdc4db0" +version = "1.1.0" + +[[deps.OrdinaryDiffEqExponentialRK]] +deps = ["ADTypes", "DiffEqBase", "ExponentialUtilities", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqVerner", "RecursiveArrayTools", "Reexport", "SciMLBase"] +git-tree-sha1 = "8d2ab84d7fabdfde995e5f567361f238069497f5" +uuid = "e0540318-69ee-4070-8777-9e2de6de23de" +version = "1.4.0" + +[[deps.OrdinaryDiffEqExtrapolation]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastPower", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "80a636aac325c546b04e3bf20f0c80eaa0173dd4" +uuid = "becaefa8-8ca2-5cf9-886d-c06f3d2bd2c4" +version = "1.5.0" + +[[deps.OrdinaryDiffEqFIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastGaussQuadrature", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "7d2c82c13a634f7400a3f398d33f1354ab38a090" +uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" +version = "1.10.0" + +[[deps.OrdinaryDiffEqFeagin]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "a7cc74d3433db98e59dc3d58bc28174c6c290adf" +uuid = "101fe9f7-ebb6-4678-b671-3a81e7194747" +version = "1.1.0" + +[[deps.OrdinaryDiffEqFunctionMap]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "925a91583d1ab84f1f0fea121be1abf1179c5926" +uuid = "d3585ca7-f5d3-4ba6-8057-292ed1abd90f" +version = "1.1.1" + +[[deps.OrdinaryDiffEqHighOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "103e017ff186ac39d731904045781c9bacfca2b0" +uuid = "d28bc4f8-55e1-4f49-af69-84c1a99f0f58" +version = "1.1.0" + +[[deps.OrdinaryDiffEqIMEXMultistep]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Reexport"] +git-tree-sha1 = "095bab73a3ff185e9ef971fc42ecc93c7824e589" +uuid = "9f002381-b378-40b7-97a6-27a27c83f129" +version = "1.3.0" + +[[deps.OrdinaryDiffEqLinear]] +deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "0f81a77ede3da0dc714ea61e81c76b25db4ab87a" +uuid = "521117fe-8c41-49f8-b3b6-30780b3f0fb5" +version = "1.1.0" + +[[deps.OrdinaryDiffEqLowOrderRK]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] +git-tree-sha1 = "d4bb32e09d6b68ce2eb45fb81001eab46f60717a" +uuid = "1344f307-1e59-4825-a18e-ace9aa3fa4c6" +version = "1.2.0" + +[[deps.OrdinaryDiffEqLowStorageRK]] +deps = ["Adapt", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] +git-tree-sha1 = "52ec7081e65291fa5c19749312df0818db2fa1bc" +uuid = "b0944070-b475-4768-8dec-fb6eb410534d" +version = "1.3.0" + +[[deps.OrdinaryDiffEqNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "PreallocationTools", "RecursiveArrayTools", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "StaticArrays"] +git-tree-sha1 = "d75cf29dea3a72bac7a5b21523ac969b71f43e96" +uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8" +version = "1.6.1" + +[[deps.OrdinaryDiffEqNordsieck]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "ef44754f10e0dfb9bb55ded382afed44cd94ab57" +uuid = "c9986a66-5c92-4813-8696-a7ec84c806c8" +version = "1.1.0" + +[[deps.OrdinaryDiffEqPDIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "Reexport", "StaticArrays"] +git-tree-sha1 = "f74b27b8b811a83d77a9cad6293e793ab0804cdc" +uuid = "5dd0a6cf-3d4b-4314-aa06-06d4e299bc89" +version = "1.3.0" + +[[deps.OrdinaryDiffEqPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "Reexport"] +git-tree-sha1 = "da525d277962a1b76102c79f30cb0c31e13fe5b9" +uuid = "5b33eab2-c0f1-4480-b2c3-94bc1e80bda1" +version = "1.1.0" + +[[deps.OrdinaryDiffEqQPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "332f9d17d0229218f66a73492162267359ba85e9" +uuid = "04162be5-8125-4266-98ed-640baecc6514" +version = "1.1.0" + +[[deps.OrdinaryDiffEqRKN]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "41c09d9c20877546490f907d8dffdd52690dd65f" +uuid = "af6ede74-add8-4cfd-b1df-9a4dbb109d7a" +version = "1.1.0" + +[[deps.OrdinaryDiffEqRosenbrock]] +deps = ["ADTypes", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"] +git-tree-sha1 = "baa4a9b4380b2fb65f1e2b4ec01d3bd019a6dcea" +uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" +version = "1.9.0" + +[[deps.OrdinaryDiffEqSDIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] +git-tree-sha1 = "b3a7e3a2f355d837c823b435630f035aef446b45" +uuid = "2d112036-d095-4a1e-ab9a-08536f3ecdbf" +version = "1.3.0" + +[[deps.OrdinaryDiffEqSSPRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "StaticArrays"] +git-tree-sha1 = "651756c030df7a1d49ad484288937f8c398e8a08" +uuid = "669c94d9-1f4b-4b64-b377-1aa079aa2388" +version = "1.3.0" + +[[deps.OrdinaryDiffEqStabilizedIRK]] +deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "StaticArrays"] +git-tree-sha1 = "111c23b68ad644b47e38242af920d5805c7bedb1" +uuid = "e3e12d00-db14-5390-b879-ac3dd2ef6296" +version = "1.3.0" + +[[deps.OrdinaryDiffEqStabilizedRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "StaticArrays"] +git-tree-sha1 = "1b0d894c880e25f7d0b022d7257638cf8ce5b311" +uuid = "358294b1-0aab-51c3-aafe-ad5ab194a2ad" +version = "1.1.0" + +[[deps.OrdinaryDiffEqSymplecticRK]] +deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport"] +git-tree-sha1 = "a13d59a2d6cfb6a3332a7782638ca6e1cb6ca688" +uuid = "fa646aed-7ef9-47eb-84c4-9443fc8cbfa8" +version = "1.3.0" + +[[deps.OrdinaryDiffEqTsit5]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "96552f7d4619fabab4038a29ed37dd55e9eb513a" +uuid = "b1df2697-797e-41e3-8120-5422d3b24e4a" +version = "1.1.0" + +[[deps.OrdinaryDiffEqVerner]] +deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static", "TruncatedStacktraces"] +git-tree-sha1 = "08f2d3be30874b6e2e937a06b501fb9811f7d8bd" +uuid = "79d7bb75-1356-48c1-b8c0-6832512096c2" +version = "1.2.0" + +[[deps.PCRE2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" +version = "10.42.0+1" + +[[deps.Pango_jll]] +deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "3b31172c032a1def20c98dae3f2cdc9d10e3b561" +uuid = "36c8627f-9965-5494-a995-c6b170f724f3" +version = "1.56.1+0" + +[[deps.Parameters]] +deps = ["OrderedCollections", "UnPack"] +git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" +uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" +version = "0.12.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.3" + +[[deps.Pixman_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] +git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.44.2+0" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.11.0" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" + +[[deps.PlotThemes]] +deps = ["PlotUtils", "Statistics"] +git-tree-sha1 = "41031ef3a1be6f5bbbf3e8073f210556daeae5ca" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "3.3.0" + +[[deps.PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "StableRNGs", "Statistics"] +git-tree-sha1 = "3ca9a356cd2e113c420f2c13bea19f8d3fb1cb18" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.4.3" + +[[deps.Plots]] +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "809ba625a00c605f8d00cd2a9ae19ce34fc24d68" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.40.13" + + [deps.Plots.extensions] + FileIOExt = "FileIO" + GeometryBasicsExt = "GeometryBasics" + IJuliaExt = "IJulia" + ImageInTerminalExt = "ImageInTerminal" + UnitfulExt = "Unitful" + + [deps.Plots.weakdeps] + FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" + GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" + IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" + ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Polyester]] +deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] +git-tree-sha1 = "6d38fea02d983051776a856b7df75b30cf9a3c1f" +uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" +version = "0.7.16" + +[[deps.PolyesterWeave]] +deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] +git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd" +uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" +version = "0.2.2" + +[[deps.PreallocationTools]] +deps = ["Adapt", "ArrayInterface", "ForwardDiff"] +git-tree-sha1 = "6d98eace73d82e47f5b16c393de198836d9f790a" +uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +version = "0.4.27" +weakdeps = ["ReverseDiff", "SparseConnectivityTracer"] + + [deps.PreallocationTools.extensions] + PreallocationToolsReverseDiffExt = "ReverseDiff" + PreallocationToolsSparseConnectivityTracerExt = "SparseConnectivityTracer" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.1" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "9306f6085165d270f7e3db02af26a400d580f5c6" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.3" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "1101cd475833706e4d0e7b122218257178f48f34" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.4.0" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" + +[[deps.PtrArrays]] +git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.3.0" + +[[deps.Qt6Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_jll"] +git-tree-sha1 = "492601870742dcd38f233b23c3ec629628c1d724" +uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" +version = "6.7.1+1" + +[[deps.Qt6Declarative_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"] +git-tree-sha1 = "e5dd466bf2569fe08c91a2cc29c1003f4797ac3b" +uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" +version = "6.7.1+2" + +[[deps.Qt6ShaderTools_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "1a180aeced866700d4bebc3120ea1451201f16bc" +uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" +version = "6.7.1+1" + +[[deps.Qt6Wayland_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] +git-tree-sha1 = "729927532d48cf79f49070341e1d918a65aba6b0" +uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" +version = "6.7.1+1" + +[[deps.Quadmath]] +deps = ["Compat", "Printf", "Random", "Requires"] +git-tree-sha1 = "6bc924717c495f24de85867aa94da4de0e6cd1a1" +uuid = "be4d8f0f-7fa4-5f49-b795-2f01399ab2dd" +version = "0.5.13" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" + +[[deps.Ratios]] +deps = ["Requires"] +git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" +uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" +version = "0.4.5" +weakdeps = ["FixedPointNumbers"] + + [deps.Ratios.extensions] + RatiosFixedPointNumbersExt = "FixedPointNumbers" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] +git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.6.12" + +[[deps.RecursiveArrayTools]] +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "2e154f7d7e38db1af0a14ec751aba33360c3bef9" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "3.33.0" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" + RecursiveArrayToolsForwardDiffExt = "ForwardDiff" + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] + RecursiveArrayToolsSparseArraysExt = ["SparseArrays"] + RecursiveArrayToolsStructArraysExt = "StructArrays" + RecursiveArrayToolsTrackerExt = "Tracker" + RecursiveArrayToolsZygoteExt = "Zygote" + + [deps.RecursiveArrayTools.weakdeps] + FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.RegistryInstances]] +deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"] +git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51" +uuid = "2792f1a3-b283-48e8-9a74-f99dce5104f3" +version = "0.1.0" + +[[deps.RelocatableFolders]] +deps = ["SHA", "Scratch"] +git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" +uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" +version = "1.0.1" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.1" + +[[deps.ReverseDiff]] +deps = ["ChainRulesCore", "DiffResults", "DiffRules", "ForwardDiff", "FunctionWrappers", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "Random", "SpecialFunctions", "StaticArrays", "Statistics"] +git-tree-sha1 = "3ab8eee3620451b09f0272c271875b4bc02146d9" +uuid = "37e2e3b7-166d-5795-8a7a-e32c996b4267" +version = "1.16.1" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "7cb9d10026d630ce2dd2a1fc6006a3d5041b34c0" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.14" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.SIMDTypes]] +git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" +uuid = "94e857df-77ce-4151-89e5-788b33177be4" +version = "0.1.0" + +[[deps.SPRAL_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] +git-tree-sha1 = "11f3da4b25efacd1cec8e263421f2a9003a5e8e0" +uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" +version = "2024.5.8+0" + +[[deps.SciMLBase]] +deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] +git-tree-sha1 = "2fd047893cb0089b180fcbb7e8434ba15dcc2841" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.87.0" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBaseMLStyleExt = "MLStyle" + SciMLBaseMakieExt = "Makie" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseZygoteExt = ["Zygote", "ChainRulesCore"] + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + MLStyle = "d8e11817-5142-5d16-987a-aa16d5891078" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLJacobianOperators]] +deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "6e9d280334839fe405fdab2a1268f2969c9d3eeb" +uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" +version = "0.1.3" + +[[deps.SciMLOperators]] +deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] +git-tree-sha1 = "1c4b7f6c3e14e6de0af66e66b86d525cae10ecb4" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "0.3.13" +weakdeps = ["SparseArrays", "StaticArraysCore"] + + [deps.SciMLOperators.extensions] + SciMLOperatorsSparseArraysExt = "SparseArrays" + SciMLOperatorsStaticArraysCoreExt = "StaticArraysCore" + +[[deps.SciMLStructures]] +deps = ["ArrayInterface"] +git-tree-sha1 = "566c4ed301ccb2a44cbd5a27da5f885e0ed1d5df" +uuid = "53ae85a6-f571-4167-b2af-e1d143709226" +version = "1.7.0" + +[[deps.Scratch]] +deps = ["Dates"] +git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.2.1" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" + +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "c5391c6ace3bc430ca630251d02ea9687169ca68" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.2" + +[[deps.SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" +version = "1.11.0" + +[[deps.Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[deps.SimpleBufferStream]] +git-tree-sha1 = "f305871d2f381d21527c770d4788c06c097c9bc1" +uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" +version = "1.2.0" + +[[deps.SimpleNonlinearSolve]] +deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] +git-tree-sha1 = "068c16a16834c1483c299b0e27e901599439570d" +uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" +version = "2.4.0" + + [deps.SimpleNonlinearSolve.extensions] + SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" + SimpleNonlinearSolveDiffEqBaseExt = "DiffEqBase" + SimpleNonlinearSolveReverseDiffExt = "ReverseDiff" + SimpleNonlinearSolveTrackerExt = "Tracker" + + [deps.SimpleNonlinearSolve.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + +[[deps.SimpleUnPack]] +git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" +uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" +version = "1.1.0" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SolverCore]] +deps = ["LinearAlgebra", "NLPModels", "Printf"] +git-tree-sha1 = "03a1e0d2d39b9ebc9510f2452c0adfbe887b9cb2" +uuid = "ff4d7338-4cf1-434d-91df-b86cb86fb843" +version = "0.3.8" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.1" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.11.0" + +[[deps.SparseConnectivityTracer]] +deps = ["ADTypes", "DocStringExtensions", "FillArrays", "LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "fadb2d7010dd92912e5eb31a493613ad4b8c9583" +uuid = "9f842d2f-2579-4b1d-911e-f412cf18a3f5" +version = "0.6.18" + + [deps.SparseConnectivityTracer.extensions] + SparseConnectivityTracerDataInterpolationsExt = "DataInterpolations" + SparseConnectivityTracerLogExpFunctionsExt = "LogExpFunctions" + SparseConnectivityTracerNNlibExt = "NNlib" + SparseConnectivityTracerNaNMathExt = "NaNMath" + SparseConnectivityTracerSpecialFunctionsExt = "SpecialFunctions" + + [deps.SparseConnectivityTracer.weakdeps] + DataInterpolations = "82cc6244-b520-54b8-b5a6-8a565e85f1d0" + LogExpFunctions = "2ab3a3ac-af41-5b50-aa03-7779005ae688" + NNlib = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" + NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" + SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" + +[[deps.SparseMatrixColorings]] +deps = ["ADTypes", "DocStringExtensions", "LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "76e9564f0de0d1d7a46095e758ae13ceba680cfb" +uuid = "0a514795-09f3-496d-8182-132a7b665d35" +version = "0.4.19" + + [deps.SparseMatrixColorings.extensions] + SparseMatrixColoringsCliqueTreesExt = "CliqueTrees" + SparseMatrixColoringsColorsExt = "Colors" + + [deps.SparseMatrixColorings.weakdeps] + CliqueTrees = "60701a23-6482-424a-84db-faee86b9b1f8" + Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "41852b8679f78c8d8961eeadc8f62cef861a52e3" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.5.1" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StableRNGs]] +deps = ["Random"] +git-tree-sha1 = "95af145932c2ed859b63329952ce8d633719f091" +uuid = "860ef19b-820b-49d6-a774-d7a799459cd3" +version = "1.0.3" + +[[deps.Static]] +deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"] +git-tree-sha1 = "f737d444cb0ad07e61b3c1bef8eb91203c321eff" +uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" +version = "1.2.0" + +[[deps.StaticArrayInterface]] +deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"] +git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554" +uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" +version = "1.8.0" +weakdeps = ["OffsetArrays", "StaticArrays"] + + [deps.StaticArrayInterface.extensions] + StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" + StaticArrayInterfaceStaticArraysExt = "StaticArrays" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "0feb6b9031bd5c51f9072393eb5ab3efd31bf9e4" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.13" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["AliasTables", "DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "b81c5035922cc89c2d9523afc6c54be512411466" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.5" + +[[deps.StrideArraysCore]] +deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] +git-tree-sha1 = "f35f6ab602df8413a50c4a25ca14de821e8605fb" +uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" +version = "0.5.7" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "725421ae8e530ec29bcbdddbe91ff8053421d023" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.4.1" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.7.0+0" + +[[deps.Suppressor]] +deps = ["Logging"] +git-tree-sha1 = "6dbb5b635c5437c68c28c2ac9e39b87138f37c0a" +uuid = "fd094767-a336-5f1f-9728-57cf17d0bbfb" +version = "0.2.8" + +[[deps.SymbolicIndexingInterface]] +deps = ["Accessors", "ArrayInterface", "PrettyTables", "RuntimeGeneratedFunctions", "StaticArraysCore"] +git-tree-sha1 = "b6a641e38efa01355aa721246dd246e10c7dcd4d" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.3.40" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.12.0" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" + +[[deps.ThreadingUtilities]] +deps = ["ManualMemory"] +git-tree-sha1 = "18ad3613e129312fe67789a71720c3747e598a61" +uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" +version = "0.5.3" + +[[deps.TimerOutputs]] +deps = ["ExprTools", "Printf"] +git-tree-sha1 = "f57facfd1be61c42321765d3551b3df50f7e09f6" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "0.5.28" + + [deps.TimerOutputs.extensions] + FlameGraphsExt = "FlameGraphs" + + [deps.TimerOutputs.weakdeps] + FlameGraphs = "08572546-2f56-4bcf-ba4e-bab62c3a3f89" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.11.3" + +[[deps.TruncatedStacktraces]] +deps = ["InteractiveUtils", "MacroTools", "Preferences"] +git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" +uuid = "781d530d-4396-4725-bb49-402e4bee1e77" +version = "1.4.0" + +[[deps.Tutorials]] +path = "/Users/ocots/Research/logiciels/dev/control-toolbox/Tutorials" +uuid = "cb10daa6-a5e5-4c25-a171-ae181b8ea3c9" +version = "0.1.3" + +[[deps.URIs]] +git-tree-sha1 = "cbbebadbcc76c5ca1cc4b4f3b0614b3e603b5000" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.5.2" + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" + +[[deps.UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" + +[[deps.UnicodeFun]] +deps = ["REPL"] +git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" +uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" +version = "0.4.1" + +[[deps.Unitful]] +deps = ["Dates", "LinearAlgebra", "Random"] +git-tree-sha1 = "c0667a8e676c53d390a09dc6870b3d8d6650e2bf" +uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" +version = "1.22.0" +weakdeps = ["ConstructionBase", "InverseFunctions"] + + [deps.Unitful.extensions] + ConstructionBaseUnitfulExt = "ConstructionBase" + InverseFunctionsUnitfulExt = "InverseFunctions" + +[[deps.UnitfulLatexify]] +deps = ["LaTeXStrings", "Latexify", "Unitful"] +git-tree-sha1 = "975c354fcd5f7e1ddcc1f1a23e6e091d99e99bc8" +uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" +version = "1.6.4" + +[[deps.Unzip]] +git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" +uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" +version = "0.2.0" + +[[deps.Vulkan_Loader_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"] +git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59" +uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c" +version = "1.3.243+0" + +[[deps.Wayland_jll]] +deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "85c7811eddec9e7f22615371c3cc81a504c508ee" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.21.0+2" + +[[deps.Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "5db3e9d307d32baba7067b13fc7b5aa6edd4a19a" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.36.0+0" + +[[deps.WoodburyMatrices]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "c1a7aa6219628fcd757dede0ca95e245c5cd9511" +uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" +version = "1.0.0" + +[[deps.XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] +git-tree-sha1 = "b8b243e47228b4a3877f1dd6aee0c5d56db7fcf4" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.13.6+1" + +[[deps.XZ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "fee71455b0aaa3440dfdd54a9a36ccef829be7d4" +uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" +version = "5.8.1+0" + +[[deps.Xorg_libICE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a3ea76ee3f4facd7a64684f9af25310825ee3668" +uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" +version = "1.1.2+0" + +[[deps.Xorg_libSM_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"] +git-tree-sha1 = "9c7ad99c629a44f81e7799eb05ec2746abb5d588" +uuid = "c834827a-8449-5923-a945-d239c165b7dd" +version = "1.2.6+0" + +[[deps.Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.8.12+0" + +[[deps.Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "aa1261ebbac3ccc8d16558ae6799524c450ed16b" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.13+0" + +[[deps.Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "6c74ca84bbabc18c4547014765d194ff0b4dc9da" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.4+0" + +[[deps.Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "52858d64353db33a56e13c341d7bf44cd0d7b309" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.6+0" + +[[deps.Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.7+0" + +[[deps.Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "9caba99d38404b285db8801d5c45ef4f4f425a6d" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "6.0.1+0" + +[[deps.Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "a376af5c7ae60d29825164db40787f15c80c7c54" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.8.3+0" + +[[deps.Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll"] +git-tree-sha1 = "a5bc75478d323358a90dc36766f3c99ba7feb024" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.6+0" + +[[deps.Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "aff463c82a773cb86061bce8d53a0d976854923e" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.5+0" + +[[deps.Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.12+0" + +[[deps.Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] +git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.17.1+0" + +[[deps.Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] +git-tree-sha1 = "e3150c7400c41e207012b41659591f083f3ef795" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.3+0" + +[[deps.Xorg_xcb_util_cursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"] +git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd" +uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43" +version = "0.1.4+0" + +[[deps.Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[deps.Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[deps.Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[deps.Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "801a858fc9fb90c11ffddee1801bb06a738bda9b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.7+0" + +[[deps.Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "00af7ebdc563c9217ecc67776d1bbf037dbcebf4" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.44.0+0" + +[[deps.Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "a63799ff68005991f9d9491b6e95bd3478d783cb" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.6.0+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[deps.Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "446b23e73536f84e8037f5dce465e92275f6a308" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.7+1" + +[[deps.cminpack_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll"] +git-tree-sha1 = "ca8a038b2cabd4fe3dd206de56ac1285131515a0" +uuid = "b792d7bf-f512-5dba-8a02-6d8084434f1d" +version = "1.3.12+0" + +[[deps.eudev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"] +git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba" +uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06" +version = "3.2.9+0" + +[[deps.fzf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "b6a34e0e0960190ac2a4363a1bd003504772d631" +uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" +version = "0.61.1+0" + +[[deps.gperf_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0ba42241cb6809f1a278d0bcb976e0483c3f1f2d" +uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" +version = "3.1.1+1" + +[[deps.libaom_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "522c1df09d05a71785765d19c9524661234738e9" +uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" +version = "3.11.0+0" + +[[deps.libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "e17c115d55c5fbb7e52ebedb427a0dca79d4484e" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.15.2+0" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.11.0+0" + +[[deps.libdecor_jll]] +deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] +git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f" +uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" +version = "0.2.2+0" + +[[deps.libevdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22" +uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc" +version = "1.11.0+0" + +[[deps.libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "2.0.3+0" + +[[deps.libinput_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"] +git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce" +uuid = "36db933b-70db-51c0-b978-0f229ee0e533" +version = "1.18.0+0" + +[[deps.libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "068dfe202b0a05b8332f1e8e6b4080684b9c7700" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.47+0" + +[[deps.libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "490376214c4721cdaca654041f635213c6165cb3" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+2" + +[[deps.mtdev_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11" +uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e" +version = "1.1.6+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.59.0+0" + +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d5a767a3bb77135a99e433afe0eb14cd7f6914c3" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2022.0.0+0" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" + +[[deps.x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2021.5.5+0" + +[[deps.x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.5.0+0" + +[[deps.xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "c950ae0a3577aec97bfccf3381f66666bc416729" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "1.8.1+0" diff --git a/docs/src/assets/Project.toml b/docs/src/assets/Project.toml new file mode 100644 index 0000000..9acefec --- /dev/null +++ b/docs/src/assets/Project.toml @@ -0,0 +1,29 @@ +[deps] +DifferentiationInterface = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" +Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +MINPACK = "4854310b-de5a-5eb6-a2a5-c1dee2bd17f9" +MadNLP = "2621e9c9-9eb4-46b1-8089-e8c72242dfb6" +NLPModelsIpopt = "f4238b75-b362-5c4c-b852-0801c9a21d71" +NonlinearSolve = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" +OptimalControl = "5f98b655-cc9a-415a-b60e-744165666948" +OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" +Tutorials = "cb10daa6-a5e5-4c25-a171-ae181b8ea3c9" + +[compat] +DifferentiationInterface = "0.6" +Documenter = "1.8" +ForwardDiff = "0.10" +LinearAlgebra = "1" +MINPACK = "1.3" +MadNLP = "0.8" +NLPModelsIpopt = "0.10" +NonlinearSolve = "4.6" +OptimalControl = "1.0" +OrdinaryDiffEq = "6.93" +Plots = "1.40" +Suppressor = "0.2" +julia = "1" diff --git a/docs/src/assets/ship.jpg b/docs/src/assets/ship.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc5dee81c0fb5ceebe4663b8502cd9e853d1aedd GIT binary patch literal 96631 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorial-mpc.md b/docs/src/tutorial-mpc.md new file mode 100644 index 0000000..537d0da --- /dev/null +++ b/docs/src/tutorial-mpc.md @@ -0,0 +1,384 @@ +# Navigation problem, MPC approach + +We consider a ship in a constant current $w=(w_x,w_y)$, where $\|w\|<1$. +The [heading angle](https://en.wikipedia.org/wiki/Heading) is controlled, leading to the following differential equations: + +```math +\begin{array}{rcl} + \dot{x}(t) &=& w_x + \cos\theta(t), \quad t \in [0, t_f] \\ + \dot{y}(t) &=& w_y + \sin\theta(t), \\ + \dot{\theta}(t) &=& u(t). +\end{array} +``` + +The angular velocity is limited and normalized: $\|u(t)\| \leq 1$. There are boundary conditions at the initial time $t=0$ and at the final time $t=t_f$, on the position $(x,y)$ and on the angle $\theta$. The objective is to minimize the final time. This topic stems from a collaboration between the University Côte d'Azur and the French company [CGG](https://www.cgg.com), which is interested in optimal maneuvers of very large ships for marine exploration. + +```@raw html + +``` + +## Data + +```@example main +using OptimalControl, NLPModelsIpopt, Plots, OrdinaryDiffEq, LinearAlgebra, Plots.PlotMeasures + +t0 = 0. +x0 = 0. +y0 = 0. +θ0 = π/7 +xf = 4. +yf = 7. +θf = -π/2 + +function current(x, y) # current as a function of position + ε = 1e-1 + w = [ 0.6, 0.4 ] + δw = ε * [ y, -x ] / sqrt(1+x^2+y^2) + w = w + δw + if (w[1]^2 + w[2]^2 >= 1) + error("|w| >= 1") + end + return w +end + +# +function plot_state!(plt, x, y, θ; color=1) + plot!(plt, [x], [y], marker=:circle, legend=false, color=color, markerstrokecolor=color, markersize=5, z_order=:front) + quiver!(plt, [x], [y], quiver=([cos(θ)], [sin(θ)]), color=color, linewidth=2, z_order=:front) + return plt +end + +function plot_current!(plt; current=current, N=10, scaling=1) + for x ∈ range(xlims(plt)..., N) + for y ∈ range(ylims(plt)..., N) + w = scaling*current(x, y) + quiver!(plt, [x], [y], quiver=([w[1]], [w[2]]), color=:black, linewidth=0.5, z_order=:back) + end + end + return plt +end + +# Display the boundary conditions and the current in the augmented phase plane +plt = plot( + xlims=(-2, 6), + ylims=(-1, 8), + size=(600, 600), + aspect_ratio=1, + xlabel="x", + ylabel="y", + title="Boundary Conditions", + leftmargin=5mm, + bottommargin=5mm, +) + +plot_state!(plt, x0, y0, θ0; color=2) +plot_state!(plt, xf, yf, θf; color=2) +plot_current!(plt) +``` + +```@example main +function plot_trajectory!(plt, t, x, y, θ; N=5) # N: number of points where we will display θ + + # trajectory + plot!(plt, x.(t), y.(t), legend=false, color=1, linewidth=2, z_order=:front) + + if N > 0 + + # length of the path + s = 0 + for i ∈ 2:length(t) + s += norm([x(t[i]), y(t[i])] - [x(t[i-1]), y(t[i-1])]) + end + + # interval of length + Δs = s/(N+1) + tis = [] + s = 0 + for i ∈ 2:length(t) + s += norm([x(t[i]), y(t[i])] - [x(t[i-1]), y(t[i-1])]) + if s > Δs && length(tis) < N + push!(tis, t[i]) + s = 0 + end + end + + # display intermediate points + for ti ∈ tis + plot_state!(plt, x(ti), y(ti), θ(ti); color=1) + end + + end + + return plt + +end +nothing # hide +``` + +## OptimalControl solver + +```@example main +function solve(t0, x0, y0, θ0, xf, yf, θf, w; + grid_size=300, tol=1e-8, max_iter=500, print_level=4, display=true) + + # Definition of the problem + ocp = @def begin + + tf ∈ R, variable + t ∈ [t0, tf], time + q = (x, y, θ) ∈ R³, state + u ∈ R, control + + -1 ≤ u(t) ≤ 1 + + q(t0) == [ x0, y0, θ0 ] + q(tf) == [ xf, yf, θf ] + + q̇(t) == [ w[1]+cos(θ(t)), + w[2]+sin(θ(t)), + u(t)] + + tf → min + + end + + # Initialization + tf_init = 1.5*norm([xf, yf]-[x0, y0]) + x_init(t) = [ x0, y0, θ0 ] * (tf_init-t)/(tf_init-t0) + [xf, yf, θf] * (t-t0)/(tf_init-t0) + u_init = (θf - θ0) / (tf_init-t0) + init = (state=x_init, control=u_init, variable=tf_init) + + # Resolution + sol = OptimalControl.solve(ocp; + init=init, + grid_size=grid_size, + tol=tol, + max_iter=max_iter, + print_level=print_level, + display=display, + disc_method=:euler, + ) + + # Retrieval of useful data + t = time_grid(sol) + q = state(sol) + x = t -> q(t)[1] + y = t -> q(t)[2] + θ = t -> q(t)[3] + u = control(sol) + tf = variable(sol) + + return t, x, y, θ, u, tf, iterations(sol), sol.solver_infos.constraints_violation + +end +nothing # hide +``` + +## First resolution + +We consider a constant current and we solve a first time the problem. + +```@example main +# Resolution +t, x, y, θ, u, tf, iter, cons = solve(t0, x0, y0, θ0, xf, yf, θf, current(x0, y0); display=false); + +println("Iterations: ", iter) +println("Constraints violation: ", cons) +println("tf: ", tf) + +# Displaying the trajectory +plt_q = plot(xlims=(-2, 6), ylims=(-1, 8), aspect_ratio=1, xlabel="x", ylabel="y") +plot_state!(plt_q, x0, y0, θ0; color=2) +plot_state!(plt_q, xf, yf, θf; color=2) +plot_current!(plt_q; current=(x, y) -> current(x0, y0)) +plot_trajectory!(plt_q, t, x, y, θ) + +# Displaying the control +plt_u = plot(t, u; color=1, legend=false, linewidth=2, xlabel="t", ylabel="u") + +# Final display +plot(plt_q, plt_u; + layout=(1, 2), + size=(1200, 600), + leftmargin=5mm, + bottommargin=5mm, + plot_title="Constant Current Simulation" +) +``` + +## Simulation of the Real System + +In the previous simulation, we assumed that the current is constant. However, from a practical standpoint, the current depends on the position $(x, y)$. Given a current model, provided by the function `current`, we can simulate the actual trajectory of the ship, as long as we have the initial condition and the control over time. + +```@example main +function realistic_trajectory(tf, t0, x0, y0, θ0, u, current; abstol=1e-12, reltol=1e-12, saveat=[]) + + function rhs!(dq, q, dummy, t) + x, y, θ = q + w = current(x, y) + dq[1] = w[1] + cos(θ) + dq[2] = w[2] + sin(θ) + dq[3] = u(t) + end + + q0 = [x0, y0, θ0] + tspan = (t0, tf) + ode = ODEProblem(rhs!, q0, tspan) + sol = OrdinaryDiffEq.solve(ode, Tsit5(), abstol=abstol, reltol=reltol, saveat=saveat) + + t = sol.t + x = t -> sol(t)[1] + y = t -> sol(t)[2] + θ = t -> sol(t)[3] + + return t, x, y, θ + +end +nothing # hide +``` + +```@example main +# Realistic trajectory +t, x, y, θ = realistic_trajectory(tf, t0, x0, y0, θ0, u, current) + +# Displaying the trajectory +plt_q = plot(xlims=(-2, 6), ylims=(-1, 8), aspect_ratio=1, xlabel="x", ylabel="y") +plot_state!(plt_q, x0, y0, θ0; color=2) +plot_state!(plt_q, xf, yf, θf; color=2) +plot_current!(plt_q; current=current) +plot_trajectory!(plt_q, t, x, y, θ) +plot_state!(plt_q, x(tf), y(tf), θ(tf); color=3) + +# Displaying the control +plt_u = plot(t, u; color=1, legend=false, linewidth=2, xlabel="t", ylabel="u") + +# Final display +plot(plt_q, plt_u; + layout=(1, 2), + size=(1200, 600), + leftmargin=5mm, + bottommargin=5mm, + plot_title="Simulation with Current Model" +) +``` + +## MPC Approach + +In practice, we do not have the actual current data for the entire trajectory in advance, which is why we will regularly recalculate the optimal control. The idea is to update the optimal control at regular time intervals, taking into account the current at the position where the ship is located. We are therefore led to solve a number of problems with constant current, with this being updated regularly. This is an introduction to the so-called Model Predictive Control (MPC) methods. + +```@example main +function MPC(t0, x0, y0, θ0, xf, yf, θf, current) + + Nmax = 20 # maximum number of iterations for the MPC method + ε = 1e-1 # radius on the final condition to stop calculations + Δt = 1.0 # fixed time step for the MPC method + P = 300 # number of discretization points for the solver + + t1 = t0 + x1 = x0 + y1 = y0 + θ1 = θ0 + + data = [] + + N = 1 + stop = false + + while !stop + + # Retrieve the current at the current position + w = current(x1, y1) + + # Solve the problem + t, x, y, θ, u, tf, iter, cons = solve(t1, x1, y1, θ1, xf, yf, θf, w; grid_size=P, display=false); + + # Calculate the next time + if (t1 + Δt < tf) + t2 = t1 + Δt + else + t2 = tf + println("t2=tf: ", t2) + stop = true + end + + # Store the data: the current initial time, the next time, the control + push!(data, (t2, t1, x(t1), y(t1), θ(t1), u, tf)) + + # Update the parameters of the MPC method: simulate reality + t, x, y, θ = realistic_trajectory(t2, t1, x1, y1, θ1, u, current) + t1 = t2 + x1 = x(t1) + y1 = y(t1) + θ1 = θ(t1) + + # Calculate the distance to the target position + distance = norm([x1, y1, θ1] - [xf, yf, θf]) + println("N: ", N, "\t distance: ", distance, "\t iterations: ", iter, "\t constraints: ", cons, "\t tf: ", tf) + if !((distance > ε) && (N < Nmax)) + stop = true + end + + # + N += 1 + + end + + return data +end + +data = MPC(t0, x0, y0, θ0, xf, yf, θf, current) +nothing # hide +``` + +## Display + +```@example main +# Trajectory +plt_q = plot(xlims=(-2, 6), ylims=(-1, 8), aspect_ratio=1, xlabel="x", ylabel="y") + +# Final condition +plot_state!(plt_q, xf, yf, θf; color=2) + +# Current +plot_current!(plt_q; current=current) + +# Control +plt_u = plot(xlabel="t", ylabel="u") + +for d ∈ data + + t2, t1, x1, y1, θ1, u, tf = d + + # Calculate the actual trajectory + t, x, y, θ = realistic_trajectory(t2, t1, x1, y1, θ1, u, current) + + # Trajectory + plot_state!(plt_q, x1, y1, θ1; color=2) + plot_trajectory!(plt_q, t, x, y, θ; N=0) + + # Control + plot!(plt_u, t, u; color=1, legend=false, linewidth=2) + +end + +# last point +d = data[end] +t2, t1, x1, y1, θ1, u, tf = d +t, x, y, θ = realistic_trajectory(t2, t1, x1, y1, θ1, u, current) +plot_state!(plt_q, x(tf), y(tf), θ(tf); color=3) + +# +plot(plt_q, plt_u; + layout=(1, 2), + size=(1200, 600), + leftmargin=5mm, + bottommargin=5mm, + plot_title="Simulation with Current Model" +) +``` \ No newline at end of file From c9a146c1a527467232360c575d6ec029d9068c9d Mon Sep 17 00:00:00 2001 From: Olivier Cots Date: Mon, 19 May 2025 17:24:19 +0200 Subject: [PATCH 2/4] add constraints to help convergence --- docs/make.jl | 2 +- docs/src/assets/Manifest.toml | 118 +++++++++++++++++----------------- docs/src/tutorial-mpc.md | 8 +++ 3 files changed, 68 insertions(+), 60 deletions(-) diff --git a/docs/make.jl b/docs/make.jl index f0646c0..9b24ecc 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -8,7 +8,7 @@ cp("./docs/Project.toml", "./docs/src/assets/Project.toml", force = true) repo_url = "github.com/control-toolbox/Tutorials.jl" makedocs(; - draft = false, + draft = true, warnonly=[:cross_references, :autodocs_block], sitename="Tutorials", format=Documenter.HTML(; diff --git a/docs/src/assets/Manifest.toml b/docs/src/assets/Manifest.toml index 6ac78ba..acf22a9 100644 --- a/docs/src/assets/Manifest.toml +++ b/docs/src/assets/Manifest.toml @@ -90,9 +90,9 @@ version = "1.1.2" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "bebb10cd3f0796dd1429ba61e43990ba391186e9" +git-tree-sha1 = "9606d7832795cbef89e06a550475be300364a8aa" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.18.1" +version = "7.19.0" [deps.ArrayInterface.extensions] ArrayInterfaceBandedMatricesExt = "BandedMatrices" @@ -210,9 +210,9 @@ weakdeps = ["OrdinaryDiffEq"] [[deps.CTModels]] deps = ["CTBase", "DocStringExtensions", "Interpolations", "LinearAlgebra", "MLStyle", "MacroTools", "OrderedCollections", "Parameters", "PrettyTables", "RecipesBase"] -git-tree-sha1 = "717ff07c390ce0b1546ed9f07c09b5b24097961d" +git-tree-sha1 = "a67b17d64f5e58b78e360b17d712d62962cdd591" uuid = "34c4fa32-2049-4079-8329-de33c2a22e2d" -version = "0.3.6" +version = "0.3.8" [deps.CTModels.extensions] CTModelsJLD = "JLD2" @@ -407,9 +407,9 @@ version = "1.9.1" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ConcreteStructs", "DataStructures", "DocStringExtensions", "EnumX", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "6a0f6f17adbeb77688220cfb3e665c8f6e2a60ea" +git-tree-sha1 = "1bcd3a5c585c477e5d0595937ea7b5adcda6c621" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.172.0" +version = "6.174.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -457,9 +457,9 @@ version = "1.15.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "aa87a743e3778d35a950b76fbd2ae64f810a2bb3" +git-tree-sha1 = "c8d85ecfcbaef899308706bebdd8b00107f3fb43" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.6.52" +version = "0.6.54" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -516,10 +516,10 @@ uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.9.4" [[deps.Documenter]] -deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"] -git-tree-sha1 = "b7af952d4701252dc45d3b0025693e9cb4dedcd8" +deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "CodecZlib", "Dates", "DocStringExtensions", "Downloads", "Git", "IOCapture", "InteractiveUtils", "JSON", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "TOML", "Test", "Unicode"] +git-tree-sha1 = "6c182d0bd94142d7cbc3ae8a1e74668f15d0dd65" uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -version = "1.10.2" +version = "1.11.4" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] @@ -788,9 +788,9 @@ version = "1.0.2" [[deps.HSL]] deps = ["HSL_jll", "Libdl", "LinearAlgebra", "OpenBLAS32_jll", "Quadmath", "SparseArrays"] -git-tree-sha1 = "1cfc6a0b38f432db210f6148ad945ce2d56d85fb" +git-tree-sha1 = "4898d678a6f7549c41bd9f187233f979da18bc36" uuid = "34c5aeac-e683-54a6-a0e9-6e0fdc586c50" -version = "0.5.0" +version = "0.5.1" [[deps.HSL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] @@ -812,9 +812,9 @@ version = "8.5.0+0" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f93a9ce66cd89c9ba7a4695a47fd93b4c6bc59fa" +git-tree-sha1 = "92f65c4d78ce8cdbb6b68daf88889950b0a99d11" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" -version = "2.12.0+0" +version = "2.12.1+0" [[deps.IOCapture]] deps = ["Logging", "Random"] @@ -1117,9 +1117,9 @@ version = "2.10.0" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "LazyArrays", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "Setfield", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "dd7a3f6e0cc5ded5d936692d7f9f7981243d75ef" +git-tree-sha1 = "c2685cb9d01923f0e63155149c390504e72a8fcc" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "3.10.0" +version = "3.14.0" [deps.LinearSolve.extensions] LinearSolveBandedMatricesExt = "BandedMatrices" @@ -1304,9 +1304,9 @@ version = "0.2.4" [[deps.NLPModels]] deps = ["FastClosures", "LinearAlgebra", "LinearOperators", "Printf", "SparseArrays"] -git-tree-sha1 = "808b4d1a5ee2a8cc089b285dd27284efb47b35c7" +git-tree-sha1 = "ac58082a07f0bd559292e869770d462d7ad0a7e2" uuid = "a4795742-8479-5a88-8948-cc11e1c8c1a6" -version = "0.21.4" +version = "0.21.5" [[deps.NLPModelsIpopt]] deps = ["Ipopt", "NLPModels", "SolverCore"] @@ -1364,9 +1364,9 @@ version = "4.8.0" [[deps.NonlinearSolveBase]] deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLOperators", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "edfa90b9b46fc841b6f03106d9e1a054816f4f1d" +git-tree-sha1 = "df412bac2b517411eabb42c78ff234b01eb3e95b" uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "1.6.0" +version = "1.9.0" [deps.NonlinearSolveBase.extensions] NonlinearSolveBaseBandedMatricesExt = "BandedMatrices" @@ -1394,9 +1394,9 @@ version = "1.5.0" [[deps.NonlinearSolveQuasiNewton]] deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "DiffEqBase", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] -git-tree-sha1 = "290d60e3e097eed44e0aba00643995a47284746b" +git-tree-sha1 = "b69a68ef3a7bba7ab1d5ef6321ed6d9a613142b0" uuid = "9a2c21bd-3a47-402d-9113-8faf9a0ee114" -version = "1.3.0" +version = "1.5.0" weakdeps = ["ForwardDiff"] [deps.NonlinearSolveQuasiNewton.extensions] @@ -1469,9 +1469,9 @@ version = "0.5.6+0" [[deps.OptimalControl]] deps = ["CTBase", "CTDirect", "CTFlows", "CTModels", "CTParser", "CommonSolve", "DocStringExtensions"] -git-tree-sha1 = "c22d61cfbe3ecad8e4023f05ff8cf11ae4b04a59" +git-tree-sha1 = "a174fae93643c078ea8e606f028e9016ff8b8c2c" uuid = "5f98b655-cc9a-415a-b60e-744165666948" -version = "1.0.2" +version = "1.0.3" [[deps.Opus_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1486,9 +1486,9 @@ version = "1.8.0" [[deps.OrdinaryDiffEq]] deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FillArrays", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "MacroTools", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqAdamsBashforthMoulton", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqDefault", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqExplicitRK", "OrdinaryDiffEqExponentialRK", "OrdinaryDiffEqExtrapolation", "OrdinaryDiffEqFIRK", "OrdinaryDiffEqFeagin", "OrdinaryDiffEqFunctionMap", "OrdinaryDiffEqHighOrderRK", "OrdinaryDiffEqIMEXMultistep", "OrdinaryDiffEqLinear", "OrdinaryDiffEqLowOrderRK", "OrdinaryDiffEqLowStorageRK", "OrdinaryDiffEqNonlinearSolve", "OrdinaryDiffEqNordsieck", "OrdinaryDiffEqPDIRK", "OrdinaryDiffEqPRK", "OrdinaryDiffEqQPRK", "OrdinaryDiffEqRKN", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqSDIRK", "OrdinaryDiffEqSSPRK", "OrdinaryDiffEqStabilizedIRK", "OrdinaryDiffEqStabilizedRK", "OrdinaryDiffEqSymplecticRK", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "Static", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "2d7026dd8e4c7b3e7f47eef9c13c60ae55fe4912" +git-tree-sha1 = "56d5500e9970f0112a4e1ab6474d6fedde61ef64" uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "6.95.1" +version = "6.97.0" [[deps.OrdinaryDiffEqAdamsBashforthMoulton]] deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqLowOrderRK", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] @@ -1504,9 +1504,9 @@ version = "1.5.0" [[deps.OrdinaryDiffEqCore]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "EnumX", "FastBroadcast", "FastClosures", "FastPower", "FillArrays", "FunctionWrappersWrappers", "InteractiveUtils", "LinearAlgebra", "Logging", "MacroTools", "MuladdMacro", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleUnPack", "Static", "StaticArrayInterface", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "af7374f4af1b9a67ce29524e7fd328fa3da33189" +git-tree-sha1 = "d29adfeb720dd7c251b216d91c4bd4fe67c087df" uuid = "bbf590c4-e513-4bbe-9b18-05decba2e5d8" -version = "1.23.0" +version = "1.26.0" weakdeps = ["EnzymeCore"] [deps.OrdinaryDiffEqCore.extensions] @@ -1514,15 +1514,15 @@ weakdeps = ["EnzymeCore"] [[deps.OrdinaryDiffEqDefault]] deps = ["ADTypes", "DiffEqBase", "EnumX", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqBDF", "OrdinaryDiffEqCore", "OrdinaryDiffEqRosenbrock", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "PrecompileTools", "Preferences", "Reexport"] -git-tree-sha1 = "835c06684b6ff1b8904ceae4d18cc8fe45b9a7cc" +git-tree-sha1 = "8eeed32442874d1bdcc2192a874a73f1a9a07e31" uuid = "50262376-6c5a-4cf5-baba-aaf4f84d72d7" -version = "1.3.0" +version = "1.4.0" [[deps.OrdinaryDiffEqDifferentiation]] deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "LinearAlgebra", "LinearSolve", "OrdinaryDiffEqCore", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseMatrixColorings", "StaticArrayInterface", "StaticArrays"] -git-tree-sha1 = "6595287379a518d7eb8f02edc49a96a02396e887" +git-tree-sha1 = "315d25dd06614e199973cc13d22e533073bd7458" uuid = "4302a76b-040a-498a-8c04-15b101fed76b" -version = "1.7.0" +version = "1.9.0" [[deps.OrdinaryDiffEqExplicitRK]] deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "TruncatedStacktraces"] @@ -1544,9 +1544,9 @@ version = "1.5.0" [[deps.OrdinaryDiffEqFIRK]] deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "FastGaussQuadrature", "FastPower", "LinearAlgebra", "LinearSolve", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "Polyester", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "7d2c82c13a634f7400a3f398d33f1354ab38a090" +git-tree-sha1 = "0da8ec3491821262a3d2828e6370e76b51a770a3" uuid = "5960d6e9-dd7a-4743-88e7-cf307b64f125" -version = "1.10.0" +version = "1.12.0" [[deps.OrdinaryDiffEqFeagin]] deps = ["DiffEqBase", "FastBroadcast", "MuladdMacro", "OrdinaryDiffEqCore", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] @@ -1573,10 +1573,10 @@ uuid = "9f002381-b378-40b7-97a6-27a27c83f129" version = "1.3.0" [[deps.OrdinaryDiffEqLinear]] -deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "OrdinaryDiffEqVerner", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "0f81a77ede3da0dc714ea61e81c76b25db4ab87a" +deps = ["DiffEqBase", "ExponentialUtilities", "LinearAlgebra", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators"] +git-tree-sha1 = "940cef72ec8799d869ff1ba3dcf47cf7758e51cf" uuid = "521117fe-8c41-49f8-b3b6-30780b3f0fb5" -version = "1.1.0" +version = "1.3.0" [[deps.OrdinaryDiffEqLowOrderRK]] deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "RecursiveArrayTools", "Reexport", "SciMLBase", "Static"] @@ -1592,9 +1592,9 @@ version = "1.3.0" [[deps.OrdinaryDiffEqNonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "DiffEqBase", "FastBroadcast", "FastClosures", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MuladdMacro", "NonlinearSolve", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "PreallocationTools", "RecursiveArrayTools", "SciMLBase", "SciMLOperators", "SciMLStructures", "SimpleNonlinearSolve", "StaticArrays"] -git-tree-sha1 = "d75cf29dea3a72bac7a5b21523ac969b71f43e96" +git-tree-sha1 = "2f956f14c97ff507e855703ac760d513f7c3e372" uuid = "127b3ac7-2247-4354-8eb6-78cf4e7c58e8" -version = "1.6.1" +version = "1.9.0" [[deps.OrdinaryDiffEqNordsieck]] deps = ["DiffEqBase", "FastBroadcast", "LinearAlgebra", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqTsit5", "Polyester", "RecursiveArrayTools", "Reexport", "Static"] @@ -1628,9 +1628,9 @@ version = "1.1.0" [[deps.OrdinaryDiffEqRosenbrock]] deps = ["ADTypes", "DiffEqBase", "DifferentiationInterface", "FastBroadcast", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "Polyester", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "Static"] -git-tree-sha1 = "baa4a9b4380b2fb65f1e2b4ec01d3bd019a6dcea" +git-tree-sha1 = "a9b9aff8e740bfc09a2ea669f7fc02e867f95ab7" uuid = "43230ef6-c299-4910-a778-202eb28ce4ce" -version = "1.9.0" +version = "1.10.0" [[deps.OrdinaryDiffEqSDIRK]] deps = ["ADTypes", "DiffEqBase", "FastBroadcast", "LinearAlgebra", "MacroTools", "MuladdMacro", "OrdinaryDiffEqCore", "OrdinaryDiffEqDifferentiation", "OrdinaryDiffEqNonlinearSolve", "RecursiveArrayTools", "Reexport", "SciMLBase", "TruncatedStacktraces"] @@ -1746,9 +1746,9 @@ version = "1.40.13" [[deps.Polyester]] deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "6d38fea02d983051776a856b7df75b30cf9a3c1f" +git-tree-sha1 = "2082cc4be5e765bd982ed04ea06c068f4f702410" uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.16" +version = "0.7.17" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -1937,9 +1937,9 @@ version = "2024.5.8+0" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "2fd047893cb0089b180fcbb7e8434ba15dcc2841" +git-tree-sha1 = "44397dee277159f224492bcf99c442d2a907c6f5" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.87.0" +version = "2.91.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -1964,15 +1964,15 @@ version = "2.87.0" [[deps.SciMLJacobianOperators]] deps = ["ADTypes", "ArrayInterface", "ConcreteStructs", "ConstructionBase", "DifferentiationInterface", "FastClosures", "LinearAlgebra", "SciMLBase", "SciMLOperators"] -git-tree-sha1 = "6e9d280334839fe405fdab2a1268f2969c9d3eeb" +git-tree-sha1 = "d563758f3ce5153810adebc534d88e24d34eeb95" uuid = "19f34311-ddf3-4b8b-af20-060888a46c0e" -version = "0.1.3" +version = "0.1.5" [[deps.SciMLOperators]] deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "1c4b7f6c3e14e6de0af66e66b86d525cae10ecb4" +git-tree-sha1 = "d82853c515a8d9d42c1ab493a2687a37f1e26c91" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.13" +version = "0.4.0" weakdeps = ["SparseArrays", "StaticArraysCore"] [deps.SciMLOperators.extensions] @@ -2019,9 +2019,9 @@ version = "1.2.0" [[deps.SimpleNonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "068c16a16834c1483c299b0e27e901599439570d" +git-tree-sha1 = "7aaa5fe4617271b64fce0466d187f2a72edbd81a" uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "2.4.0" +version = "2.5.0" [deps.SimpleNonlinearSolve.extensions] SimpleNonlinearSolveChainRulesCoreExt = "ChainRulesCore" @@ -2297,9 +2297,9 @@ version = "0.4.1" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "c0667a8e676c53d390a09dc6870b3d8d6650e2bf" +git-tree-sha1 = "d62610ec45e4efeabf7032d67de2ffdea8344bed" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.22.0" +version = "1.22.1" weakdeps = ["ConstructionBase", "InverseFunctions"] [deps.Unitful.extensions] @@ -2521,10 +2521,10 @@ uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" version = "0.61.1+0" [[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0ba42241cb6809f1a278d0bcb976e0483c3f1f2d" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "3cad2cf2c8d80f1d17320652b3ea7778b30f473f" uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+1" +version = "3.3.0+0" [[deps.libaom_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -2569,9 +2569,9 @@ version = "1.18.0+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "068dfe202b0a05b8332f1e8e6b4080684b9c7700" +git-tree-sha1 = "002748401f7b520273e2b506f61cab95d4701ccf" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.47+0" +version = "1.6.48+0" [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] diff --git a/docs/src/tutorial-mpc.md b/docs/src/tutorial-mpc.md index 537d0da..e6eeb68 100644 --- a/docs/src/tutorial-mpc.md +++ b/docs/src/tutorial-mpc.md @@ -1,5 +1,9 @@ # Navigation problem, MPC approach +```@meta +Draft = false +``` + We consider a ship in a constant current $w=(w_x,w_y)$, where $\|w\|<1$. The [heading angle](https://en.wikipedia.org/wiki/Heading) is controlled, leading to the following differential equations: @@ -137,6 +141,10 @@ function solve(t0, x0, y0, θ0, xf, yf, θf, w; -1 ≤ u(t) ≤ 1 + -2 ≤ x(t) ≤ 6 + -2 ≤ y(t) ≤ 8 + -2π ≤ x(t) ≤ 2π + q(t0) == [ x0, y0, θ0 ] q(tf) == [ xf, yf, θf ] From 144fce71d4874d3563d1605e8ae688fb6e07072d Mon Sep 17 00:00:00 2001 From: Olivier Cots Date: Mon, 19 May 2025 17:37:25 +0200 Subject: [PATCH 3/4] foo --- docs/make.jl | 2 +- docs/src/tutorial-mpc.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/make.jl b/docs/make.jl index 9b24ecc..bcc692d 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -8,7 +8,7 @@ cp("./docs/Project.toml", "./docs/src/assets/Project.toml", force = true) repo_url = "github.com/control-toolbox/Tutorials.jl" makedocs(; - draft = true, + draft=false, # if draft is true, then the julia code from .md is not executed warnonly=[:cross_references, :autodocs_block], sitename="Tutorials", format=Documenter.HTML(; diff --git a/docs/src/tutorial-mpc.md b/docs/src/tutorial-mpc.md index e6eeb68..5f92c68 100644 --- a/docs/src/tutorial-mpc.md +++ b/docs/src/tutorial-mpc.md @@ -83,6 +83,7 @@ plt = plot( plot_state!(plt, x0, y0, θ0; color=2) plot_state!(plt, xf, yf, θf; color=2) +annotate!([(x0, y0, ("q₀", 12, :top)), (xf, yf, ("qf", 12, :bottom))]) plot_current!(plt) ``` From 21d1e58fa2e33c8b4d5bda1ff68feacffc21f838 Mon Sep 17 00:00:00 2001 From: Olivier Cots Date: Mon, 19 May 2025 17:47:20 +0200 Subject: [PATCH 4/4] foo --- docs/src/tutorial-mpc.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/src/tutorial-mpc.md b/docs/src/tutorial-mpc.md index 5f92c68..e8c59cb 100644 --- a/docs/src/tutorial-mpc.md +++ b/docs/src/tutorial-mpc.md @@ -146,10 +146,10 @@ function solve(t0, x0, y0, θ0, xf, yf, θf, w; -2 ≤ y(t) ≤ 8 -2π ≤ x(t) ≤ 2π - q(t0) == [ x0, y0, θ0 ] - q(tf) == [ xf, yf, θf ] + q(t0) == [x0, y0, θ0] + q(tf) == [xf, yf, θf] - q̇(t) == [ w[1]+cos(θ(t)), + q̇(t) == [w[1]+cos(θ(t)), w[2]+sin(θ(t)), u(t)]