Implement multiple formulations

This commit is contained in:
Aleksandr Kazachkov
2020-11-20 10:52:23 -06:00
committed by Alinson S Xavier
parent b2480ef356
commit 3baddf158a
16 changed files with 3496 additions and 219 deletions

View File

@@ -6,6 +6,9 @@ SHELL := /bin/bash
JULIA := julia --project=. --sysimage ../build/sysimage.so
TIMESTAMP := $(shell date "+%Y-%m-%d %H:%M")
SRC_FILES := $(wildcard ../src/*.jl)
DEST := .
FORMULATION := tight
results_dir := results_$(FORMULATION)
INSTANCES_PGLIB := \
pglib-uc/ca/2014-09-01_reserves_0 \
@@ -87,11 +90,205 @@ INSTANCES_MATPOWER := \
matpower/case6515rte/2017-02-01 \
matpower/case6515rte/2017-08-01
SAMPLES := 1 2 3
SOLUTIONS_MATPOWER := $(foreach s,$(SAMPLES),$(addprefix results/,$(addsuffix .$(s).sol.json,$(INSTANCES_MATPOWER))))
SOLUTIONS_PGLIB := $(foreach s,$(SAMPLES),$(addprefix results/,$(addsuffix .$(s).sol.json,$(INSTANCES_PGLIB))))
INSTANCES_INFORMS1 := \
matpower/case1888rte/2017-01-01 \
matpower/case1888rte/2017-01-02 \
matpower/case1888rte/2017-01-03 \
matpower/case1888rte/2017-01-04 \
matpower/case1888rte/2017-01-05 \
matpower/case1888rte/2017-01-06 \
matpower/case1888rte/2017-01-07 \
matpower/case1888rte/2017-01-08 \
matpower/case1888rte/2017-01-09 \
matpower/case1888rte/2017-01-10 \
matpower/case1888rte/2017-01-11 \
matpower/case1888rte/2017-01-12 \
matpower/case1888rte/2017-01-13 \
matpower/case1888rte/2017-01-14 \
matpower/case1888rte/2017-01-15 \
matpower/case1888rte/2017-01-16 \
matpower/case1888rte/2017-01-17 \
matpower/case1888rte/2017-01-18 \
matpower/case1888rte/2017-01-19 \
matpower/case1888rte/2017-01-20 \
matpower/case1888rte/2017-01-21 \
matpower/case1888rte/2017-01-22 \
matpower/case1888rte/2017-01-23 \
matpower/case1888rte/2017-01-24 \
matpower/case1888rte/2017-01-25 \
matpower/case1888rte/2017-01-26 \
matpower/case1888rte/2017-01-27 \
matpower/case1888rte/2017-01-28 \
matpower/case1888rte/2017-01-29 \
matpower/case1888rte/2017-01-30 \
matpower/case1888rte/2017-01-31 \
matpower/case1888rte/2017-02-01 \
matpower/case1888rte/2017-02-02 \
matpower/case1888rte/2017-02-03 \
matpower/case1888rte/2017-02-04 \
matpower/case1888rte/2017-02-05 \
matpower/case1888rte/2017-02-06 \
matpower/case1888rte/2017-02-07 \
matpower/case1888rte/2017-02-08 \
matpower/case1888rte/2017-02-09 \
matpower/case1888rte/2017-02-10 \
matpower/case1888rte/2017-02-11 \
matpower/case1888rte/2017-02-12 \
matpower/case1888rte/2017-02-13 \
matpower/case1888rte/2017-02-14 \
matpower/case1888rte/2017-02-15 \
matpower/case1888rte/2017-02-16 \
matpower/case1888rte/2017-02-17 \
matpower/case1888rte/2017-02-18 \
matpower/case1888rte/2017-02-19 \
matpower/case1888rte/2017-02-20 \
matpower/case1888rte/2017-02-21 \
matpower/case1888rte/2017-02-22 \
matpower/case1888rte/2017-02-23 \
matpower/case1888rte/2017-02-24 \
matpower/case1888rte/2017-02-25 \
matpower/case1888rte/2017-02-26 \
matpower/case1888rte/2017-02-27 \
matpower/case1888rte/2017-02-28 \
matpower/case1888rte/2017-03-01
.PHONY: tables save small large clean-mps matpower pglib
INSTANCES_INFORMS2 := \
matpower/case3375wp/2017-01-01 \
matpower/case3375wp/2017-01-02 \
matpower/case3375wp/2017-01-03 \
matpower/case3375wp/2017-01-04 \
matpower/case3375wp/2017-01-05 \
matpower/case3375wp/2017-01-06 \
matpower/case3375wp/2017-01-07 \
matpower/case3375wp/2017-01-08 \
matpower/case3375wp/2017-01-09 \
matpower/case3375wp/2017-01-10 \
matpower/case3375wp/2017-01-11 \
matpower/case3375wp/2017-01-12 \
matpower/case3375wp/2017-01-13 \
matpower/case3375wp/2017-01-14 \
matpower/case3375wp/2017-01-15 \
matpower/case3375wp/2017-01-16 \
matpower/case3375wp/2017-01-17 \
matpower/case3375wp/2017-01-18 \
matpower/case3375wp/2017-01-19 \
matpower/case3375wp/2017-01-20 \
matpower/case3375wp/2017-01-21 \
matpower/case3375wp/2017-01-22 \
matpower/case3375wp/2017-01-23 \
matpower/case3375wp/2017-01-24 \
matpower/case3375wp/2017-01-25 \
matpower/case3375wp/2017-01-26 \
matpower/case3375wp/2017-01-27 \
matpower/case3375wp/2017-01-28 \
matpower/case3375wp/2017-01-29 \
matpower/case3375wp/2017-01-30 \
matpower/case3375wp/2017-01-31 \
matpower/case3375wp/2017-02-01 \
matpower/case3375wp/2017-02-02 \
matpower/case3375wp/2017-02-03 \
matpower/case3375wp/2017-02-04 \
matpower/case3375wp/2017-02-05 \
matpower/case3375wp/2017-02-06 \
matpower/case3375wp/2017-02-07 \
matpower/case3375wp/2017-02-08 \
matpower/case3375wp/2017-02-09 \
matpower/case3375wp/2017-02-10 \
matpower/case3375wp/2017-02-11 \
matpower/case3375wp/2017-02-12 \
matpower/case3375wp/2017-02-13 \
matpower/case3375wp/2017-02-14 \
matpower/case3375wp/2017-02-15 \
matpower/case3375wp/2017-02-16 \
matpower/case3375wp/2017-02-17 \
matpower/case3375wp/2017-02-18 \
matpower/case3375wp/2017-02-19 \
matpower/case3375wp/2017-02-20 \
matpower/case3375wp/2017-02-21 \
matpower/case3375wp/2017-02-22 \
matpower/case3375wp/2017-02-23 \
matpower/case3375wp/2017-02-24 \
matpower/case3375wp/2017-02-25 \
matpower/case3375wp/2017-02-26 \
matpower/case3375wp/2017-02-27 \
matpower/case3375wp/2017-02-28 \
matpower/case3375wp/2017-03-01
INSTANCES_INFORMS3 := \
matpower/case6468rte/2017-01-01 \
matpower/case6468rte/2017-01-02 \
matpower/case6468rte/2017-01-03 \
matpower/case6468rte/2017-01-04 \
matpower/case6468rte/2017-01-05 \
matpower/case6468rte/2017-01-06 \
matpower/case6468rte/2017-01-07 \
matpower/case6468rte/2017-01-08 \
matpower/case6468rte/2017-01-09 \
matpower/case6468rte/2017-01-10 \
matpower/case6468rte/2017-01-11 \
matpower/case6468rte/2017-01-12 \
matpower/case6468rte/2017-01-13 \
matpower/case6468rte/2017-01-14 \
matpower/case6468rte/2017-01-15 \
matpower/case6468rte/2017-01-16 \
matpower/case6468rte/2017-01-17 \
matpower/case6468rte/2017-01-18 \
matpower/case6468rte/2017-01-19 \
matpower/case6468rte/2017-01-20 \
matpower/case6468rte/2017-01-21 \
matpower/case6468rte/2017-01-22 \
matpower/case6468rte/2017-01-23 \
matpower/case6468rte/2017-01-24 \
matpower/case6468rte/2017-01-25 \
matpower/case6468rte/2017-01-26 \
matpower/case6468rte/2017-01-27 \
matpower/case6468rte/2017-01-28 \
matpower/case6468rte/2017-01-29 \
matpower/case6468rte/2017-01-30 \
matpower/case6468rte/2017-01-31 \
matpower/case6468rte/2017-02-01 \
matpower/case6468rte/2017-02-02 \
matpower/case6468rte/2017-02-03 \
matpower/case6468rte/2017-02-04 \
matpower/case6468rte/2017-02-05 \
matpower/case6468rte/2017-02-06 \
matpower/case6468rte/2017-02-07 \
matpower/case6468rte/2017-02-08 \
matpower/case6468rte/2017-02-09 \
matpower/case6468rte/2017-02-10 \
matpower/case6468rte/2017-02-11 \
matpower/case6468rte/2017-02-12 \
matpower/case6468rte/2017-02-13 \
matpower/case6468rte/2017-02-14 \
matpower/case6468rte/2017-02-15 \
matpower/case6468rte/2017-02-16 \
matpower/case6468rte/2017-02-17 \
matpower/case6468rte/2017-02-18 \
matpower/case6468rte/2017-02-19 \
matpower/case6468rte/2017-02-20 \
matpower/case6468rte/2017-02-21 \
matpower/case6468rte/2017-02-22 \
matpower/case6468rte/2017-02-23 \
matpower/case6468rte/2017-02-24 \
matpower/case6468rte/2017-02-25 \
matpower/case6468rte/2017-02-26 \
matpower/case6468rte/2017-02-27 \
matpower/case6468rte/2017-02-28 \
matpower/case6468rte/2017-03-01
INSTANCES_TEST := \
test/case14
#SAMPLES := 1 2 3
SAMPLES := 1
SOLUTIONS_MATPOWER := $(foreach s,$(SAMPLES),$(addprefix $(results_dir)/,$(addsuffix .$(s).sol.json,$(INSTANCES_MATPOWER))))
SOLUTIONS_PGLIB := $(foreach s,$(SAMPLES),$(addprefix $(results_dir)/,$(addsuffix .$(s).sol.json,$(INSTANCES_PGLIB))))
SOLUTIONS_INFORMS1 := $(foreach s,$(SAMPLES),$(addprefix $(results_dir)/,$(addsuffix .$(s).sol.json,$(INSTANCES_INFORMS1))))
SOLUTIONS_INFORMS2 := $(foreach s,$(SAMPLES),$(addprefix $(results_dir)/,$(addsuffix .$(s).sol.json,$(INSTANCES_INFORMS2))))
SOLUTIONS_INFORMS3 := $(foreach s,$(SAMPLES),$(addprefix $(results_dir)/,$(addsuffix .$(s).sol.json,$(INSTANCES_INFORMS3))))
SOLUTIONS_TEST := $(foreach s,$(SAMPLES),$(addprefix $(results_dir)/,$(addsuffix .$(s).sol.json,$(INSTANCES_TEST))))
.PHONY: tables save small large clean-mps matpower pglib informs1 informs2 informs3 test
all: matpower pglib
@@ -99,23 +296,47 @@ matpower: $(SOLUTIONS_MATPOWER)
pglib: $(SOLUTIONS_PGLIB)
informs1: $(SOLUTIONS_INFORMS1)
informs2: $(SOLUTIONS_INFORMS2)
informs3: $(SOLUTIONS_INFORMS3)
test: $(SOLUTIONS_TEST)
clean:
@rm -rf tables/benchmark* tables/compare* results
@rm -rf tables/benchmark* tables/compare* $(results_dir)
clean-mps:
@rm -fv results/*/*/*.mps.gz
@rm -fv $(results_dir)/*/*/*.mps.gz
clean-sol:
@rm -rf results/*/*/*.sol.*
@rm -rf $(results_dir)/*/*/*.sol.*
save:
mkdir -p "runs/$(TIMESTAMP)"
rsync -avP results tables "runs/$(TIMESTAMP)/"
rsync -avP $(results_dir) tables "runs/$(TIMESTAMP)/"
results/%.sol.json: run.jl
@echo "run $*"
@mkdir -p $(dir results/$*)
@$(JULIA) run.jl $* 2>&1 | cat > results/$*.log
@mkdir -p $(dir $(DEST)/$(results_dir)/$*)
@$(JULIA) run.jl $* default $(DEST)/$(results_dir) 2>&1 | cat > $(DEST)/$(results_dir)/$*.log
@echo "run $* [done]"
results_tight/%.sol.json: run.jl
@echo "run $*"
@mkdir -p $(dir $(DEST)/$(results_dir)/$*)
@$(JULIA) run.jl $* tight $(DEST)/$(results_dir) 2>&1 | cat > $(DEST)/$(results_dir)/$*.log
@echo "run $* [done]"
results_default/%.sol.json: run.jl
@echo "run $*"
@mkdir -p $(dir $(DEST)/$(results_dir)/$*)
@$(JULIA) run.jl $* default $(DEST)/$(results_dir) 2>&1 | cat > $(DEST)/$(results_dir)/$*.log
@echo "run $* [done]"
results_sparse/%.sol.json: run.jl
@echo "run $*"
@mkdir -p $(dir $(DEST)/$(results_dir)/$*)
@$(JULIA) run.jl $* sparse $(DEST)/$(results_dir) 2>&1 | cat > $(DEST)/$(results_dir)/$*.log
@echo "run $* [done]"
tables:

View File

@@ -1,5 +1,11 @@
# This file is machine-generated - editing it directly is not advised
[[Artifacts]]
deps = ["Pkg"]
git-tree-sha1 = "c30985d8821e0cd73870b17b0ed0ce6dc44cb744"
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
version = "1.3.0"
[[Base64]]
uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
@@ -16,15 +22,15 @@ uuid = "b99e7846-7c00-51b0-8f62-c81ae34c0232"
version = "0.5.10"
[[Bzip2_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "3663bfffede2ef41358b6fc2e1d8a6d50b3c3904"
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e"
uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0"
version = "1.0.6+2"
version = "1.0.6+5"
[[CEnum]]
git-tree-sha1 = "1b77a77c3b28e0b3f413f7567c9bb8dd9bdccd14"
git-tree-sha1 = "215a9aa4a1f23fbd05b92769fdd62559488d70e9"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.3.0"
version = "0.4.1"
[[Calculus]]
deps = ["LinearAlgebra"]
@@ -34,9 +40,9 @@ version = "0.5.1"
[[Cbc]]
deps = ["BinaryProvider", "CEnum", "Cbc_jll", "Libdl", "MathOptInterface", "SparseArrays"]
git-tree-sha1 = "72e4299de0995a60a6230079adc7e47580870815"
git-tree-sha1 = "929d0500c50387e7ac7ae9956ca7d7ce5312c90d"
uuid = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
version = "0.7.0"
version = "0.7.1"
[[Cbc_jll]]
deps = ["Cgl_jll", "Clp_jll", "CoinUtils_jll", "CompilerSupportLibraries_jll", "Libdl", "OpenBLAS32_jll", "Osi_jll", "Pkg"]
@@ -52,15 +58,9 @@ version = "0.60.2+5"
[[Clp_jll]]
deps = ["CoinUtils_jll", "CompilerSupportLibraries_jll", "Libdl", "OpenBLAS32_jll", "Osi_jll", "Pkg"]
git-tree-sha1 = "70fe9e52fd95fa37f645e3d30f08f436cc5b1457"
git-tree-sha1 = "79263d9383ca89b35f31c33ab5b880536a8413a4"
uuid = "06985876-5285-5a41-9fcb-8948a742cc53"
version = "1.17.6+5"
[[CodeTracking]]
deps = ["InteractiveUtils", "UUIDs"]
git-tree-sha1 = "cab4da992adc0a64f63fa30d2db2fd8bec40cab4"
uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2"
version = "0.5.11"
version = "1.17.6+6"
[[CodecBzip2]]
deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"]
@@ -87,16 +87,16 @@ uuid = "bbf7d656-a473-5ed7-a52c-81e309532950"
version = "0.3.0"
[[CompilerSupportLibraries_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "7c4f882c41faa72118841185afc58a2eb00ef612"
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "8e695f735fca77e9708e795eda62afdb869cbb70"
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "0.3.3+0"
version = "0.3.4+0"
[[DataStructures]]
deps = ["InteractiveUtils", "OrderedCollections"]
git-tree-sha1 = "edad9434967fdc0a2631a65d902228400642120c"
git-tree-sha1 = "88d48e133e6d3dd68183309877eac74393daa7eb"
uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
version = "0.17.19"
version = "0.17.20"
[[Dates]]
deps = ["Printf"]
@@ -120,18 +120,15 @@ uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
[[DocStringExtensions]]
deps = ["LibGit2", "Markdown", "Pkg", "Test"]
git-tree-sha1 = "c5714d9bcdba66389612dc4c47ed827c64112997"
git-tree-sha1 = "50ddf44c53698f5e784bbebb3f4b21c5807401b1"
uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae"
version = "0.8.2"
version = "0.8.3"
[[Documenter]]
deps = ["Base64", "Dates", "DocStringExtensions", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "REPL", "Test", "Unicode"]
git-tree-sha1 = "1c593d1efa27437ed9dd365d1143c594b563e138"
git-tree-sha1 = "fb1ff838470573adc15c71ba79f8d31328f035da"
uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
version = "0.25.1"
[[FileWatching]]
uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee"
version = "0.25.2"
[[ForwardDiff]]
deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "NaNMath", "Random", "SpecialFunctions", "StaticArrays"]
@@ -140,10 +137,10 @@ uuid = "f6369f11-7733-5829-9624-2563aa707210"
version = "0.10.12"
[[GLPK]]
deps = ["BinaryProvider", "GLPK_jll", "Libdl", "MathOptInterface", "SparseArrays"]
git-tree-sha1 = "86573ecb852e303b209212046af44871f1c0e49c"
deps = ["BinaryProvider", "CEnum", "GLPK_jll", "Libdl", "MathOptInterface"]
git-tree-sha1 = "0984f1669480cdecd465458b4abf81b238fbfe50"
uuid = "60bf3e95-4087-53dc-ae20-288a0d20c6a6"
version = "0.13.0"
version = "0.14.2"
[[GLPK_jll]]
deps = ["GMP_jll", "Libdl", "Pkg"]
@@ -152,10 +149,10 @@ uuid = "e8aa6df9-e6ca-548a-97ff-1f85fc5b8b98"
version = "4.64.0+0"
[[GMP_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "4dd9301d3a027c05ec403e756ee7a60e3c367e5d"
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "15abc5f976569a1c9d651aff02f7222ef305eb2a"
uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d"
version = "6.1.2+5"
version = "6.1.2+6"
[[GZip]]
deps = ["Libdl"]
@@ -164,16 +161,16 @@ uuid = "92fee26a-97fe-5a0c-ad85-20a5f3185b63"
version = "0.5.1"
[[Gurobi]]
deps = ["Libdl", "LinearAlgebra", "MathOptInterface", "MathProgBase", "SparseArrays"]
git-tree-sha1 = "f36a2fa62909675681aec582ccfc4a4a629406e4"
deps = ["CEnum", "Libdl", "MathOptInterface"]
git-tree-sha1 = "de2015da3bffcf005ef51b78163e81bfb7b2301d"
uuid = "2e9cd046-0924-5485-92f1-d5272153d98b"
version = "0.8.1"
version = "0.9.2"
[[HTTP]]
deps = ["Base64", "Dates", "IniFile", "MbedTLS", "Sockets"]
git-tree-sha1 = "2ac03263ce44be4222342bca1c51c36ce7566161"
git-tree-sha1 = "c7ec02c4c6a039a98a15f955462cd7aea5df4508"
uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3"
version = "0.8.17"
version = "0.8.19"
[[IniFile]]
deps = ["Test"]
@@ -185,6 +182,11 @@ version = "0.5.0"
deps = ["Markdown"]
uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
[[JLLWrappers]]
git-tree-sha1 = "c70593677bbf2c3ccab4f7500d0f4dacfff7b75c"
uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210"
version = "1.1.3"
[[JSON]]
deps = ["Dates", "Mmap", "Parsers", "Unicode"]
git-tree-sha1 = "b34d7cef7b337321e97d22242c3c2b91f476748e"
@@ -193,9 +195,9 @@ version = "0.21.0"
[[JSONSchema]]
deps = ["HTTP", "JSON", "ZipFile"]
git-tree-sha1 = "832a4d327d9dafdae55a6ecae04f9997c83615cc"
git-tree-sha1 = "a9ecdbc90be216912a2e3e8a8e38dc4c93f0d065"
uuid = "7d188eb4-7ad8-530c-ae41-71a32a6d4692"
version = "0.3.0"
version = "0.3.2"
[[JuMP]]
deps = ["Calculus", "DataStructures", "ForwardDiff", "LinearAlgebra", "MathOptInterface", "MutableArithmetics", "NaNMath", "Random", "SparseArrays", "Statistics"]
@@ -203,12 +205,6 @@ git-tree-sha1 = "cbab42e2e912109d27046aa88f02a283a9abac7c"
uuid = "4076af6c-e467-56ae-b986-b466b2749572"
version = "0.21.3"
[[JuliaInterpreter]]
deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"]
git-tree-sha1 = "79e4496b79e8af45198f8c291f26d4514d6b06d6"
uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a"
version = "0.7.24"
[[LibGit2]]
deps = ["Printf"]
uuid = "76f85450-5226-5b5a-8eaa-529ad045b433"
@@ -223,51 +219,33 @@ uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
[[Logging]]
uuid = "56ddb016-857b-54e1-b83d-db4d58db5568"
[[LoweredCodeUtils]]
deps = ["JuliaInterpreter"]
git-tree-sha1 = "1b632dc108106101a9909db7be8f8b32ed8d02f7"
uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b"
version = "0.4.6"
[[MacroTools]]
deps = ["Markdown", "Random"]
git-tree-sha1 = "f7d2e3f654af75f01ec49be82c231c382214223a"
git-tree-sha1 = "6a8a2a625ab0dea913aba95c11370589e0239ff0"
uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.5"
version = "0.5.6"
[[Markdown]]
deps = ["Base64"]
uuid = "d6f4376e-aef5-505a-96c1-9c027394607a"
[[MathOptFormat]]
deps = ["CodecZlib", "DataStructures", "HTTP", "JSON", "JSONSchema", "MathOptInterface"]
git-tree-sha1 = "0206edd9310b863c222af23f71fde5d09e95c20c"
uuid = "f4570300-c277-12e8-125c-4912f86ce65d"
version = "0.2.2"
[[MathOptInterface]]
deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "JSON", "JSONSchema", "LinearAlgebra", "MutableArithmetics", "OrderedCollections", "SparseArrays", "Test", "Unicode"]
git-tree-sha1 = "cd2049c055c7d192a235670d50faa375361624ba"
git-tree-sha1 = "5a1d631e0a9087d425e024d66b9c71e92e78fda8"
uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
version = "0.9.14"
[[MathProgBase]]
deps = ["LinearAlgebra", "SparseArrays"]
git-tree-sha1 = "9abbe463a1e9fc507f12a69e7f29346c2cdc472c"
uuid = "fdba3010-5040-5b88-9595-932c9decdf73"
version = "0.7.8"
version = "0.9.17"
[[MbedTLS]]
deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"]
git-tree-sha1 = "426a6978b03a97ceb7ead77775a1da066343ec6e"
git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe"
uuid = "739be429-bea8-5141-9913-cc70e7f3736d"
version = "1.0.2"
version = "1.0.3"
[[MbedTLS_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "a0cb0d489819fa7ea5f9fa84c7e7eba19d8073af"
git-tree-sha1 = "c0b1286883cac4e2b617539de41111e0776d02e8"
uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1"
version = "2.16.6+1"
version = "2.16.8+0"
[[Mmap]]
uuid = "a63ad114-7e13-5084-954f-fe012c677804"
@@ -284,21 +262,21 @@ uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3"
version = "0.3.4"
[[OpenBLAS32_jll]]
deps = ["CompilerSupportLibraries_jll", "Libdl", "Pkg"]
git-tree-sha1 = "793b33911239d2651c356c823492b58d6490d36a"
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "19c33675cdeb572c1b17f96c492459d4f4958036"
uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2"
version = "0.3.9+4"
version = "0.3.10+0"
[[OpenSpecFun_jll]]
deps = ["CompilerSupportLibraries_jll", "Libdl", "Pkg"]
git-tree-sha1 = "d51c416559217d974a1113522d5919235ae67a87"
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "9db77584158d0ab52307f8c04f8e7c08ca76b5b3"
uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e"
version = "0.5.3+3"
version = "0.5.3+4"
[[OrderedCollections]]
git-tree-sha1 = "293b70ac1780f9584c89268a6e2a560d938a7065"
git-tree-sha1 = "16c08bf5dba06609fe45e30860092d6fa41fde7b"
uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d"
version = "1.3.0"
version = "1.3.1"
[[Osi_jll]]
deps = ["CoinUtils_jll", "CompilerSupportLibraries_jll", "Libdl", "OpenBLAS32_jll", "Pkg"]
@@ -308,15 +286,15 @@ version = "0.108.5+3"
[[PackageCompiler]]
deps = ["Libdl", "Pkg", "UUIDs"]
git-tree-sha1 = "98aa9c653e1dc3473bb5050caf8501293db9eee1"
git-tree-sha1 = "3eee77c94646163f15bd8626acf494360897f890"
uuid = "9b87118b-4619-50d2-8e1e-99f35a4d4d9d"
version = "1.2.1"
version = "1.2.3"
[[Parsers]]
deps = ["Dates", "Test"]
git-tree-sha1 = "10134f2ee0b1978ae7752c41306e131a684e1f06"
deps = ["Dates"]
git-tree-sha1 = "6fa4202675c05ba0f8268a6ddf07606350eda3ce"
uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
version = "1.0.7"
version = "1.0.11"
[[Pkg]]
deps = ["Dates", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "UUIDs"]
@@ -336,15 +314,9 @@ uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
[[Requires]]
deps = ["UUIDs"]
git-tree-sha1 = "d37400976e98018ee840e0ca4f9d20baa231dc6b"
git-tree-sha1 = "28faf1c963ca1dc3ec87f166d92982e3c4a1f66d"
uuid = "ae029012-a4dd-5104-9daa-d747884805df"
version = "1.0.1"
[[Revise]]
deps = ["CodeTracking", "Distributed", "FileWatching", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Pkg", "REPL", "UUIDs", "Unicode"]
git-tree-sha1 = "0992d4643e27b2deb9f2e4ec7a56b7033813a027"
uuid = "295af30f-e4ad-537b-8983-00126c2a3abe"
version = "2.7.3"
version = "1.1.0"
[[SHA]]
uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce"
@@ -399,19 +371,19 @@ uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5"
[[UnitCommitment]]
deps = ["Cbc", "DataStructures", "Documenter", "GLPK", "GZip", "JSON", "JuMP", "LinearAlgebra", "Logging", "MathOptFormat", "MathOptInterface", "PackageCompiler", "Printf", "Requires", "Revise", "SparseArrays", "Test", "TimerOutputs"]
deps = ["Cbc", "DataStructures", "Documenter", "GLPK", "GZip", "Gurobi", "JSON", "JuMP", "LinearAlgebra", "Logging", "MathOptInterface", "OrderedCollections", "PackageCompiler", "Printf", "Requires", "SparseArrays", "Test", "TimerOutputs"]
path = ".."
uuid = "64606440-39ea-11e9-0f29-3303a1d3d877"
version = "2.1.0"
[[ZipFile]]
deps = ["Libdl", "Printf", "Zlib_jll"]
git-tree-sha1 = "254975fef2fc526583bb9b7c9420fe66ffe09f2f"
git-tree-sha1 = "c3a5637e27e914a7a445b8d0ad063d701931e9f7"
uuid = "a5390f91-8eb1-5f08-bee0-b1d1ffed6cea"
version = "0.9.2"
version = "0.9.3"
[[Zlib_jll]]
deps = ["Libdl", "Pkg"]
git-tree-sha1 = "622d8b6dc0c7e8029f17127703de9819134d1b71"
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "320228915c8debb12cb434c59057290f0834dbf6"
uuid = "83775a58-1f1d-513f-b197-d71354ab007a"
version = "1.2.11+14"
version = "1.2.11+18"

View File

@@ -11,14 +11,47 @@ using Printf
using LinearAlgebra
function main()
basename, suffix = split(ARGS[1], ".")
solution_filename = "results/$basename.$suffix.sol.json"
model_filename = "results/$basename.$suffix.mps.gz"
NUM_THREADS = 4
time_limit = 60 * 20
BLAS.set_num_threads(NUM_THREADS)
BLAS.set_num_threads(4)
global_logger(TimeLogger(initial_time = time()))
if length(ARGS) >= 2
mode = string("_", ARGS[2])
else
mode = "_default"
end
if length(ARGS) >= 3 && !isempty(strip(ARGS[3]))
results_dir = ARGS[3]
else
results_dir = string("./","results$mode")
end
# Validate mode and set formulation
if mode == "_default"
formulation = UnitCommitment.DefaultFormulation
elseif mode == "_tight"
formulation = UnitCommitment.TightFormulation
elseif mode == "_sparse"
formulation = UnitCommitment.SparseDefaultFormulation
else
error("Unknown formulation requested: ", ARGS[2])
end
# Filename is instance_name.sample_number.sol.gz
# Parse out the instance + sample parts to create output files
basename, suffix = split(ARGS[1], ".") # will not work if suffix part is not present
model_filename_stub = string(results_dir,"/$basename.$suffix")
solution_filename = string("$model_filename_stub.sol.json")
# Choose logging options
logname, logfile = nothing, nothing
#logname = string("$model_filename_stub.out")
if isa(logname, String) && !isempty(logname)
logfile = open(logname, "w")
global_logger(TimeLogger(initial_time = time(), file = logfile))
else
global_logger(TimeLogger(initial_time = time()))
end
total_time = @elapsed begin
@info "Reading: $basename"
@@ -28,18 +61,26 @@ function main()
@info @sprintf("Read problem in %.2f seconds", time_read)
time_model = @elapsed begin
model = build_model(instance=instance,
optimizer=optimizer_with_attributes(Gurobi.Optimizer,
"Threads" => 4,
"Seed" => rand(1:1000),
))
optimizer=optimizer_with_attributes(Gurobi.Optimizer,
"Threads" => NUM_THREADS,
"Seed" => rand(1:1000))
model = build_model(instance=instance, optimizer=optimizer, formulation=formulation)
end
end
@info "Setting names..."
UnitCommitment.set_variable_names!(model)
model_filename = string(model_filename_stub,".init",".mps.gz")
@info string("Exporting initial model without transmission constraints to ", model_filename)
JuMP.write_to_file(model.mip, model_filename)
total_time += @elapsed begin
@info "Optimizing..."
BLAS.set_num_threads(1)
UnitCommitment.optimize!(model, time_limit=time_limit, gap_limit=1e-3)
end
@info @sprintf("Total time was %.2f seconds", total_time)
@info "Writing: $solution_filename"
@@ -51,11 +92,13 @@ function main()
@info "Verifying solution..."
UnitCommitment.validate(instance, solution)
@info "Setting variable names..."
UnitCommitment.set_variable_names!(model)
@info "Exporting model..."
model_filename = string(model_filename_stub,".final",".mps.gz")
@info string("Exporting final model to ", model_filename)
JuMP.write_to_file(model.mip, model_filename)
end
if !isnothing(logfile)
close(logfile)
end
end # main
main()