### A Pluto.jl notebook ### # v0.19.42 using Markdown using InteractiveUtils # ╔═╡ fc4454f6-1c07-4706-ac3f-040d9ee83994 using PlutoUI, Dates # ╔═╡ 9a1222aa-110c-11ef-1d54-eb155df43b97 using HTTP, Gumbo, JSON, AbstractTrees, DataFrames, ReadableRegex, PrettyTables # ╔═╡ 4741fe85-c011-451b-bef0-51cc487e978a # ╠═╡ show_logs = false using CondaPkg, PythonCall # ╔═╡ e5c28754-3322-4436-9a30-ff5a95ec9ce9 using LightOSM, JuMP, GLPK, Random # ╔═╡ 91585a4c-e842-4a87-ae02-ce9e86c3da37 using TravelingSalesmanExact, SCIP # ╔═╡ 915bd223-4b6e-441b-a82c-05d680cc93cb md""" [Index](https://titanic.caltech.edu/~tgorordo) """ # ╔═╡ 38b70851-9587-457d-adca-50394b3f6a98 md""" $(Resource("https://originaltommys.com/wp-content/uploads/2020/05/tommys-logo-1-min.png")) # The Traveling Tommy's Problem So you want to try the ultimate negative time challenge? Here's the traveling-salesman solution for all current Tommy's locations. """ # ╔═╡ f1344329-8d08-4d5a-bb81-13ccc50ca6ba md""" ## Scraping the Grill Get a list of [current locations](https://originaltommys.com/locations/). """ # ╔═╡ 012f104b-d3a1-4f2a-b224-86d1a711c7f4 url = "https://originaltommys.com/locations/"; # ╔═╡ acb28c38-1914-4398-84b5-1288260845bb # Fetch the Tommy's location page and parse to scrape rsp = HTTP.get(url); prs = parsehtml(String(rsp.body)); # ╔═╡ 8d135017-37a8-457b-ab33-e4514e223e09 # define a regex to pick out the operating hours from a table row hoursregex = @compile look_for(one_or_more(ANY), after="Hours: ") # ╔═╡ 021af38e-3860-4474-a901-620fc92f5d57 # and a regex to help remove the lobby hours, since that isn't relevant info lobbyregex = @compile look_for("(Lobby " * one_or_more(ANY) * ")") # ╔═╡ 9c316980-9940-4714-9ef9-357658a23479 df = let df = DataFrame([:Location => [], :Address => [], :Hours => []]); # loop over the current table of locations for elem in PreOrderDFS(prs.root) try if tag(elem) == :tr && getattr(elem.parent.parent, "id") in ["tablepress-5", "tablepress-6"] # extract the location name, address, and hours; push to our DataFrame push!(df, [elem[1][1], elem[2][1], match(hoursregex, Gumbo.text(elem[2])).match |> string |> (s -> replace(s, lobbyregex => "")) |> strip ]) end catch end end transform!(df, :Address => ByRow(Gumbo.text) => :Address) end; # ╔═╡ bcc30610-7e29-4d70-8ae1-752681659e5f let of = copy(df) pretty_table(String, of; backend=Val(:html), allow_html_in_cells=true, tf=PrettyTables.tf_html_minimalist, alignment=:l, show_row_number=true, show_subheader=false, linebreaks=true, title="$url last scraped @ $(now())" ) |> HTML end # ╔═╡ d31c3579-f6c1-4959-b5d8-ca38f29d119c md""" ### Geocode Locate addresses using [Nominatim](https://nominatim.openstreetmap.org/ui/search.html). A couple addresses need manual intervention before lookup: """ # ╔═╡ ada082b3-6615-45e9-818f-26e6f63f12ac # wrong streetname df[1,:Address] = replace(df[1,:Address] , "Road" => "Boulevard") # ╔═╡ 1ac39fd7-fab9-4f22-a91b-944a69e67260 # bad city name df[19,:Address] = replace(df[19,:Address], "North Hollywood" => "Garnsey") # ╔═╡ c9f6c975-d9d0-4ad3-9f9a-4dacda0bb79c # can't find address, so take the one across the street df[22,:Address] = replace(df[22,:Address], "9301 E. Whittier Blvd" => "9298 Speedway") # ╔═╡ 30812787-81a0-4f3d-9cd2-2df00c7c4ebd # really just doesn't know this address df[26,:Address] = replace(df[26,:Address], "28116 N. The Old Road" => "Original Tommy's Golden State Freeway", "91355" => "91310") # ╔═╡ 4fc5b1a8-9b33-486d-950a-4647d9993aff md""" query the api: """ # ╔═╡ 47126b71-1f25-4d73-bf91-22e39a84d2cc let api = "https://nominatim.openstreetmap.org/search?" places = [] latlons = [] for l in eachrow(df) try res = HTTP.get(api, headers=["User-Agent" => "titanic.caltech.edu/1.0.0-DEV (HTTP.jl; tcgorordo@gmail.com)"], query= ["q" => l[:Address], "format" => "json"]); @info l.Address res jres = res.body |> String |> JSON.parse push!(places, jres[1]["place_id"]) push!(latlons, (parse(Float64, jres[1]["lat"]), parse(Float64, jres[1]["lon"]))) sleep(1) catch e @warn ("No result for " * l[:Address]) e end end df[!,:placeid] = places df[!,:latlon] = latlons end; # ╔═╡ 951bfa51-da39-437c-9be2-e44648a1b868 # ╠═╡ show_logs = false CondaPkg.add("folium"); const flm = pyimport("folium"); # ╔═╡ 715a5564-81b1-4189-84ed-c9775f438b0f minlat, minlon = 32.363396239603740, -119.77393355557084; # ╔═╡ 0f31dd19-bb4e-47fc-8566-645062b209c0 maxlat, maxlon = 37.178653972331674, -113.97315230557084; # ╔═╡ 8af5b693-f17d-44b4-b49f-7786b6e9f636 boxbnd = [(minlat, minlon), (maxlat, maxlon)] # ╔═╡ 8a55f364-495e-467f-9ca4-fa35e0318388 polybnd = [ [34.248800, -119.377205], [35.138756, -117.045934], [36.442690, -115.020941], [35.755994, -115.004204], [34.606297, -116.752006], [33.540679, -117.146023], [33.427632, -117.598244]]; # ╔═╡ 7bf4ae79-5ba5-46ae-8cfa-a198fd6b4312 let fm = flm.Map() flm.Polygon(polybnd, color="grey", opacity=0.8, weight=3).add_to(fm) flm.Rectangle(boxbnd, color="black", weight=2).add_to(fm) for r in eachrow(df) flm.Marker(r[:latlon], tooltip="$(rownumber(r)) $(r[:Location]): $(r[:Address])").add_to(fm) end @py fm.fit_bounds([(minlat, minlon), (maxlat, maxlon)]) fm._repr_html_() |> HTML end # ╔═╡ 2f12547c-4be1-4644-85b7-c3fbdfcedf20 LightOSM.download_osm_network( :polygon, network_type=:drive, metadata=true, download_format=:osm, polygon=(collect∘map)(reverse, polybnd), # bbox = boxbnd, save_to_file_location="LAVegas.osm" ); # ╔═╡ 568cc195-023c-4df3-a9fb-65f27ea534c5 md""" [`LAVegas.osm`](https://titanic.caltech.edu/~tgorordo/LAVegas.osm) """ # ╔═╡ 4401458c-3535-47c6-b219-c62c101920af g = LightOSM.graph_from_file("LAVegas.osm", network_type=:drive, weight_type=:time, largest_connected_component=true) # ╔═╡ efcf7447-bec3-4199-a54c-d8cf1c9874ad md""" Route a distance matrix: """ # ╔═╡ 542b52d9-9f83-49d4-98e1-be2d4c5870a9 LightOSM.total_path_weight(::LightOSM.OSMGraph{U, T, W}, ::Nothing) where {U, T, W} = 0 # for a connected graph, `nothing` indicates we've asked for the path from a node to itself. # ╔═╡ a868a31f-2cc7-4283-b0e6-27c50f43a3be d = let nodes = map(l -> nearest_node(g, l)[1], collect.(df[!,:latlon])) [total_path_weight(g, shortest_path(g, a, b)) for a=nodes, b=nodes] end # ╔═╡ 63333464-4a87-4b14-9507-57cbcdd3d734 n = size(d, 1) # ╔═╡ 5a635ea7-a3e7-4608-b7db-065588a0d732 function build_tsp_model(m) n = size(m)[1] model = Model(GLPK.Optimizer) @variable(model, x[1:n, 1:n], Bin, Symmetric) @objective(model, Min, sum(m .* x) / 2) @constraint(model, [i in 1:n], sum(x[i, [j for j in 1:n if j != i]]) == 1) @constraint(model, [j in 1:n], sum(x[[i for i in 1:n if i != j], j]) == 1) @constraint(model, [i in 1:n], x[i, i] == 0.) return model end # ╔═╡ 0bf52f3a-cacd-4310-9526-2610ef1235bb function subtour(edges::Vector{Tuple{Int,Int}}, n) shortest_subtour, unvisited = collect(1:n), Set(collect(1:n)) while !isempty(unvisited) this_cycle, neighbors = Int[], unvisited while !isempty(neighbors) current = pop!(neighbors) push!(this_cycle, current) if length(this_cycle) > 1 pop!(unvisited, current) end neighbors = [j for (i, j) in edges if i == current && j in unvisited] end if length(this_cycle) < length(shortest_subtour) shortest_subtour = this_cycle end end return shortest_subtour end # ╔═╡ 39fe4d23-0e0c-4203-a026-db8fbe275815 function selected_edges(x::Matrix{Float64}, n) return Tuple{Int,Int}[(i, j) for i in 1:n, j in 1:n if x[i, j] > 0.5] end # ╔═╡ 013924bf-76ff-451b-b45b-965d020a9564 subtour(x::Matrix{Float64}) = subtour(selected_edges(x, size(x, 1)), size(x, 1)) # ╔═╡ e7b7eddc-ddde-4554-8b11-1785e381fd0e subtour(x::AbstractMatrix{VariableRef}) = subtour(value.(x)) # ╔═╡ 26fa54e2-864c-417d-a44b-fb20550cebb2 mapsol(ps) = let fm = flm.Map() flm.Polygon(polybnd, color="grey", opacity=0.8, weight=3).add_to(fm) flm.Rectangle(boxbnd, color="black", weight=2).add_to(fm) #for r in eachrow(df) # flm.Marker(r[:latlon]).add_to(fm) #end for p in ps flm.PolyLine(locations=[df[p[1], :latlon], df[p[2], :latlon]]).add_to(fm) end @py fm.fit_bounds([(minlat, minlon), (maxlat, maxlon)]) fm._repr_html_() |> HTML end # ╔═╡ b136349f-c4b2-4cc8-88c2-99e2bb1688c2 begin iterative_model = build_tsp_model(d) set_optimizer_attribute(iterative_model, "msg_lev", GLPK.GLP_MSG_ALL) optimize!(iterative_model) @assert is_solved_and_feasible(iterative_model) time_iterated = solve_time(iterative_model) cycle = subtour(iterative_model[:x]) while 1 < length(cycle) < n @info "Found cycle of length $(length(cycle))" S = [(i, j) for (i, j) in Iterators.product(cycle, cycle) if i < j] @constraint( iterative_model, sum(iterative_model[:x][i, j] for (i, j) in S) <= length(cycle) - 1, ) optimize!(iterative_model) @assert is_solved_and_feasible(iterative_model) a = value.(iterative_model[:x]) p = selected_edges(a, size(a, 1)) @info "Map:" mapsol(p) global time_iterated += solve_time(iterative_model) global cycle = subtour(iterative_model[:x]) end end # ╔═╡ a67b7b91-3447-4874-864e-5cae0edf4d96 objective_value(iterative_model) # ╔═╡ e10130dc-8720-4920-b13e-a3f849e238b1 sol = let a = value.(iterative_model[:x]) s = selected_edges(a, size(a, 1)) trail = [7] # start at eaglerock while length(trail) < 32 bs = s[findall(map(p -> trail[end] in p, s))] |> Iterators.flatten |> collect |> unique |> l -> filter(x -> !in(x, trail), l) append!(trail, first(bs)) end t = sum(total_path_weight(g, shortest_path(g, nearest_node(g, collect(df[p[1], :latlon]))[1], nearest_node(g, collect(df[p[2], :latlon]))[1] )) for p in collect(zip(trail, vcat(trail[2:end], [7])))) rt = sum(total_path_weight(g, shortest_path(g, nearest_node(g, collect(df[p[1], :latlon]))[1], nearest_node(g, collect(df[p[2], :latlon]))[1] )) for p in collect(zip(reverse(trail), vcat(reverse(trail)[2:end], [7])))) if rt < t reverse!(trail) end trail end # ╔═╡ e1eabfe7-ae82-4007-abb7-59681bb7bf90 let of = copy(df)[sol, :] pretty_table(String, of; backend=Val(:html), allow_html_in_cells=true, tf=PrettyTables.tf_html_minimalist, alignment=:l, show_row_number=true, show_subheader=false, linebreaks=true, title="$url last scraped @ $(now())" ) |> HTML end # ╔═╡ 35ae7286-7037-4551-ae18-557811fb9488 let fm = flm.Map() flm.Polygon(polybnd, color="grey", opacity=0.8, weight=3).add_to(fm) flm.Rectangle(boxbnd, color="black", weight=2).add_to(fm) for r in eachrow(df) flm.Marker(r[:latlon], tooltip="$(r[:Location]): $(r[:Address])").add_to(fm) end for p in zip(sol, vcat(sol[2:end], [7])) |> collect s = shortest_path(g, nearest_node(g, collect(df[p[1], :latlon]))[1], nearest_node(g, collect(df[p[2], :latlon]))[1] ) if !isnothing(s) ns = [] for i in s l = g.nodes[i].location try push!(ns, (l.lat, l.lon)) catch e @warn l e end end flm.PolyLine(locations=ns).add_to(fm) end end @py fm.fit_bounds([(minlat, minlon), (maxlat, maxlon)]) fm._repr_html_() |> HTML end # ╔═╡ 00000000-0000-0000-0000-000000000001 PLUTO_PROJECT_TOML_CONTENTS = """ [deps] AbstractTrees = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" CondaPkg = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" GLPK = "60bf3e95-4087-53dc-ae20-288a0d20c6a6" Gumbo = "708ec375-b3d6-5a57-a7ce-8257bf98657a" HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" JuMP = "4076af6c-e467-56ae-b986-b466b2749572" LightOSM = "d1922b25-af4e-4ba3-84af-fe9bea896051" PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" ReadableRegex = "cbbcb084-453d-4c4c-b292-e315607ba6a4" SCIP = "82193955-e24f-5292-bf16-6f2c5261a85f" TravelingSalesmanExact = "737fac7d-4440-55ef-927e-002196e95561" [compat] AbstractTrees = "~0.4.5" CondaPkg = "~0.2.22" DataFrames = "~1.6.1" GLPK = "~1.2.0" Gumbo = "~0.8.2" HTTP = "~1.10.6" JSON = "~0.21.4" JuMP = "~1.21.1" LightOSM = "~0.3.1" PlutoUI = "~0.7.59" PrettyTables = "~2.3.1" PythonCall = "~0.9.20" ReadableRegex = "~0.3.2" SCIP = "~0.11.14" TravelingSalesmanExact = "~0.3.11" """ # ╔═╡ 00000000-0000-0000-0000-000000000002 PLUTO_MANIFEST_TOML_CONTENTS = """ # This file is machine-generated - editing it directly is not advised julia_version = "1.10.3" manifest_format = "2.0" project_hash = "25430a92596131b89c522a979165c0cd9a5804b0" [[deps.ASL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "6252039f98492252f9e47c312c8ffda0e3b9e78d" uuid = "ae81ac8f-d209-56e5-92de-9978fef736f9" version = "0.1.3+0" [[deps.AbstractPlutoDingetjes]] deps = ["Pkg"] git-tree-sha1 = "6e1d2a35f2f90a4bc7c2ed98079b2ba09c35b83a" uuid = "6e696c72-6542-2067-7265-42206c756150" version = "1.3.2" [[deps.AbstractTrees]] git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.4.5" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.1" [[deps.ArnoldiMethod]] deps = ["LinearAlgebra", "Random", "StaticArrays"] git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6" uuid = "ec485272-7323-5ecc-a04f-4719b315124d" version = "0.4.0" [[deps.ArrayTools]] git-tree-sha1 = "ca8c5218f18c5318827fdb1881f370249610f8d2" uuid = "1dc0ca97-c5ce-4e77-ac6d-c576ac9d7f27" version = "0.2.7" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[deps.BenchmarkTools]] deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] git-tree-sha1 = "f1dff6729bc61f4d49e140da1af55dcd1ac97b2f" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" version = "1.5.0" [[deps.BitFlags]] git-tree-sha1 = "2dc09997850d68179b69dafb58ae806167a32b1b" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.8" [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" version = "1.0.8+1" [[deps.CEnum]] git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" version = "0.5.0" [[deps.Clustering]] deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] git-tree-sha1 = "9ebb045901e9bbf58767a9f34ff89831ed711aae" uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" version = "0.15.7" [[deps.CodecBzip2]] deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] git-tree-sha1 = "9b1ca1aa6ce3f71b3d1840c538a8210a043625eb" uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" version = "0.8.2" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" uuid = "944b1d66-785c-5afd-91f1-9de20f533193" version = "0.7.4" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.11.5" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" version = "0.9.10" [[deps.Colors]] deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] git-tree-sha1 = "362a287c3aa50601b0bc359053d5c2468f0e7ce0" uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" version = "0.12.11" [[deps.CommonSubexpressions]] deps = ["MacroTools", "Test"] git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" version = "0.3.0" [[deps.Compat]] deps = ["TOML", "UUIDs"] git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" version = "4.15.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.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] git-tree-sha1 = "6cbbd4d241d7e6579ab354737f4dd95ca43946e1" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" version = "2.4.1" [[deps.CondaPkg]] deps = ["JSON3", "Markdown", "MicroMamba", "Pidfile", "Pkg", "Preferences", "TOML"] git-tree-sha1 = "e81c4263c7ef4eca4d645ef612814d72e9255b41" uuid = "992eb4ea-22a4-4c89-a5bb-47a3300528ab" version = "0.2.22" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] git-tree-sha1 = "260fd2400ed2dab602a7c15cf10c1933c59930a2" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" version = "1.5.5" [deps.ConstructionBase.extensions] ConstructionBaseIntervalSetsExt = "IntervalSets" ConstructionBaseStaticArraysExt = "StaticArrays" [deps.ConstructionBase.weakdeps] IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.Contour]] deps = ["StaticArrays"] git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" version = "0.5.7" [[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.DataFrames]] deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" version = "1.6.1" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" version = "0.18.20" [[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" [[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.Distances]] deps = ["LinearAlgebra", "Statistics", "StatsAPI"] git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" version = "0.10.11" [deps.Distances.extensions] DistancesChainRulesCoreExt = "ChainRulesCore" DistancesSparseArraysExt = "SparseArrays" [deps.Distances.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" [[deps.DocStringExtensions]] deps = ["LibGit2"] git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.9.3" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" [[deps.EarCut_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" version = "2.2.4+0" [[deps.ExceptionUnwrapping]] deps = ["Test"] git-tree-sha1 = "dcb08a0d93ec0b1cdc4af184b26b591e9695423a" uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" version = "0.1.10" [[deps.Extents]] git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" version = "0.1.2" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] git-tree-sha1 = "82d8afa92ecf4b52d78d869f038ebfb881267322" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" version = "1.16.3" [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" [[deps.FixedPointNumbers]] deps = ["Statistics"] git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" version = "0.8.4" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" uuid = "f6369f11-7733-5829-9624-2563aa707210" version = "0.10.36" weakdeps = ["StaticArrays"] [deps.ForwardDiff.extensions] ForwardDiffStaticArraysExt = "StaticArrays" [[deps.FreeType]] deps = ["CEnum", "FreeType2_jll"] git-tree-sha1 = "907369da0f8e80728ab49c1c7e09327bf0d6d999" uuid = "b38be410-82b0-50bf-ab77-7b57e271db43" version = "4.1.1" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" version = "2.13.1+0" [[deps.FreeTypeAbstraction]] deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] git-tree-sha1 = "b5c7fe9cea653443736d264b85466bad8c574f4a" uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" version = "0.9.9" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" [[deps.GLPK]] deps = ["GLPK_jll", "MathOptInterface"] git-tree-sha1 = "3ea2b8751474084c3c7a344a15ed725fb805dd2b" uuid = "60bf3e95-4087-53dc-ae20-288a0d20c6a6" version = "1.2.0" [[deps.GLPK_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "fe68622f32828aa92275895fdb324a85894a5b1b" uuid = "e8aa6df9-e6ca-548a-97ff-1f85fc5b8b98" version = "5.0.1+0" [[deps.GMP_jll]] deps = ["Artifacts", "Libdl"] uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d" version = "6.2.1+6" [[deps.GeoInterface]] deps = ["Extents"] git-tree-sha1 = "801aef8228f7f04972e596b09d4dba481807c913" uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" version = "1.3.4" [[deps.GeometryBasics]] deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] git-tree-sha1 = "b62f2b2d76cee0d61a2ef2b3118cd2a3215d3134" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" version = "0.4.11" [[deps.Graphs]] deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] git-tree-sha1 = "4f2b57488ac7ee16124396de4f2bbdd51b2602ad" uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" version = "1.11.0" [[deps.Gumbo]] deps = ["AbstractTrees", "Gumbo_jll", "Libdl"] git-tree-sha1 = "a1a138dfbf9df5bace489c7a9d5196d6afdfa140" uuid = "708ec375-b3d6-5a57-a7ce-8257bf98657a" version = "0.8.2" [[deps.Gumbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "29070dee9df18d9565276d68a596854b1764aa38" uuid = "528830af-5a63-567c-a44a-034ed33b8444" version = "0.10.2+0" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] git-tree-sha1 = "2c3ec1f90bb4a8f7beafb0cffea8a4c3f4e636ab" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" version = "1.10.6" [[deps.Hwloc_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "ca0f6bf568b4bfc807e7537f081c81e35ceca114" uuid = "e33a78d0-f292-5ffc-b300-72abe9b543c8" version = "2.10.0+0" [[deps.Hyperscript]] deps = ["Test"] git-tree-sha1 = "179267cfa5e712760cd43dcae385d7ea90cc25a4" uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" version = "0.0.5" [[deps.HypertextLiteral]] deps = ["Tricks"] git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" version = "0.9.5" [[deps.IOCapture]] deps = ["Logging", "Random"] git-tree-sha1 = "8b72179abc660bfab5e28472e019392b97d0985c" uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" version = "0.2.4" [[deps.Inflate]] git-tree-sha1 = "ea8031dea4aff6bd41f1df8f2fdfb25b33626381" uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" version = "0.1.4" [[deps.InlineStrings]] deps = ["Parsers"] git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" version = "1.4.0" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" [[deps.InvertedIndices]] git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" version = "1.3.0" [[deps.Ipopt_jll]] deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "SPRAL_jll", "libblastrampoline_jll"] git-tree-sha1 = "f06a7fd68e29c8acc96483d6f163dab58626c4b5" uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" version = "300.1400.1302+0" [[deps.IrrationalConstants]] git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.2.2" [[deps.IterTools]] git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" version = "1.10.0" [[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" [[deps.JLD2]] deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "PrecompileTools", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] git-tree-sha1 = "5ea6acdd53a51d897672edb694e3cc2912f3f8a7" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" version = "0.4.46" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" version = "1.5.0" [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" version = "0.21.4" [[deps.JSON3]] deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] git-tree-sha1 = "eb3edce0ed4fa32f75a0a11217433c31d56bd48b" uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" version = "1.14.0" [deps.JSON3.extensions] JSON3ArrowExt = ["ArrowTypes"] [deps.JSON3.weakdeps] ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" [[deps.JuMP]] deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"] git-tree-sha1 = "07385c772da34d91fc55d6c704b6224302082ba0" uuid = "4076af6c-e467-56ae-b986-b466b2749572" version = "1.21.1" [deps.JuMP.extensions] JuMPDimensionalDataExt = "DimensionalData" [deps.JuMP.weakdeps] DimensionalData = "0703355e-b756-11e9-17c0-8b28908087d0" [[deps.LaTeXStrings]] git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" version = "1.3.1" [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" [[deps.LazyModules]] git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" version = "0.3.1" [[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.4.0+0" [[deps.LibGit2]] deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" [[deps.LibGit2_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" version = "1.6.4+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" [[deps.Libiconv_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" version = "1.17.0+0" [[deps.LightOSM]] deps = ["DataStructures", "Graphs", "HTTP", "JSON", "LightXML", "MetaGraphs", "NearestNeighbors", "Parameters", "QuickHeaps", "SimpleWeightedGraphs", "SparseArrays", "SpatialIndexing", "StaticArrays", "StaticGraphs", "Statistics"] git-tree-sha1 = "e51da5bd942c69b917a2b8d2204f61a8aab95821" uuid = "d1922b25-af4e-4ba3-84af-fe9bea896051" version = "0.3.1" [[deps.LightXML]] deps = ["Libdl", "XML2_jll"] git-tree-sha1 = "3a994404d3f6709610701c7dabfc03fed87a81f8" uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" version = "0.9.1" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] git-tree-sha1 = "18144f3e9cbe9b15b070288eef858f71b291ce37" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" version = "0.3.27" [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" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" version = "1.0.3" [[deps.METIS_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "1fd0a97409e418b78c53fac671cf4622efdf0f21" uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" version = "5.1.2+0" [[deps.MIMEs]] git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" version = "0.1.4" [[deps.MUMPS_seq_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] git-tree-sha1 = "24dd34802044008ef9a596de32d63f3c9ddb7802" uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" version = "500.600.100+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.13" [[deps.MarchingCubes]] deps = ["PrecompileTools", "StaticArrays"] git-tree-sha1 = "27d162f37cc29de047b527dab11a826dd3a650ad" uuid = "299715c1-40a9-479a-aaf9-4a633d36f717" version = "0.1.9" [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MathOptInterface]] deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] git-tree-sha1 = "9cc5acd6b76174da7503d1de3a6f8cf639b6e5cb" uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" version = "1.29.0" [[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.2+1" [[deps.MetaGraphs]] deps = ["Graphs", "JLD2", "Random"] git-tree-sha1 = "1130dbe1d5276cb656f6e1094ce97466ed700e5a" uuid = "626554b9-1ddb-594c-aa3c-2596fe9399a5" version = "0.7.2" [[deps.MicroMamba]] deps = ["Pkg", "Scratch", "micromamba_jll"] git-tree-sha1 = "011cab361eae7bcd7d278f0a7a00ff9c69000c51" uuid = "0b3b1443-0f03-428d-bdfb-f27f9c1191ea" version = "0.1.14" [[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" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2023.1.10" [[deps.MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] git-tree-sha1 = "a3589efe0005fc4718775d8641b2de9060d23f73" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" version = "1.4.4" [[deps.NaNMath]] deps = ["OpenLibm_jll"] git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" version = "1.0.2" [[deps.Ncurses_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "3ac1ca10bae513c9cc8f83d7734b921b8007b574" uuid = "68e3532b-a499-55ff-9963-d1c0c0748b3a" version = "6.5.0+0" [[deps.NearestNeighbors]] deps = ["Distances", "StaticArrays"] git-tree-sha1 = "ded64ff6d4fdd1cb68dfcbb818c69e144a5b2e4c" uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" version = "0.4.16" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.OpenBLAS32_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" version = "0.3.24+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" version = "0.3.23+4" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" version = "0.8.1+2" [[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 = "3da7367955dcc5c54c1ba4d402ccdc09a1a3e046" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" version = "3.0.13+1" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.5+0" [[deps.OrderedCollections]] git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" version = "1.6.3" [[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 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "2.8.1" [[deps.Pidfile]] deps = ["FileWatching", "Test"] git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" version = "1.3.0" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" version = "1.10.0" [[deps.PlutoUI]] deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "FixedPointNumbers", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "MIMEs", "Markdown", "Random", "Reexport", "URIs", "UUIDs"] git-tree-sha1 = "ab55ee1510ad2af0ff674dbcced5e94921f867a9" uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" version = "0.7.59" [[deps.PooledArrays]] deps = ["DataAPI", "Future"] git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" version = "1.4.3" [[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 = "88b895d13d53b5577fd53379d913b9ab9ac82660" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" version = "2.3.1" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" [[deps.Profile]] deps = ["Printf"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" [[deps.PythonCall]] deps = ["CondaPkg", "Dates", "Libdl", "MacroTools", "Markdown", "Pkg", "REPL", "Requires", "Serialization", "Tables", "UnsafePointers"] git-tree-sha1 = "8de9e6cbabc9bcad4f325bd9f2f1e83361e5037d" uuid = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" version = "0.9.20" [[deps.QuickHeaps]] deps = ["ArrayTools", "DataStructures"] git-tree-sha1 = "ff720a9c8356004cc9e3d109cdcb327510345edc" uuid = "30b38841-0f52-47f8-a5f8-18d5d4064379" version = "0.1.2" [[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReadableRegex]] git-tree-sha1 = "befcfa33f50688319571a770be4a55114b71d70a" uuid = "cbbcb084-453d-4c4c-b292-e315607ba6a4" version = "0.3.2" [[deps.Readline_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ncurses_jll"] git-tree-sha1 = "9d70e0c890a6c7ca3eb1ca0eaabba4d34795b7fb" uuid = "05236dd9-4125-5232-aa7c-9ec0c9b2c25a" version = "8.2.1+0" [[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" version = "1.2.2" [[deps.Requires]] deps = ["UUIDs"] git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.0" [[deps.SCIP]] deps = ["Libdl", "LinearAlgebra", "MathOptInterface", "OpenBLAS32_jll", "SCIP_PaPILO_jll", "SCIP_jll"] git-tree-sha1 = "3d6a6516d6940a93b732e8ec7127652a0ead89c6" uuid = "82193955-e24f-5292-bf16-6f2c5261a85f" version = "0.11.14" [[deps.SCIP_PaPILO_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "OpenBLAS32_jll", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll", "oneTBB_jll"] git-tree-sha1 = "c3cc2d09a8383a5dd01f136e4f398150921dae00" uuid = "fc9abe76-a5e6-5fed-b0b7-a12f309cf031" version = "800.100.0+0" [[deps.SCIP_jll]] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "GMP_jll", "Ipopt_jll", "JLLWrappers", "Libdl", "Readline_jll", "Zlib_jll", "bliss_jll", "boost_jll"] git-tree-sha1 = "08f085b6144c47099ed81f564576530ce529ae87" uuid = "e5ac4fe4-a920-5659-9bf8-f9f73e9e79ce" version = "800.100.0+1" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" [[deps.SPRAL_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Hwloc_jll", "JLLWrappers", "Libdl", "METIS_jll", "libblastrampoline_jll"] git-tree-sha1 = "d1ca34081034a9c6903cfbe068a952a739c2aa5c" uuid = "319450e9-13b8-58e8-aa9f-8fd1420848ab" version = "2023.8.2+0" [[deps.Scratch]] deps = ["Dates"] git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" uuid = "6c6a2e73-6563-6170-7368-637461726353" version = "1.2.1" [[deps.SentinelArrays]] deps = ["Dates", "Random"] git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" version = "1.4.1" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" [[deps.SimpleBufferStream]] git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" version = "1.1.0" [[deps.SimpleTraits]] deps = ["InteractiveUtils", "MacroTools"] git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" version = "0.9.4" [[deps.SimpleWeightedGraphs]] deps = ["Graphs", "LinearAlgebra", "Markdown", "SparseArrays"] git-tree-sha1 = "4b33e0e081a825dbfaf314decf58fa47e53d6acb" uuid = "47aef6b3-ad0c-573a-a1e2-d07658019622" version = "1.4.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" [[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.10.0" [[deps.SpatialIndexing]] git-tree-sha1 = "84efe17c77e1f2156a7a0d8a7c163c1e1c7bdaed" uuid = "d4ead438-fe20-5cc5-a293-4fd39a41b74c" version = "0.1.6" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" version = "2.4.0" [deps.SpecialFunctions.extensions] SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" [deps.SpecialFunctions.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" [[deps.StaticArrays]] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] git-tree-sha1 = "bf074c045d3d5ffd956fa0a461da38a44685d6b2" uuid = "90137ffa-7385-5640-81b9-e52037218182" version = "1.9.3" [deps.StaticArrays.extensions] StaticArraysChainRulesCoreExt = "ChainRulesCore" StaticArraysStatisticsExt = "Statistics" [deps.StaticArrays.weakdeps] ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" [[deps.StaticArraysCore]] git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.2" [[deps.StaticGraphs]] deps = ["Graphs", "JLD2", "SparseArrays"] git-tree-sha1 = "855371d8fdfaed46dbb32a7c57a42db4441b9247" uuid = "4c8beaf5-199b-59a0-a7f2-21d17de635b6" version = "0.3.0" [[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" version = "1.10.0" [[deps.StatsAPI]] deps = ["LinearAlgebra"] git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" version = "0.33.21" [[deps.StringManipulation]] deps = ["PrecompileTools"] git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" version = "0.3.4" [[deps.StructArrays]] deps = ["ConstructionBase", "DataAPI", "Tables"] git-tree-sha1 = "f4dc295e983502292c4c3f951dbb4e985e35b3be" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" version = "0.6.18" [deps.StructArrays.extensions] StructArraysAdaptExt = "Adapt" StructArraysGPUArraysCoreExt = "GPUArraysCore" StructArraysSparseArraysExt = "SparseArrays" StructArraysStaticArraysExt = "StaticArrays" [deps.StructArrays.weakdeps] Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" [[deps.StructTypes]] deps = ["Dates", "UUIDs"] git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" version = "1.10.0" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" version = "7.2.1+1" [[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", "LinearAlgebra", "OrderedCollections", "TableTraits"] git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" version = "1.11.1" [[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" [[deps.TranscodingStreams]] git-tree-sha1 = "5d54d076465da49d6746c647022f3b3674e64156" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" version = "0.10.8" weakdeps = ["Random", "Test"] [deps.TranscodingStreams.extensions] TestExt = ["Test", "Random"] [[deps.TravelingSalesmanExact]] deps = ["Clustering", "JuMP", "LinearAlgebra", "Logging", "MathOptInterface", "Printf", "TravelingSalesmanHeuristics", "UnicodePlots"] git-tree-sha1 = "b931dde00e8d007008df17b1640567bd897b7c5b" uuid = "737fac7d-4440-55ef-927e-002196e95561" version = "0.3.11" [[deps.TravelingSalesmanHeuristics]] deps = ["LinearAlgebra", "Random"] git-tree-sha1 = "723b16cbc89f37986f09a374cc35efca3ff89a23" uuid = "8c8f4381-2cdd-507c-846c-be2bcff6f45f" version = "0.3.4" [[deps.Tricks]] git-tree-sha1 = "eae1bb484cd63b36999ee58be2de6c178105112f" uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" version = "0.1.8" [[deps.URIs]] git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" version = "1.5.1" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" version = "1.0.2" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.UnicodePlots]] deps = ["ColorTypes", "Contour", "Crayons", "Dates", "FileIO", "FreeTypeAbstraction", "LazyModules", "LinearAlgebra", "MarchingCubes", "NaNMath", "Printf", "SparseArrays", "StaticArrays", "StatsBase", "Unitful"] git-tree-sha1 = "ae67ab0505b9453655f7d5ea65183a1cd1b3cfa0" uuid = "b8865327-cd53-5732-bb35-84acbb429228" version = "2.12.4" [[deps.Unitful]] deps = ["Dates", "LinearAlgebra", "Random"] git-tree-sha1 = "dd260903fdabea27d9b6021689b3cd5401a57748" uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" version = "1.20.0" [deps.Unitful.extensions] ConstructionBaseUnitfulExt = "ConstructionBase" InverseFunctionsUnitfulExt = "InverseFunctions" [deps.Unitful.weakdeps] ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" [[deps.UnsafePointers]] git-tree-sha1 = "c81331b3b2e60a982be57c046ec91f599ede674a" uuid = "e17b2a0c-0bdf-430a-bd0c-3a23cae4ff39" version = "1.0.0" [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] git-tree-sha1 = "532e22cf7be8462035d092ff21fada7527e2c488" uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" version = "2.12.6+0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" version = "1.2.13+1" [[deps.bliss_jll]] deps = ["Artifacts", "GMP_jll", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "f8b75e896a326a162a4f6e998990521d8302c810" uuid = "508c9074-7a14-5c94-9582-3d4bc1871065" version = "0.77.0+1" [[deps.boost_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] git-tree-sha1 = "72f8f9628f7f008e2616fe4c32ceb96bc82da733" uuid = "28df3c45-c428-5900-9ff8-a3135698ca75" version = "1.79.0+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" version = "5.8.0+1" [[deps.micromamba_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] git-tree-sha1 = "b4a5a3943078f9fd11ae0b5ab1bdbf7718617945" uuid = "f8abcde7-e9b7-5caa-b8af-a437887ae8e4" version = "1.5.8+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" version = "1.52.0+1" [[deps.oneTBB_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" version = "2021.12.0+0" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" version = "17.4.0+2" """ # ╔═╡ Cell order: # ╟─915bd223-4b6e-441b-a82c-05d680cc93cb # ╟─38b70851-9587-457d-adca-50394b3f6a98 # ╠═fc4454f6-1c07-4706-ac3f-040d9ee83994 # ╟─f1344329-8d08-4d5a-bb81-13ccc50ca6ba # ╠═9a1222aa-110c-11ef-1d54-eb155df43b97 # ╠═012f104b-d3a1-4f2a-b224-86d1a711c7f4 # ╠═acb28c38-1914-4398-84b5-1288260845bb # ╠═8d135017-37a8-457b-ab33-e4514e223e09 # ╠═021af38e-3860-4474-a901-620fc92f5d57 # ╠═9c316980-9940-4714-9ef9-357658a23479 # ╠═bcc30610-7e29-4d70-8ae1-752681659e5f # ╟─d31c3579-f6c1-4959-b5d8-ca38f29d119c # ╠═ada082b3-6615-45e9-818f-26e6f63f12ac # ╠═1ac39fd7-fab9-4f22-a91b-944a69e67260 # ╠═c9f6c975-d9d0-4ad3-9f9a-4dacda0bb79c # ╠═30812787-81a0-4f3d-9cd2-2df00c7c4ebd # ╟─4fc5b1a8-9b33-486d-950a-4647d9993aff # ╠═47126b71-1f25-4d73-bf91-22e39a84d2cc # ╠═4741fe85-c011-451b-bef0-51cc487e978a # ╠═951bfa51-da39-437c-9be2-e44648a1b868 # ╠═715a5564-81b1-4189-84ed-c9775f438b0f # ╠═0f31dd19-bb4e-47fc-8566-645062b209c0 # ╠═8af5b693-f17d-44b4-b49f-7786b6e9f636 # ╠═8a55f364-495e-467f-9ca4-fa35e0318388 # ╠═7bf4ae79-5ba5-46ae-8cfa-a198fd6b4312 # ╠═e5c28754-3322-4436-9a30-ff5a95ec9ce9 # ╠═91585a4c-e842-4a87-ae02-ce9e86c3da37 # ╠═2f12547c-4be1-4644-85b7-c3fbdfcedf20 # ╟─568cc195-023c-4df3-a9fb-65f27ea534c5 # ╠═4401458c-3535-47c6-b219-c62c101920af # ╟─efcf7447-bec3-4199-a54c-d8cf1c9874ad # ╠═542b52d9-9f83-49d4-98e1-be2d4c5870a9 # ╠═a868a31f-2cc7-4283-b0e6-27c50f43a3be # ╠═63333464-4a87-4b14-9507-57cbcdd3d734 # ╠═5a635ea7-a3e7-4608-b7db-065588a0d732 # ╠═0bf52f3a-cacd-4310-9526-2610ef1235bb # ╠═39fe4d23-0e0c-4203-a026-db8fbe275815 # ╠═013924bf-76ff-451b-b45b-965d020a9564 # ╠═e7b7eddc-ddde-4554-8b11-1785e381fd0e # ╠═26fa54e2-864c-417d-a44b-fb20550cebb2 # ╠═b136349f-c4b2-4cc8-88c2-99e2bb1688c2 # ╠═a67b7b91-3447-4874-864e-5cae0edf4d96 # ╠═e10130dc-8720-4920-b13e-a3f849e238b1 # ╠═e1eabfe7-ae82-4007-abb7-59681bb7bf90 # ╠═35ae7286-7037-4551-ae18-557811fb9488 # ╟─00000000-0000-0000-0000-000000000001 # ╟─00000000-0000-0000-0000-000000000002