diff --git a/.gitignore b/.gitignore index 566ac53e..2382b69c 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,11 @@ build/* build_merge/* extra/glpk* cplex.log +experiments/dro/outputs +experiments/dro/*.out +examples/dro/experiments/outputs/* +examples/dro/experiments/*.cor +examples/dro/experiments/*.dro +examples/dro/experiments/*.sto +examples/dro/experiments/*.tim +examples/dro/experiments/*.csv diff --git a/examples/dro/Manifest.toml b/examples/dro/Manifest.toml index 7d5220b5..2285dae7 100644 --- a/examples/dro/Manifest.toml +++ b/examples/dro/Manifest.toml @@ -1,19 +1,37 @@ # This file is machine-generated - editing it directly is not advised +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + [[Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" [[BenchmarkTools]] -deps = ["JSON", "Logging", "Printf", "Statistics", "UUIDs"] -git-tree-sha1 = "9e62e66db34540a0c919d72172cc2f642ac71260" +deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "4c10eee4af024676200bc7752e536f858c6b8f93" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "0.5.0" +version = "1.3.1" + +[[BinDeps]] +deps = ["Libdl", "Pkg", "SHA", "URIParser", "Unicode"] +git-tree-sha1 = "1289b57e8cf019aede076edab0587eb9644175bd" +uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" +version = "1.0.2" + +[[BinaryProvider]] +deps = ["Libdl", "Logging", "SHA"] +git-tree-sha1 = "ecdec412a9abc8db54c0efc5548c64dfce072058" +uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232" +version = "0.5.10" [[Bzip2_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "03a44490020826950c68005cafb336e5ba08b7e8" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.6+4" +version = "1.0.8+0" [[Calculus]] deps = ["LinearAlgebra"] @@ -21,6 +39,18 @@ git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" version = "0.5.1" +[[ChainRulesCore]] +deps = ["Compat", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "80ca332f6dcb2508adba68f22f551adb2d00a624" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.15.3" + +[[ChangesOfVariables]] +deps = ["ChainRulesCore", "LinearAlgebra", "Test"] +git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8" +uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" +version = "0.1.4" + [[CodecBzip2]] deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] git-tree-sha1 = "2e62a725210ce3c3c2e1a3080190e7ca491f18d7" @@ -45,27 +75,25 @@ 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 = "8cd7b7d1c7f6fcbe7e8743a58adf57788ec7f787" +deps = ["Dates", "LinearAlgebra", "UUIDs"] +git-tree-sha1 = "924cdca592bc16f14d2f7006754a621735280b74" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.18.0" +version = "4.1.0" [[CompilerSupportLibraries_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "7c4f882c41faa72118841185afc58a2eb00ef612" +deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "0.3.3+0" [[DataAPI]] -git-tree-sha1 = "176e23402d80e7743fc26c19c681bfb11246af32" +git-tree-sha1 = "fb5f5316dd3fd4c5e7c30a24d50643b73e37cd40" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.3.0" +version = "1.10.0" [[DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "db07bb22795762895b60e44d62b34b16c982a687" +git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.7" +version = "0.18.13" [[Dates]] deps = ["Printf"] @@ -77,19 +105,15 @@ uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" [[DiffResults]] deps = ["StaticArrays"] -git-tree-sha1 = "da24935df8e0c6cf28de340b958f6aac88eaa0cc" +git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805" uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.0.2" +version = "1.0.3" [[DiffRules]] -deps = ["NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "eb0c34204c8410888844ada5359ac8b96292cfd1" +deps = ["LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "d529c45b4d95f1ff43640166959360095b1580f8" uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.0.1" - -[[Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.7.0" [[Distributions]] deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "StaticArrays", "Statistics", "StatsBase", "StatsFuns"] @@ -97,71 +121,115 @@ git-tree-sha1 = "501c11d708917ca09ce357bed163dbaf0f30229f" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" version = "0.23.12" +[[DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "5158c2b41018c5f7eb1470d558127ac274eca0c9" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.1" + +[[Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + [[FillArrays]] deps = ["LinearAlgebra", "Random", "SparseArrays"] -git-tree-sha1 = "b955c227b0d1413a1a97e2ca0635a5de019d7337" +git-tree-sha1 = "502b3de6039d5b78c76118423858d981349f3823" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.9.6" +version = "0.9.7" [[ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "NaNMath", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "1d090099fb82223abc48f7ce176d3f7696ede36d" +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] +git-tree-sha1 = "2f18915445b248731ec5db4e4a17e451020bf21e" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.12" +version = "0.10.30" [[HTTP]] -deps = ["Base64", "Dates", "IniFile", "MbedTLS", "Sockets"] -git-tree-sha1 = "c7ec02c4c6a039a98a15f955462cd7aea5df4508" +deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] +git-tree-sha1 = "0fa77022fe4b511826b39c894c90daf5fce3334a" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "0.8.19" +version = "0.9.17" [[IniFile]] -deps = ["Test"] -git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.0" +version = "0.5.1" [[InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[InverseFunctions]] +deps = ["Test"] +git-tree-sha1 = "b3364212fb5d870f724876ffcd34dd8ec6d98918" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.7" + +[[IrrationalConstants]] +git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.1.1" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.4.1" + [[JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "81690084b6198a2e1da36fcfda16eeca9f9f24e4" +git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.1" +version = "0.21.3" [[JSONSchema]] -deps = ["HTTP", "JSON", "ZipFile"] -git-tree-sha1 = "a9ecdbc90be216912a2e3e8a8e38dc4c93f0d065" +deps = ["HTTP", "JSON", "URIs"] +git-tree-sha1 = "2f49f7f86762a0fbbeef84912265a1ae61c4ef80" uuid = "7d188eb4-7ad8-530c-ae41-71a32a6d4692" -version = "0.3.2" +version = "0.3.4" [[JuMP]] -deps = ["Calculus", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MathOptInterface", "MutableArithmetics", "NaNMath", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "57c17a221a55f81890aabf00f478886859e25eaf" +deps = ["Calculus", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MathOptInterface", "MutableArithmetics", "NaNMath", "Printf", "Random", "SparseArrays", "SpecialFunctions", "Statistics"] +git-tree-sha1 = "4358b7cbf2db36596bdbbe3becc6b9d87e4eb8f5" uuid = "4076af6c-e467-56ae-b986-b466b2749572" -version = "0.21.5" +version = "0.21.10" + +[[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 = ["Printf"] +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"] +deps = ["Libdl", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +[[LogExpFunctions]] +deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "361c2b088575b07946508f135ac556751240091c" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.17" + [[Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" [[MacroTools]] deps = ["Markdown", "Random"] -git-tree-sha1 = "f7d2e3f654af75f01ec49be82c231c382214223a" +git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.5" +version = "0.5.9" [[Markdown]] deps = ["Base64"] @@ -169,52 +237,54 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[MathOptInterface]] deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "JSON", "JSONSchema", "LinearAlgebra", "MutableArithmetics", "OrderedCollections", "SparseArrays", "Test", "Unicode"] -git-tree-sha1 = "5a1d631e0a9087d425e024d66b9c71e92e78fda8" +git-tree-sha1 = "575644e3c05b258250bb599e57cf73bbf1062901" uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "0.9.17" +version = "0.9.22" [[MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] -git-tree-sha1 = "426a6978b03a97ceb7ead77775a1da066343ec6e" +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] +git-tree-sha1 = "14cb991ee7ccc6dabda93d310400575c3cae435b" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.0.2" +version = "1.1.2" [[MbedTLS_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "c0b1286883cac4e2b617539de41111e0776d02e8" +deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.16.8+0" [[Missings]] deps = ["DataAPI"] -git-tree-sha1 = "ed61674a0864832495ffe0a7e889c0da76b0f4c8" +git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "0.4.4" +version = "1.0.2" [[Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + [[MutableArithmetics]] deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "6cf09794783b9de2e662c4e8b60d743021e338d0" +git-tree-sha1 = "8d9496b2339095901106961f44718920732616bb" uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "0.2.10" +version = "0.2.22" [[NaNMath]] -git-tree-sha1 = "c84c576296d0e2fbb3fc134d3e09086b3ea617cd" +git-tree-sha1 = "b086b7ea07f8e38cf122f5016af580881ac914fe" uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "0.3.4" +version = "0.3.7" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -[[OpenSpecFun_jll]] -deps = ["CompilerSupportLibraries_jll", "Libdl", "Pkg"] -git-tree-sha1 = "d51c416559217d974a1113522d5919235ae67a87" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.3+3" +[[OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" [[OrderedCollections]] -git-tree-sha1 = "16c08bf5dba06609fe45e30860092d6fa41fde7b" +git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.3.1" +version = "1.4.1" [[PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse", "Test"] @@ -224,49 +294,64 @@ version = "0.10.1" [[ParameterJuMP]] deps = ["JuMP", "MathOptInterface", "MutableArithmetics", "SparseArrays"] -git-tree-sha1 = "5e4871fd77f020af394f876d2de82bc4fc979485" +git-tree-sha1 = "6a89e4d9671f2c8d43f2ac6589ef6dd0922123d3" uuid = "774612a8-9878-5177-865a-ca53ae2495f9" -version = "0.2.0" +version = "0.2.1" [[Parsers]] -deps = ["Dates", "Test"] -git-tree-sha1 = "8077624b3c450b15c087944363606a6ba12f925e" +deps = ["Dates"] +git-tree-sha1 = "0044b23da09b5608b4ecacb4e5e6c6332f833a7e" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "1.0.10" +version = "2.3.2" [[Pkg]] -deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"] +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 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.3.0" + [[Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +[[Profile]] +deps = ["Printf"] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" + [[QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "12fbe86da16df6679be7521dfb39fbc861e1dc7b" +git-tree-sha1 = "78aadffb3efd2155af139781b8a8df1ef279ea39" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.4.1" +version = "2.4.2" [[REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets"] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[Random]] -deps = ["Serialization"] +deps = ["SHA", "Serialization"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +[[Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + [[Rmath]] deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "86c5647b565873641538d8f812c04e4c9dbeb370" +git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f" uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.6.1" +version = "0.7.0" [[Rmath_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "d76185aa1f421306dec73c057aa384bad74188f0" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.2.2+1" +version = "0.3.0+0" [[SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -282,50 +367,52 @@ version = "0.1.0" [[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", "Random", "Test"] -git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd" +deps = ["DataStructures"] +git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "0.3.1" +version = "1.0.1" [[SparseArrays]] deps = ["LinearAlgebra", "Random"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[SpecialFunctions]] -deps = ["OpenSpecFun_jll"] -git-tree-sha1 = "d8d8b8a9f4119829410ecd706da4cc8594a1e020" +deps = ["BinDeps", "BinaryProvider", "Libdl"] +git-tree-sha1 = "3bdd374b6fd78faf0119b8c5d538788dbf910c6e" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "0.10.3" +version = "0.8.0" [[StaticArrays]] deps = ["LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "016d1e1a00fabc556473b07161da3d39726ded35" +git-tree-sha1 = "da4cf579416c81994afd6322365d00916c79b8ae" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "0.12.4" +version = "0.12.5" [[Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +[[StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "2c11d7290036fe7aac9038ff312d3b3a2a5bf89e" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.4.0" + [[StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics"] -git-tree-sha1 = "d72a47c47c522e283db774fc8c459dd5ed773710" +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "0005d75f43ff23688914536c5e9d5ac94f8077f7" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.1" +version = "0.33.20" [[StatsFuns]] -deps = ["Rmath", "SpecialFunctions"] -git-tree-sha1 = "04a5a8e6ab87966b43f247920eab053fd5fdc925" +deps = ["ChainRulesCore", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "5950925ff997ed6fb3e985dcce8eb1ba42a0bbe7" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "0.9.5" +version = "0.9.18" [[StructJuMP]] deps = ["JuMP", "LinearAlgebra", "MathOptInterface", "ParameterJuMP"] @@ -337,15 +424,34 @@ version = "0.2.0" deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + [[Test]] -deps = ["Distributed", "InteractiveUtils", "Logging", "Random"] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[TranscodingStreams]] deps = ["Random", "Test"] -git-tree-sha1 = "7c53c35547de1c5b9d46a4797cf6d8253807108c" +git-tree-sha1 = "216b95ea110b5972db65aa90f88d8d89dcb8851c" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.5" +version = "0.9.6" + +[[URIParser]] +deps = ["Unicode"] +git-tree-sha1 = "53a9f49546b8d2dd2e688d216421d050c9a31d0d" +uuid = "30578b45-9adc-5946-b283-645ec420af67" +version = "0.4.1" + +[[URIs]] +git-tree-sha1 = "e59ecc5a41b000fa94423a578d29290c7266fc10" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.4.0" [[UUIDs]] deps = ["Random", "SHA"] @@ -354,14 +460,18 @@ uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [[Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -[[ZipFile]] -deps = ["Libdl", "Printf", "Zlib_jll"] -git-tree-sha1 = "254975fef2fc526583bb9b7c9420fe66ffe09f2f" -uuid = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea" -version = "0.9.2" - [[Zlib_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "fdd89e5ab270ea0f2a0174bd9093e557d06d4bfa" +deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.11+16" + +[[libblastrampoline_jll]] +deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" diff --git a/examples/dro/experiments/generate_instances.jl b/examples/dro/experiments/generate_instances.jl new file mode 100644 index 00000000..58a63a2b --- /dev/null +++ b/examples/dro/experiments/generate_instances.jl @@ -0,0 +1,11 @@ +include("../DRDCAP.jl") + +generate(m,n,T,s,k) = DRDCAP(m, n, T, s, k, 0.0, "drdcap_$(m)$(n)$(T)_$(s)_$(k)") + +for k in [20,50,100,200,300] + generate(2,3,3,10,k) + generate(2,4,3,10,k) + generate(3,3,2,10,k) + generate(3,4,2,10,k) +end + diff --git a/examples/dro/experiments/output_file_to_csv.jl b/examples/dro/experiments/output_file_to_csv.jl new file mode 100644 index 00000000..93b35370 --- /dev/null +++ b/examples/dro/experiments/output_file_to_csv.jl @@ -0,0 +1,53 @@ +""" +A Julia script to read output files and create a latex table format. +""" + +using Printf + +instance_numbers = [233, 243, 332, 342] +scenarios = [20, 50, 100, 200, 300] +epsilons = [1, 100, 500, 1000] + +mycsv = open("outputs.csv", "w") +println(mycsv, "instance,K,eps,Iterations,UB,LB,Time") + +for i in instance_numbers, s in scenarios + for e in epsilons + local filename = "outputs/drdcap_$(i)_$(s)_$(e).txt" + primal = dual = gap = time = 0.0 + iter = 0 + # print("dcap$(i)\\_$(s)\\_$(e) & ") + open(filename, "r") do io + while !eof(io) + word = readline(io) + if length(word) < 5 + continue + end + if word[begin:5] == "Statu" + if word[9:end] != "3000" + @error "Unexpected solution status" + end + elseif word[begin:5] == "Prima" + primal = parse(Float64, word[15:end]) + # @show primal + elseif word[begin:5] == "Dual " + dual = parse(Float64, word[15:end]) + # @show dual + elseif word[begin:5] == "Gap (" + gap = parse(Float64, word[15:end]) + # @show gap + elseif word[begin:5] == "Itera" + iter = parse(Float64, word[15:end]) + # @show iter + elseif word[begin:5] == "Time " + time = parse(Float64, word[15:end]) + # @show time + end + end + end + @printf(mycsv, "%d,%d,%d,%d,%f,%f,%f\n", i, s, e, iter, primal, dual, time) + end + # println("\\hline") +end + +close(mycsv) diff --git a/examples/dro/experiments/params.txt b/examples/dro/experiments/params.txt new file mode 100644 index 00000000..e0c315ff --- /dev/null +++ b/examples/dro/experiments/params.txt @@ -0,0 +1 @@ +int LOG_LEVEL 2 diff --git a/examples/dro/experiments/run_script.sh b/examples/dro/experiments/run_script.sh new file mode 100755 index 00000000..45f06b12 --- /dev/null +++ b/examples/dro/experiments/run_script.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +#SBATCH --partition=bdwall +#SBATCH --account=NEXTGENOPT +#SBATCH --nodes=2 +#SBATCH --ntasks-per-node=32 +#SBATCH --time=4:00:00 +#SBATCH --mail-user=kimk@anl.gov +#SBATCH --mail-type=END + +export I_MPI_FABRICS=shm:tmi +export OMP_NUM_THREADS=1 + +DSP=../../../build/bin/runDsp +K=$1 +NP=64 + +echo "##########" +echo "# K=${K} #" +echo "##########" +echo "" + +srun -n $NP $DSP --algo drdd --wassnorm 2.0 --wasseps 100.0 --smps drdcap_332_10_${K} --param params.txt > outputs/drdcap_332_${K}_100_${NP}.txt + +# Run the following in the command line +# sbatch -J drdcap_scale_500 -o drdcap_scale_$(date +%Y%m%d%H%M%S).out run_script_scaling.sh 500 + +# Useful +# squeue -u kimk +# srun --pty -p bdwall -t 0:10:00 /bin/zsh +# sacct --format="JobID,JobName%20,NNodes,NTasks,CPUTime,MaxRSS,MaxRSSNode,MaxRSSTask,ExitCode" --units=G +# sstat --format=AveCPU,AvePages,MaxRSS,AveRSS,AveVMSize,JobID -j 1971639 --allsteps \ No newline at end of file diff --git a/examples/dro/experiments/run_script_scaling.sh b/examples/dro/experiments/run_script_scaling.sh new file mode 100755 index 00000000..45f06b12 --- /dev/null +++ b/examples/dro/experiments/run_script_scaling.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +#SBATCH --partition=bdwall +#SBATCH --account=NEXTGENOPT +#SBATCH --nodes=2 +#SBATCH --ntasks-per-node=32 +#SBATCH --time=4:00:00 +#SBATCH --mail-user=kimk@anl.gov +#SBATCH --mail-type=END + +export I_MPI_FABRICS=shm:tmi +export OMP_NUM_THREADS=1 + +DSP=../../../build/bin/runDsp +K=$1 +NP=64 + +echo "##########" +echo "# K=${K} #" +echo "##########" +echo "" + +srun -n $NP $DSP --algo drdd --wassnorm 2.0 --wasseps 100.0 --smps drdcap_332_10_${K} --param params.txt > outputs/drdcap_332_${K}_100_${NP}.txt + +# Run the following in the command line +# sbatch -J drdcap_scale_500 -o drdcap_scale_$(date +%Y%m%d%H%M%S).out run_script_scaling.sh 500 + +# Useful +# squeue -u kimk +# srun --pty -p bdwall -t 0:10:00 /bin/zsh +# sacct --format="JobID,JobName%20,NNodes,NTasks,CPUTime,MaxRSS,MaxRSSNode,MaxRSSTask,ExitCode" --units=G +# sstat --format=AveCPU,AvePages,MaxRSS,AveRSS,AveVMSize,JobID -j 1971639 --allsteps \ No newline at end of file diff --git a/src/Solver/DualDecomp/DdDriverMpi.cpp b/src/Solver/DualDecomp/DdDriverMpi.cpp index da258647..67219412 100644 --- a/src/Solver/DualDecomp/DdDriverMpi.cpp +++ b/src/Solver/DualDecomp/DdDriverMpi.cpp @@ -122,7 +122,7 @@ DSP_RTN_CODE DdDriverMpi::run() CoinCopyN(mw_->master_->getBestDualSolution(), ndualsol, &dualsol_[0]); numNodes_ = mw_->master_->getDspOsiPtr()->getNumNodes(); - numIterations_ = mw_->master_->getSiPtr()->getIterationCount(); + numIterations_ = mw_->getIterationCount(); /** communicate */ MPI_Bcast(&status_, 1, MPI_INT, 0, comm_); diff --git a/src/Solver/DualDecomp/DdDriverSerial.cpp b/src/Solver/DualDecomp/DdDriverSerial.cpp index e19cced9..f7d638e0 100644 --- a/src/Solver/DualDecomp/DdDriverSerial.cpp +++ b/src/Solver/DualDecomp/DdDriverSerial.cpp @@ -71,7 +71,7 @@ DSP_RTN_CODE DdDriverSerial::run() bestprimsol_ = primsol_; bestdualsol_ = dualsol_; numNodes_ = master->getDspOsiPtr()->getNumNodes(); - numIterations_ = master->getSiPtr()->getIterationCount(); + numIterations_ = mw_->getIterationCount(); } /** nullify master pointer */ master = NULL; diff --git a/src/Solver/DualDecomp/DdMW.h b/src/Solver/DualDecomp/DdMW.h index 6d32e664..1360485b 100644 --- a/src/Solver/DualDecomp/DdMW.h +++ b/src/Solver/DualDecomp/DdMW.h @@ -52,6 +52,9 @@ class DdMW: public BaseMasterWorker { /** A virtual memeber for finalizing the framework. */ virtual DSP_RTN_CODE finalize(); + /** get number of iterations */ + virtual int getIterationCount() {return itercnt_;} + /** get remaining time */ virtual double remainingTime() {return parTimeLimit_ - (CoinGetTimeOfDay() - iterstime_);} diff --git a/src/Solver/DualDecomp/DdMasterTr.cpp b/src/Solver/DualDecomp/DdMasterTr.cpp index b71b2622..49eac1b4 100644 --- a/src/Solver/DualDecomp/DdMasterTr.cpp +++ b/src/Solver/DualDecomp/DdMasterTr.cpp @@ -146,6 +146,12 @@ DSP_RTN_CODE DdMasterTr::solve() status_ = osi_->status(); switch(status_) { + case DSP_STAT_FEASIBLE: + if (parMasterAlgo_ == IPM) { + message_->print(1, "Warning: master solution status is %d, temporarily switching the algorithm to simplex\n", status_); + osi_->use_simplex(); + break; + } case DSP_STAT_PRIM_INFEASIBLE: DSPdebugMessage("The master is infeasible and increases the trust region.\n"); // increase the trust-region size @@ -194,6 +200,9 @@ DSP_RTN_CODE DdMasterTr::solve() } } + if (parMasterAlgo_ == IPM) + osi_->use_barrier(); + END_TRY_CATCH_RTN(;,DSP_RTN_ERR) return DSP_RTN_OK; @@ -545,7 +554,7 @@ DSP_RTN_CODE DdMasterTr::createProblem() cuts_ = new OsiCuts; /** set print level */ - osi_->setLogLevel(CoinMax(0,par_->getIntParam("LOG_LEVEL")-1)); + osi_->setLogLevel(CoinMax(0,par_->getIntParam("LOG_LEVEL")-2)); END_TRY_CATCH_RTN(FREE_MEMORY,DSP_RTN_ERR) diff --git a/src/SolverInterface/DspOsiCpx.h b/src/SolverInterface/DspOsiCpx.h index bdca615f..c082611b 100644 --- a/src/SolverInterface/DspOsiCpx.h +++ b/src/SolverInterface/DspOsiCpx.h @@ -78,7 +78,10 @@ class DspOsiCpx : public DspOsi { CPXsetintparam(cpx_->getEnvironmentPtr(), CPX_PARAM_LPMETHOD, CPX_ALG_BARRIER); // CPXsetintparam(cpx_->getEnvironmentPtr(), CPX_PARAM_BARCROSSALG, -1); // This has been deprecated. CPXsetintparam(cpx_->getEnvironmentPtr(), CPXPARAM_SolutionType, CPX_NONBASIC_SOLN); - CPXsetdblparam(cpx_->getEnvironmentPtr(), CPX_PARAM_BAREPCOMP, 1e-5); + // CPXsetdblparam(cpx_->getEnvironmentPtr(), CPXPARAM_Barrier_ConvergeTol, 1e-5); + // CPXsetintparam(cpx_->getEnvironmentPtr(), CPXPARAM_Emphasis_Numerical, CPX_ON); + // CPXsetintparam(cpx_->getEnvironmentPtr(), CPXPARAM_Preprocessing_Reduce, 1); + // CPXsetintparam(cpx_->getEnvironmentPtr(), CPXPARAM_Preprocessing_Presolve, 1); } /** solution statue */ diff --git a/src/dsp.cpp b/src/dsp.cpp index c95b74b1..f42faf47 100644 --- a/src/dsp.cpp +++ b/src/dsp.cpp @@ -44,8 +44,6 @@ const double test_tolerance = 1.0e-2; */ int main(int argc, char* argv[]) { - show_copyright(); - bool isroot = true; #ifdef DSP_HAS_MPI int comm_rank, comm_size; @@ -63,6 +61,7 @@ int main(int argc, char* argv[]) { exit(0); #endif + if(isroot) show_copyright(); if (argc < 5) { EXIT_WITH_MSG @@ -307,6 +306,8 @@ int runDsp(char *algotype, char *smpsfile, char *mpsfile, char *decfile, char *s cout << "Primal Bound: " << primobj << endl; cout << "Dual Bound : " << dualobj << endl; cout << "Gap (%) : " << fabs(primobj-dualobj)/(fabs(primobj)+1.e-10)*100 << endl; + cout << "Iterations : " << getNumIterations(env) << endl; + cout << "Time (s) : " << getWallTime(env) << endl; if (testvalue != NULL) { double val = atof(testvalue);