### A Pluto.jl notebook ### # v0.17.1 using Markdown using InteractiveUtils # ╔═╡ b194c2fc-340b-480e-b1ec-53db2fe4e7ec module PhysicsModule #Add exports here using Flux, LinearAlgebra using Zygote #included for saving and loading models #==# struct State stocks::Array{Float32} debris::Array{Float32} end ### Physics abstract type PhysicalModel end struct BasicModel <: PhysicalModel #rate at which debris hits satellites debris_collision_rate::Real #rate at which satellites of different constellations collide satellite_collision_rates::Matrix{Float64} #rate at which debris exits orbits decay_rate::Real #rate at which satellites autocatalysis_rate::Real #ratio at which a collision between satellites produced debris satellite_collision_debris_ratio::Real #Ratio at which launches produce debris launch_debris_ratio::Real end function state_transition( physics::BasicModel ,state::State ,launches::Vector{Float32} ) #= Physical Transitions =# survival_rate = survival(state,physics) # Debris # get changes in debris from natural dynamics natural_debris_dynamics = (1 - physics.decay_rate + physics.autocatalysis_rate) * state.debris # get changes in debris from satellite loss satellite_loss_debris = physics.satellite_collision_debris_ratio * (1 .- survival_rate)'*state.stocks # get changes in debris from launches launch_debris = physics.launch_debris_ratio * sum(launches) # total debris level debris′ = natural_debris_dynamics .+ satellite_loss_debris .+ launch_debris #stocks stocks′ = (LinearAlgebra.diagm(survival_rate) .- physics.decay_rate)*state.stocks + launches return State(stocks′,debris′) end function survival( state::State ,physical_model::BasicModel ) return exp.( -(physical_model.satellite_collision_rates .+ physical_model.decay_rate) * state.stocks .- (physical_model.debris_collision_rate * state.debris) ) end end #end physccs # ╔═╡ 4e66c6cc-ad36-47e3-b2c0-2e9ca594ad04 using LinearAlgebra, BSON # ╔═╡ 85897da8-bc22-40bd-8ec7-853f86ac4941 module NNTools #= TupleDuplicator This is used to create a tuple of size n with deepcopies of any object x =# using Flux,Zygote,BSON struct TupleDuplicator n::Int end (f::TupleDuplicator)(x) = tuple([deepcopy(x) for i=1:f.n]...) #= This generates a policy function full of branches with the properly scaled sides =# struct BranchGenerator n::UInt8 #limit to 2^8 operators end function (b::BranchGenerator)(branch::Flux.Chain,join_fn::Function) # used to deepcopy the branches and duplicate the inputs in the returned chain f = TupleDuplicator(b.n) return Flux.Chain(f,Flux.Parallel(join_fn,f(branch))) end ## Couple of helpful policy generators, just for help. function operator_policy_function_generator(number_params=32) return Flux.Chain( Flux.Parallel(vcat #parallel joins together stocks and debris ,Flux.Chain( Flux.Dense(N_constellations, number_params*2,Flux.relu) ,Flux.Dense(number_params*2, number_params*2,Flux.tanh) ) ,Flux.Chain( Flux.Dense(N_debris, number_params,Flux.relu) ,Flux.Dense(number_params, number_params) ) ) #Apply some transformations ,Flux.Dense(number_params*3,number_params,Flux.tanh) ,Flux.Dense(number_params,number_params,Flux.tanh) ,Flux.Dense(number_params,1,x -> Flux.relu.(sinh.(x))) ) end function planner_policy_function_generator(number_params=32) return Flux.Chain( Flux.Parallel(vcat #parallel joins together stocks and debris ,Flux.Chain( Flux.Dense(N_constellations, number_params*2,Flux.relu) ,Flux.Dense(number_params*2, number_params*2,Flux.σ) ) ,Flux.Chain( Flux.Dense(N_debris, number_params,Flux.relu) ,Flux.Dense(number_params, number_params) ) ) #Apply some transformations ,Flux.Dense(number_params*3,number_params,Flux.σ) ,Flux.Dense(number_params,number_params,Flux.σ) ,Flux.Dense(number_params,N_constellations,Flux.relu) ) end function value_function_generator(number_params=32) return Flux.Chain( Flux.Parallel(vcat #parallel joins together stocks and debris, after a little bit of preprocessing ,Flux.Chain( Flux.Dense(N_constellations, number_params*2,Flux.relu) ,Flux.Dense(number_params*2, number_params*2,Flux.σ) ) ,Flux.Chain( Flux.Dense(N_debris, number_params,Flux.relu) ,Flux.Dense(number_params, number_params,Flux.σ) ) ) #Apply some transformations to the preprocessed data. ,Flux.Dense(number_params*3,number_params,Flux.σ) ,Flux.Dense(number_params,number_params,Flux.σ) ,Flux.Dense(number_params,1) ) end end # ╔═╡ 3be917ed-7107-46a3-bd8e-969e0e8e0fea md""" # testing Define the basic dimensions of the model - Number of Constellations: $(const N_constellations = 4) - Number of Debris Trackers: $(const N_debris = 1) - Number of Overall States: $(const N_states = N_constellations + N_debris) """ # ╔═╡ f4d11666-dd44-4340-8fe7-b5cf735dea67 md""" ## Physics """ # ╔═╡ 30622c11-32f3-4b68-b391-e526c3b09570 begin #Setup for State tests st = PhysicsModule.State([1,2,3,4],[3]) launches = zeros(Float32,4) loss_param = 2e-3; loss_weights = loss_param*(ones(N_constellations,N_constellations) - LinearAlgebra.I); #Todo, wrap physical model as a struct with the parameters bm = PhysicsModule.BasicModel( loss_param ,loss_weights ,0.01 ,0.001 ,5.0 ,0.05 ) end # ╔═╡ 5497cf84-0fc1-4d47-8a1d-58f862000828 PhysicsModule.state_transition(bm,st,launches) # ╔═╡ 7ad063fa-70e1-4ffd-ad1a-8c65306bb2cc md""" ## Neural Networks """ # ╔═╡ 2879d65a-4a2e-4486-ac26-a0490a80f23e NNTools.value_function_generator() # ╔═╡ f7febfdd-81f0-4f67-8986-fb52e6e7d9fe md""" ## Operator Models """ # ╔═╡ 99aabead-81d0-4f66-994a-bc5485c08af5 ### Economics module BenefitFunctions abstract type EconomicModel end #basic linear model struct LinearModel <: EconomicModel β::Float32 payoff_array::Array{Float32} policy_costs::Array{Float32} end function (em::LinearModel)( s::Vector{Float32} ,d::Vector{Float32} ,a::Vector{Float32} ) return em.payoff_array*s - em.policy_costs*a end #basic CES model struct CES <: EconomicModel β::Float32 r::Float32 #elasticity of subsititution payoff_array::Array{Float32} policy_costs::Array{Float32} debris_costs::Array{Float32} end function (em::CES)( s::Vector{Float32} ,d::Vector{Float32} ,a::Vector{Float32} ) #issue here with multiplication r1 = em.payoff_array .* (s.^em.r) r2 = - em.debris_costs .* (d.^em.r) r3 = - em.policy_costs .* (a.^em.r) return (r1 + r2 + r3) .^ (1/em.r) end #basic CRRA struct CRRA <: EconomicModel β::Float32 σ::Float32 #elasticity of subsititution payoff_array::Array{Float32} policy_costs::Array{Float32} debris_costs::Array{Float32} end function (em::CRRA)( s::Vector{Float32} ,d::Vector{Float32} ,a::Vector{Float32} ) #issue here with multiplication core = (em.payoff_array*s - em.debris_costs*d - em.policy_costs).^(1 - em.σ) return (core-1)/(1-em.σ) end end #end module # ╔═╡ 473c1c21-c3b8-4ca8-8e76-cc42b3ea0da4 begin #= This struct organizes information about a given constellation operator Used to provide an interable loss function for training =# struct ConstellationOperatorLoss #econ model describing operator econ_model::EconomicModel #Operator's value and policy functions, as well as which parameters the operator can train. operator_value_fn::Flux.Chain collected_policies::Flux.Chain #this is held by all operators operator_policy_params::Flux.Params #Transition functions debris_transition::BasicDebrisEvolution stocks_transition::BasicStockEvolution end # overriding function to calculate operator loss function (operator::ConstellationOperatorLoss)( s::Vector{Float32} ,d::Vector{Float32} ) #get actions a = operator.collected_policies((s,d)) #get updated stocks and debris s′ = operator.stocks_transition(s ,d ,a) d′ = operator.debris_transition(s ,d ,a) bellman_residuals = operator.operator_value_fn((s,d)) - operator.econ_model(s,d,a) - operator.econ_model.β * operator.operator_value_fn((s′,d′)) maximization_condition = - operator.econ_model(s ,d ,a) - operator.econ_model.β * operator.operator_value_fn((s′,d′)) return Flux.mae(bellman_residuals.^2 ,maximization_condition) end function (operator::ConstellationOperatorLoss)( s::Vector{Float32} ,d::Vector{Float32} ,policy::Flux.Chain #allow for another policy to be subsituted ) #get actions a = policy((s,d)) #get updated stocks and debris s′ = operator.stocks_transition(s ,d ,a) d′ = operator.debris_transition(s ,d ,a) bellman_residuals = operator.operator_value_fn((s,d)) - operator.econ_model(s,d,a) - operator.econ_model.β * operator.operator_value_fn((s′,d′)) maximization_condition = - operator.econ_model(s ,d ,a) - operator.econ_model.β * operator.operator_value_fn((s′,d′)) return Flux.mae(bellman_residuals.^2 ,maximization_condition) end end # ╔═╡ c5d4b5af-ec04-4941-b84f-c70e9665810b begin #do the same thing with the planner's problem struct PlannerLoss #= Ideally, with just a well formed PlannerLoss and the training functions below, we should be able to train the approximation. There is an issue with appropriately training the value functions. In this case, it is not happening... =# β::Float32 operators::Array{ConstellationOperatorLoss} policy::Flux.Chain policy_params::Flux.Params value::Flux.Chain value_params::Flux.Params debris_transition::BasicDebrisEvolution stocks_transition::BasicStockEvolution end function (planner::PlannerLoss)( s::Vector{Float32} ,d::Vector{Float32} ) a = planner.policy((s ,d)) #get updated stocks and debris s′ = planner.stocks_transition(s ,d ,a) d′ = planner.debris_transition(s ,d ,a) #calculate the total benefit from each of the models benefit = sum([ co.econ_model(s ,d ,a) for co in planner.operators]) #issue here with mutating. Maybe generators/list comprehensions? bellman_residuals = planner.value((s,d)) - benefit - planner.β .* planner.value((s′,d′)) maximization_condition = - benefit - planner.β .* planner.value((s′,d′)) return Flux.mae(bellman_residuals.^2 ,maximization_condition) end end # ╔═╡ 00000000-0000-0000-0000-000000000001 PLUTO_PROJECT_TOML_CONTENTS = """ [deps] BSON = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [compat] BSON = "~0.3.4" Flux = "~0.12.8" Zygote = "~0.6.30" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised [[AbstractFFTs]] deps = ["LinearAlgebra"] git-tree-sha1 = "485ee0867925449198280d4af84bdb46a2a404d0" uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" version = "1.0.1" [[AbstractTrees]] git-tree-sha1 = "03e0550477d86222521d254b741d470ba17ea0b5" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.3.4" [[Adapt]] deps = ["LinearAlgebra"] git-tree-sha1 = "84918055d15b3114ede17ac6a7182f68870c16f7" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" version = "3.3.1" [[ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" [[ArrayInterface]] deps = ["Compat", "IfElse", "LinearAlgebra", "Requires", "SparseArrays", "Static"] git-tree-sha1 = "e527b258413e0c6d4f66ade574744c94edef81f8" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" version = "3.1.40" [[Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[BFloat16s]] deps = ["LinearAlgebra", "Printf", "Random", "Test"] git-tree-sha1 = "a598ecb0d717092b5539dbbe890c98bac842b072" uuid = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" version = "0.2.0" [[BSON]] git-tree-sha1 = "ebcd6e22d69f21249b7b8668351ebf42d6dc87a1" uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" version = "0.3.4" [[Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[CEnum]] git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" version = "0.4.1" [[CUDA]] deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CompilerSupportLibraries_jll", "ExprTools", "GPUArrays", "GPUCompiler", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "SpecialFunctions", "TimerOutputs"] git-tree-sha1 = "2c8329f16addffd09e6ca84c556e2185a4933c64" uuid = "052768ef-5323-5732-b1bb-66c8b64840ba" version = "3.5.0" [[ChainRules]] deps = ["ChainRulesCore", "Compat", "LinearAlgebra", "Random", "RealDot", "Statistics"] git-tree-sha1 = "035ef8a5382a614b2d8e3091b6fdbb1c2b050e11" uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" version = "1.12.1" [[ChainRulesCore]] deps = ["Compat", "LinearAlgebra", "SparseArrays"] git-tree-sha1 = "f885e7e7c124f8c92650d61b9477b9ac2ee607dd" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" version = "1.11.1" [[ChangesOfVariables]] deps = ["LinearAlgebra", "Test"] git-tree-sha1 = "9a1d594397670492219635b35a3d830b04730d62" uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" version = "0.1.1" [[CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" version = "0.7.0" [[ColorTypes]] deps = ["FixedPointNumbers", "Random"] git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.11.0" [[Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" version = "0.12.8" [[CommonSubexpressions]] deps = ["MacroTools", "Test"] git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" version = "0.3.0" [[Compat]] deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] git-tree-sha1 = "dce3e3fea680869eaa0b774b2e8343e9ff442313" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" version = "3.40.0" [[CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" [[DataAPI]] git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" version = "1.9.0" [[DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] git-tree-sha1 = "7d9d316f04214f7efdbb6398d545446e246eff02" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" version = "0.18.10" [[Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" [[DelimitedFiles]] deps = ["Mmap"] uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" [[DiffResults]] deps = ["StaticArrays"] git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805" uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" version = "1.0.3" [[DiffRules]] deps = ["LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] git-tree-sha1 = "3287dacf67c3652d3fed09f4c12c187ae4dbb89a" uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" version = "1.4.0" [[Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[DocStringExtensions]] deps = ["LibGit2"] git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.8.6" [[Downloads]] deps = ["ArgTools", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" [[ExprTools]] git-tree-sha1 = "b7e3d17636b348f005f11040025ae8c6f645fe92" uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" version = "0.1.6" [[FillArrays]] deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] git-tree-sha1 = "8756f9935b7ccc9064c6eef0bff0ad643df733a3" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" version = "0.12.7" [[FixedPointNumbers]] deps = ["Statistics"] git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" version = "0.8.4" [[Flux]] deps = ["AbstractTrees", "Adapt", "ArrayInterface", "CUDA", "CodecZlib", "Colors", "DelimitedFiles", "Functors", "Juno", "LinearAlgebra", "MacroTools", "NNlib", "NNlibCUDA", "Pkg", "Printf", "Random", "Reexport", "SHA", "SparseArrays", "Statistics", "StatsBase", "Test", "ZipFile", "Zygote"] git-tree-sha1 = "e8b37bb43c01eed0418821d1f9d20eca5ba6ab21" uuid = "587475ba-b771-5e3f-ad9e-33799f191a9c" version = "0.12.8" [[ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] git-tree-sha1 = "6406b5112809c08b1baa5703ad274e1dded0652f" uuid = "f6369f11-7733-5829-9624-2563aa707210" version = "0.10.23" [[Functors]] git-tree-sha1 = "e4768c3b7f597d5a352afa09874d16e3c3f6ead2" uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" version = "0.2.7" [[GPUArrays]] deps = ["Adapt", "LinearAlgebra", "Printf", "Random", "Serialization", "Statistics"] git-tree-sha1 = "7772508f17f1d482fe0df72cabc5b55bec06bbe0" uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" version = "8.1.2" [[GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "TimerOutputs", "UUIDs"] git-tree-sha1 = "77d915a0af27d474f0aaf12fcd46c400a552e84c" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" version = "0.13.7" [[IRTools]] deps = ["InteractiveUtils", "MacroTools", "Test"] git-tree-sha1 = "95215cd0076a150ef46ff7928892bc341864c73c" uuid = "7869d1d1-7146-5819-86e3-90919afe41df" version = "0.4.3" [[IfElse]] git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" version = "0.1.1" [[InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[InverseFunctions]] deps = ["Test"] git-tree-sha1 = "a7254c0acd8e62f1ac75ad24d5db43f5f19f3c65" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" version = "0.1.2" [[IrrationalConstants]] git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.1.1" [[JLLWrappers]] deps = ["Preferences"] git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" version = "1.3.0" [[Juno]] deps = ["Base64", "Logging", "Media", "Profile"] git-tree-sha1 = "07cb43290a840908a771552911a6274bc6c072c7" uuid = "e5e0dc1b-0480-54bc-9374-aad01c23163d" version = "0.8.4" [[LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] git-tree-sha1 = "46092047ca4edc10720ecab437c42283cd7c44f3" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" version = "4.6.0" [[LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "9436f02a0c9f726d914cc6539f87850701be18fc" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" version = "0.0.12+0" [[LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" [[LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" [[LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" [[LibGit2]] deps = ["Base64", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" [[LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" [[Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[LinearAlgebra]] deps = ["Libdl"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[LogExpFunctions]] deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] git-tree-sha1 = "be9eef9f9d78cecb6f262f3c10da151a6c5ab827" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" version = "0.3.5" [[Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[MacroTools]] deps = ["Markdown", "Random"] git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.9" [[Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" [[Media]] deps = ["MacroTools", "Test"] git-tree-sha1 = "75a54abd10709c01f1b86b84ec225d26e840ed58" uuid = "e89f7d12-3494-54d1-8411-f7d8b9ae1f27" version = "0.5.0" [[Missings]] deps = ["DataAPI"] git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" version = "1.0.2" [[Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" [[MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" [[NNlib]] deps = ["Adapt", "ChainRulesCore", "Compat", "LinearAlgebra", "Pkg", "Requires", "Statistics"] git-tree-sha1 = "2eb305b13eaed91d7da14269bf17ce6664bfee3d" uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" version = "0.7.31" [[NNlibCUDA]] deps = ["CUDA", "LinearAlgebra", "NNlib", "Random", "Statistics"] git-tree-sha1 = "38358632d9c277f7bf8d202c127f601e8467aa4d" uuid = "a00861dc-f156-4864-bf3c-e6376f28a68d" version = "0.1.10" [[NaNMath]] git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" version = "0.3.5" [[NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" [[OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" [[OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.5+0" [[OrderedCollections]] git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" version = "1.4.1" [[Pkg]] deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" [[Preferences]] deps = ["TOML"] git-tree-sha1 = "00cfd92944ca9c760982747e9a1d0d5d86ab1e5a" uuid = "21216c6a-2e73-6563-6e65-726566657250" version = "1.2.2" [[Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[Profile]] deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" [[REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[Random]] deps = ["Serialization"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[Random123]] deps = ["Libdl", "Random", "RandomNumbers"] git-tree-sha1 = "0e8b146557ad1c6deb1367655e052276690e71a3" uuid = "74087812-796a-5b5d-8853-05524746bad3" version = "1.4.2" [[RandomNumbers]] deps = ["Random", "Requires"] git-tree-sha1 = "043da614cc7e95c703498a491e2c21f58a2b8111" uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" version = "1.5.3" [[RealDot]] deps = ["LinearAlgebra"] git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" version = "0.1.0" [[Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" version = "1.2.2" [[Requires]] deps = ["UUIDs"] git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.1.3" [[SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" [[Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" [[Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[SortingAlgorithms]] deps = ["DataStructures"] git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" version = "1.0.1" [[SparseArrays]] deps = ["LinearAlgebra", "Random"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[SpecialFunctions]] deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] git-tree-sha1 = "f0bccf98e16759818ffc5d97ac3ebf87eb950150" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" version = "1.8.1" [[Static]] deps = ["IfElse"] git-tree-sha1 = "e7bc80dc93f50857a5d1e3c8121495852f407e6a" uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" version = "0.4.0" [[StaticArrays]] deps = ["LinearAlgebra", "Random", "Statistics"] git-tree-sha1 = "3c76dde64d03699e074ac02eb2e8ba8254d428da" uuid = "90137ffa-7385-5640-81b9-e52037218182" version = "1.2.13" [[Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" [[StatsAPI]] git-tree-sha1 = "1958272568dc176a1d881acb797beb909c785510" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" version = "1.0.0" [[StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] git-tree-sha1 = "2bb0cb32026a66037360606510fca5984ccc6b75" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" version = "0.33.13" [[TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" [[Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" [[Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[TimerOutputs]] deps = ["ExprTools", "Printf"] git-tree-sha1 = "7cb456f358e8f9d102a8b25e8dfedf58fa5689bc" uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" version = "0.5.13" [[TranscodingStreams]] deps = ["Random", "Test"] git-tree-sha1 = "216b95ea110b5972db65aa90f88d8d89dcb8851c" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" version = "0.9.6" [[UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [[Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[ZipFile]] deps = ["Libdl", "Printf", "Zlib_jll"] git-tree-sha1 = "3593e69e469d2111389a9bd06bac1f3d730ac6de" uuid = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea" version = "0.9.4" [[Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" [[Zygote]] deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "IRTools", "InteractiveUtils", "LinearAlgebra", "MacroTools", "NaNMath", "Random", "Requires", "SpecialFunctions", "Statistics", "ZygoteRules"] git-tree-sha1 = "2c30f2df0ba43c17e88c8b55b5b22c401f7cde4e" uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" version = "0.6.30" [[ZygoteRules]] deps = ["MacroTools"] git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0" uuid = "700de1a5-db45-46bc-99cf-38207098b444" version = "0.2.2" [[nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" [[p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" """ # ╔═╡ Cell order: # ╟─b194c2fc-340b-480e-b1ec-53db2fe4e7ec # ╟─3be917ed-7107-46a3-bd8e-969e0e8e0fea # ╠═f4d11666-dd44-4340-8fe7-b5cf735dea67 # ╠═4e66c6cc-ad36-47e3-b2c0-2e9ca594ad04 # ╠═30622c11-32f3-4b68-b391-e526c3b09570 # ╠═5497cf84-0fc1-4d47-8a1d-58f862000828 # ╠═7ad063fa-70e1-4ffd-ad1a-8c65306bb2cc # ╟─85897da8-bc22-40bd-8ec7-853f86ac4941 # ╠═2879d65a-4a2e-4486-ac26-a0490a80f23e # ╠═f7febfdd-81f0-4f67-8986-fb52e6e7d9fe # ╟─99aabead-81d0-4f66-994a-bc5485c08af5 # ╠═473c1c21-c3b8-4ca8-8e76-cc42b3ea0da4 # ╠═c5d4b5af-ec04-4941-b84f-c70e9665810b # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002