ANL-CEEESA / UnitCommitment.jl

Optimization package for the Security-Constrained Unit Commitment Problem
Other
106 stars 24 forks source link

MILP limit does not enforce and infinite loop observed during solving #38

Closed mzy2240 closed 1 year ago

mzy2240 commented 1 year ago

Description

Failed to solve a ED (single snapshot, no contingency) and optimization stuck in an infinite loop. Screenshot 2023-07-14 at 6 29 09 AM

Steps to Reproduce

Rename the attached txt file to json, then load just like other instance json. You can use any MIP solver to solve (HiGHS, COPT, Gurobi, etc.) example.txt

(Update) Use 1/x instead of b as the susceptance. You can do that by modifying the _susceptance_matrix function:

function _susceptance_matrix(lines::Array{TransmissionLine})
    return Diagonal([1.0/l.reactance for l in lines])
end

System Information

iSoron commented 1 year ago

Thanks for the bug report, @mzy2240. I am currently unable to reproduce it (on Linux). The error I get when solving your provided instance file is the one below. Does this instance have any disconnected buses or islands?

[ Info: Building model...
[ Info: Computing injection shift factors...
ERROR: LinearAlgebra.SingularException(2)
Stacktrace:
  [1] checknonsingular
    @ ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/factorization.jl:19 [inlined]
  [2] checknonsingular
    @ ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/factorization.jl:22 [inlined]
  [3] #lu!#170
    @ ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/lu.jl:82 [inlined]
  [4] lu!
    @ ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/lu.jl:80 [inlined]
  [5] #lu#176
    @ ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/lu.jl:299 [inlined]
  [6] lu (repeats 2 times)
    @ ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/lu.jl:298 [inlined]
  [7] inv(A::Matrix{Float64})
    @ LinearAlgebra ~/Software/julia-1.9.0/share/julia/stdlib/v1.9/LinearAlgebra/src/dense.jl:917
  [8] _injection_shift_factors(; buses::Vector{UnitCommitment.Bus}, lines::Vector{UnitCommitment.TransmissionLine})
    @ UnitCommitment ~/.julia/packages/UnitCommitment/G53EO/src/model/formulations/base/sensitivity.jl:23
mzy2240 commented 1 year ago

have you applied this change? (use 1/x instead of b for susceptance)

function _susceptance_matrix(lines::Array{TransmissionLine})
    return Diagonal([1.0/l.reactance for l in lines])
end
iSoron commented 1 year ago

@mzy2240 Even with this change I can't reproduce it on Linux; there are no issues computing the matrix and the algorithm converges. I'll try to reproduce it later on macOS. Thanks for the report.

iSoron commented 1 year ago

@mzy2240 Sorry, I forgot to ask. Could you please share the output of using Pkg; Pkg.status(mode=PKGMODE_MANIFEST) so that we know what exact package versions are you using? Thanks!

mzy2240 commented 1 year ago
Status `~/.julia/environments/v1.8/Manifest.toml`
  [14f7f29c] AMD v0.5.0
⌃ [ac637c84] AbbreviatedStackTraces v0.1.10
⌃ [621f4979] AbstractFFTs v1.3.1
⌅ [1520ce14] AbstractTrees v0.3.4
  [79e6a3ab] Adapt v3.6.2
  [163e0771] Aegis v0.7.16 `~/Desktop/Aegis`
  [28312eec] Alert v1.2.0
⌃ [07493b3f] Alpine v0.5.4
  [7c4d4715] AmplNLWriter v1.1.0 `[https://github.com/jump-dev/AmplNLWriter.jl.git#master`](https://github.com/jump-dev/AmplNLWriter.jl.git#master%60)
  [94bf388d] Apollo v1.3.19 `~/Desktop/Apollo`
⌅ [13e28ba4] AppleAccelerate v0.3.3
  [ec485272] ArnoldiMethod v0.2.0
  [4fba245c] ArrayInterface v7.4.11
  [30b0a656] ArrayInterfaceCore v0.1.29
  [dd5226c6] ArrayInterfaceStaticArraysCore v0.1.4
  [65a8f2f4] ArraysOfArrays v0.6.1
  [69666777] Arrow v2.6.2
  [31f734f8] ArrowTypes v2.2.2
  [fbb218c0] BSON v0.3.7
  [f55c55da] BasicLU v0.2.1
  [6e4b80f9] BenchmarkTools v1.3.2
  [b99e7846] BinaryProvider v0.5.10
  [d1d4a3ce] BitFlags v0.1.7
  [c3b6d118] BitIntegers v0.3.0
  [62783981] BitTwiddlingConvenienceFunctions v0.1.5
  [163b9779] Blobs v0.5.1
⌃ [8e7c35d0] BlockArrays v0.11.2
  [b3460a73] BlockSparseMatrices v0.1.0 `[https://github.com/KristofferC/BlockSparseMatrices.jl.git#master`](https://github.com/KristofferC/BlockSparseMatrices.jl.git#master%60)
  [a74b3585] Blosc v0.7.3
  [e1450e63] BufferedStreams v1.2.0
  [fa961155] CEnum v0.4.2
⌃ [227a2e2d] COPT v1.1.1
  [1e616198] COSMO v0.8.7
  [bbd8fffe] COSMOAccelerators v0.1.0
  [2a0fbf3d] CPUSummary v0.2.3
⌃ [336ed68f] CSV v0.10.9
  [159f3aea] Cairo v1.0.5
  [49dc2e85] Calculus v0.5.1
  [9961bab8] Cbc v1.1.1
  [8be319e6] Chain v0.5.0
  [d360d2e6] ChainRulesCore v1.16.0
⌃ [9e997f8a] ChangesOfVariables v0.1.7
⌃ [61c947e1] Clarabel v0.5.0
  [fb6a15b2] CloseOpenIntervals v0.1.12
  [aaaa29a8] Clustering v0.15.3
  [da1fd8a2] CodeTracking v1.3.1
  [523fee87] CodecBzip2 v0.7.2
  [5ba52731] CodecLz4 v0.4.0
⌃ [944b1d66] CodecZlib v0.7.1
  [6b39b394] CodecZstd v0.7.2
  [3da002f7] ColorTypes v0.11.4
  [5ae59095] Colors v0.12.10
  [861a8166] Combinatorics v1.0.2
  [38540f10] CommonSolve v0.2.4
  [bbf7d656] CommonSubexpressions v0.3.0
  [34da2185] Compat v4.7.0
⌃ [f0e56b4a] ConcurrentUtilities v2.2.0
⌃ [8f4d0f93] Conda v1.8.0
  [992eb4ea] CondaPkg v0.2.18
  [187b0558] ConstructionBase v1.5.2
  [f65535da] Convex v0.15.3
  [adafc99b] CpuId v0.3.1
  [a8cc5b0e] Crayons v4.1.1
  [409d8395] Cronus v0.2.19 `~/Desktop/Cronus`
  [a10d1c49] DBInterface v2.5.0
⌃ [e1d33f9a] DLMReader v0.4.11
  [9a962f9c] DataAPI v1.15.0
⌃ [a93c6f00] DataFrames v1.5.0
⌃ [864edb3b] DataStructures v0.18.13
  [e2d170a0] DataValueInterfaces v1.0.0
  [e7dc6d0d] DataValues v0.4.13
  [abce61dc] Decimals v0.4.1
  [b429d917] DensityInterface v0.4.0
  [85a47980] Dictionaries v0.3.25
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.15.1
  [b4f34e82] Distances v0.10.8
  [31c24e10] Distributions v0.25.98
⌅ [ffbed154] DocStringExtensions v0.8.6
  [fa6b7ba4] DualNumbers v0.6.8
⌃ [d2f5444f] DuckDB v0.8.0
  [4e289a0a] EnumX v1.0.4
⌃ [89b67f3b] ExcelFiles v0.6.1
  [c04bee98] ExcelReaders v0.11.0
  [e2ba6199] ExprTools v0.1.9
  [8f5d6c58] EzXML v1.1.0
  [7a1cc6ca] FFTW v1.7.1
  [3064a664] FIGlet v0.2.1
⌅ [29a986be] FastLapackInterface v1.2.9
  [5789e2e9] FileIO v1.16.1
  [8fc22ac5] FilePaths v0.8.3
  [48062228] FilePathsBase v0.9.20
⌅ [1a297f60] FillArrays v0.13.11
  [fb4d412d] FixedPointDecimals v0.4.3
  [53c48c17] FixedPointNumbers v0.8.4
⌅ [08572546] FlameGraphs v0.2.10
  [59287772] Formatting v0.4.2
  [f6369f11] ForwardDiff v0.10.35
  [069b7b12] FunctionWrappers v1.1.3
  [77dc65aa] FunctionWrappersWrappers v0.1.3
  [46192b85] GPUArraysCore v0.1.5
  [92fee26a] GZip v0.5.1
  [14197337] GenericLinearAlgebra v0.3.11
  [bc5e4493] GitHub v5.8.2
  [a2bd30eb] Graphics v1.1.2
  [86223c79] Graphs v1.8.0
  [4c0ca9eb] Gtk v1.3.0
  [8710efd8] GtkObservables v1.2.9
  [c8ec2601] H5Zblosc v0.1.1
⌃ [f67ccb44] HDF5 v0.16.14
⌃ [cd3eb016] HTTP v1.8.0
  [87dc4568] HiGHS v1.5.1 `[https://github.com/jump-dev/HiGHS.jl#master`](https://github.com/jump-dev/HiGHS.jl#master%60)
  [3e5b6fbb] HostCPUFeatures v0.1.15
⌃ [b99e6be6] Hypatia v0.7.0
⌃ [34004b35] HypergeometricFunctions v0.3.18
⌃ [7073ff75] IJulia v1.24.0
  [615f187c] IfElse v0.1.1
⌃ [5c01b14b] InMemoryDatasets v0.7.15
  [313cdc1a] Indexing v1.1.1
  [9b13fd28] IndirectArrays v1.0.0
  [a303e19e] Infinity v0.2.4
  [d25df0c9] Inflate v0.1.3
  [842dd82b] InlineStrings v1.4.0
  [8197267c] IntervalSets v0.7.4
  [d8418881] Intervals v1.10.0
⌃ [3587e190] InverseFunctions v0.1.9
  [41ab1584] InvertedIndices v1.3.0
⌃ [b6b21f68] Ipopt v1.2.1
  [92d709cd] IrrationalConstants v0.2.2
  [c8e1da08] IterTools v1.8.0
  [1c8ee90f] IterableTables v1.0.0
  [42fd0dbc] IterativeSolvers v0.9.2
  [82899510] IteratorInterfaceExtensions v1.0.0
⌅ [c3a54625] JET v0.7.13
  [4138dd39] JLD v0.13.3
⌃ [033835bb] JLD2 v0.4.31
  [692b3bcd] JLLWrappers v1.4.1
  [682c06a0] JSON v0.21.4
  [0f8b85d8] JSON3 v1.13.1
  [7d188eb4] JSONSchema v1.1.0
⌃ [4076af6c] JuMP v1.10.0
  [aa1ae85d] JuliaInterpreter v0.9.23
  [2ddba703] Juniper v0.9.1
  [ef3ab10e] KLU v0.4.0
  [ba0b0d4f] Krylov v0.9.1
  [0b1a1467] KrylovKit v0.6.0
  [40e66cde] LDLFactorizations v0.10.0
  [b964fa9f] LaTeXStrings v1.3.0
  [6f188dcb] LayerDicts v1.0.0
  [10f19ff3] LayoutPointers v0.1.14
⌅ [1d6d02ad] LeftChildRightSiblingTrees v0.1.3
  [194296ae] LibPQ v1.15.1
  [f5a24dde] LimitedLDLFactorizations v0.5.0
⌃ [7a12625a] LinearMaps v3.10.1
⌃ [7ed4a6bd] LinearSolve v1.34.1
  [1724a1d5] LittleEndianBase128 v0.3.0
  [2ab3a3ac] LogExpFunctions v0.3.24
  [e6f89c97] LoggingExtras v1.0.0
⌃ [bdcacae8] LoopVectorization v0.12.158
  [898213cb] LowRankApprox v0.5.3
  [6f1432cf] LoweredCodeUtils v2.3.0
⌃ [d05aeea4] LuxurySparse v0.7.1
  [33e6dc65] MKL v0.6.0
⌅ [da04e1cc] MPI v0.19.2
  [3da0fdf6] MPIPreferences v0.1.8
  [55d2b088] MUMPS v1.3.0
  [1914dd2f] MacroTools v0.5.10
  [d125e4d3] ManualMemory v0.1.8
⌃ [b8f27783] MathOptInterface v1.15.1
  [739be429] MbedTLS v1.1.7
  [f28f55f0] Memento v1.4.1
  [85b6ec6f] MethodAnalysis v0.4.13
  [0b3b1443] MicroMamba v0.1.13
  [e1d29d7a] Missings v1.1.0
  [78c3b35d] Mocking v0.7.7
  [18056a9e] MultiThreadedCaches v0.1.3
  [ffc61752] Mustache v1.0.17
  [d8a4904e] MutableArithmetics v1.3.0
  [15e1cf62] NPZ v0.4.3
  [77ba4419] NaNMath v1.0.2
  [4ff3b909] Narthex v0.3.0 `~/Desktop/Narthex`
  [b8a86587] NearestNeighbors v0.4.13
⌅ [2bd173c7] NodeJS v1.3.0
  [4d1e1d77] Nullables v1.0.0
  [ab2f91bb] OSQP v0.8.0
  [510215fc] Observables v0.5.4
⌃ [6fd5a793] Octavian v0.3.22
⌃ [6fe1bfb0] OffsetArrays v1.12.9
  [4d8831e6] OpenSSL v1.4.1
  [bac558e1] OrderedCollections v1.6.0
  [18732c20] OwnTime v0.1.0
  [90014a1f] PDMats v0.11.17
  [e4faabce] PProf v2.2.2
⌃ [9b87118b] PackageCompiler v1.7.7
  [2f354839] Pajarito v0.8.2
  [d96e819e] Parameters v0.12.3
  [69de0a69] Parsers v2.7.1
  [fa939f87] Pidfile v1.3.0
  [32113eaa] PkgBenchmark v0.2.12
⌃ [14b8a8f1] PkgTemplates v0.7.34
  [f517fe37] Polyester v0.7.3
  [1d0040c9] PolyesterWeave v0.2.1
  [3a141323] PolynomialRoots v1.0.0
  [2dfb63ee] PooledArrays v1.4.2
  [dd99e9e3] PowerFlowData v1.5.0
  [aea7be01] PrecompileTools v1.1.2
  [21216c6a] Preferences v1.4.0
⌃ [08abe8d2] PrettyTables v2.2.4
  [4391764f] ProfileVega v1.1.1
⌃ [c46f51b8] ProfileView v1.7.1
  [33c8b6b6] ProgressLogging v0.1.4
  [92933f4c] ProgressMeter v1.7.2
  [3349acd9] ProtoBuf v1.0.11
⌃ [438e738f] PyCall v1.95.1
  [6099a3de] PythonCall v0.9.13
  [bfc457fd] QDLDL v0.4.1
  [1fd47b50] QuadGK v2.8.2
  [d3d335b2] RawArray v0.1.1
  [3cdcf5f2] RecipesBase v1.3.4
⌃ [731186ca] RecursiveArrayTools v2.32.3
  [f2c3362d] RecursiveFactorization v0.2.18
  [189a3867] Reexport v1.2.2
⌅ [05181044] RelocatableFolders v0.1.3
  [ae029012] Requires v1.3.0
⌃ [295af30f] Revise v3.5.2
  [79098fc4] Rmath v0.7.1
  [d5f540fe] RoundingIntegers v1.1.0
  [7e49a35a] RuntimeGeneratedFunctions v0.5.11
⌃ [82193955] SCIP v0.11.12
  [3cdde19b] SIMDDualNumbers v0.1.1
  [94e857df] SIMDTypes v0.1.0
  [476501e8] SLEEFPirates v0.6.39
  [af517c2e] SQLStrings v0.1.0
⌃ [0bca4576] SciMLBase v1.81.0
  [6c6a2e73] Scratch v1.2.0
  [91c51154] SentinelArrays v1.4.0
  [efcf1570] Setfield v1.1.1
  [777ac1f9] SimpleBufferStream v1.1.0
  [699a6c99] SimpleTraits v0.9.4
  [66db9d55] SnoopPrecompile v1.0.3
  [2133526b] SodiumSeal v0.1.1
  [b85f4697] SoftGlobalScope v1.1.0
  [a2af1166] SortingAlgorithms v1.1.1
  [e56a9233] Sparspak v0.3.9
  [276daf66] SpecialFunctions v2.3.0
  [03a91e81] SplitApplyCombine v1.2.2
  [aedffcd0] Static v0.8.7
  [0d7ed370] StaticArrayInterface v1.4.0
⌃ [90137ffa] StaticArrays v1.5.25
⌃ [1e83bf80] StaticArraysCore v1.4.0
  [82ae8749] StatsAPI v1.6.0
⌃ [2913bbd2] StatsBase v0.33.21
  [4c63d2b9] StatsFuns v1.3.0
  [e9177fbf] StorageOrders v0.3.2
⌃ [7792a7ef] StrideArraysCore v0.4.15
  [892a3eda] StringManipulation v0.3.0
  [856f2bd8] StructTypes v1.10.0
  [c2e53296] SuiteSparseGraphBLAS v0.9.0
⌃ [fd094767] Suppressor v0.2.1
  [5e66a065] TableShowUtils v0.2.5
  [3783bdb8] TableTraits v1.0.1
  [382cd787] TableTraitsUtils v1.0.2
  [bd369af6] Tables v1.10.1
  [5d786b92] TerminalLoggers v0.1.7
⌃ [4239201d] ThreadSafeDicts v0.1.0
  [59d54670] ThreadedSparseArrays v0.2.2
⌃ [8290d209] ThreadingUtilities v0.5.1
⌃ [06e1c1a7] TiledIteration v0.3.1
  [f269a46b] TimeZones v1.10.0
  [a759f4b9] TimerOutputs v0.5.23
  [3bb67fe8] TranscodingStreams v0.9.13
  [d5829a12] TriangularSolve v0.1.19
  [bc48ee85] Tullio v0.3.5
  [9d95972d] TupleTools v1.3.0
  [9d95f2ec] TypedTables v1.4.3
  [30578b45] URIParser v0.4.1
  [5c2747f8] URIs v1.4.2
  [0f7cfa37] UTCDateTimes v1.6.1
  [3a884ed6] UnPack v1.0.2
  [64606440] UnitCommitment v0.4.1+drw `~/Desktop/UnitCommitment.jl`
  [c4a57d5a] UnsafeArrays v1.0.4
  [e17b2a0c] UnsafePointers v1.0.0
  [770da0de] UpdateJulia v0.4.2
  [3d5dd08c] VectorizationBase v0.21.64
  [4ffe575c] VectorizedReduction v0.1.8
⌃ [239c3e63] Vega v2.6.1
⌅ [112f6efa] VegaLite v2.6.0
  [81def892] VersionParsing v1.3.0
  [ea10d353] WeakRefStrings v1.4.2
  [76eceee3] WorkerUtilities v1.6.1
  [fdbf4ff8] XLSX v0.9.0
  [c2297ded] ZMQ v1.2.2
  [a5390f91] ZipFile v0.10.1
  [700de1a5] ZygoteRules v0.2.3
  [ae81ac8f] ASL_jll v0.1.3+0
  [7b86fcea] ATK_jll v2.38.0+0
  [0b7ba130] Blosc_jll v1.21.4+0
  [29cba6d7] Bonmin_jll v100.800.801+0
  [6e34b625] Bzip2_jll v1.0.8+0
  [83423d85] Cairo_jll v1.16.1+1
⌃ [38041ee0] Cbc_jll v200.1000.501+0
⌃ [3830e938] Cgl_jll v0.6000.300+0
⌃ [06985876] Clp_jll v100.1700.601+0
  [be027038] CoinUtils_jll v200.1100.600+0
  [f09e9e23] Couenne_jll v0.500.801+0
  [ee1fde0b] Dbus_jll v1.12.16+3
  [2cbbab25] DuckDB_jll v0.8.1+0
  [2e619515] Expat_jll v2.5.0+0
  [f5851436] FFTW_jll v3.3.10+0
  [a3f928ae] Fontconfig_jll v2.13.93+0
⌃ [d7e528f0] FreeType2_jll v2.10.4+0
  [559328eb] FriBidi_jll v1.0.10+0
  [77ec8976] GTK3_jll v3.24.31+0
  [78b55507] Gettext_jll v0.21.0+0
  [7746bdde] Glib_jll v2.74.0+2
  [3b182d85] Graphite2_jll v1.3.14+0
  [3c863552] Graphviz_jll v2.50.0+1
⌅ [0234f1f7] HDF5_jll v1.12.2+2
  [2e76f6c2] HarfBuzz_jll v2.8.1+1
⌅ [8fd58aa0] HiGHS_jll v1.5.1+0
  [1d5cc7b8] IntelOpenMP_jll v2023.1.0+0
⌅ [9cc047cb] Ipopt_jll v300.1400.400+0
  [aacddb02] JpegTurbo_jll v2.1.91+0
  [b39eb1a6] Kerberos_krb5_jll v1.19.3+0
  [88015f11] LERC_jll v3.0.0+1
  [1d63c593] LLVMOpenMP_jll v15.0.4+0
  [dd4b983a] LZO_jll v2.10.1+0
  [08be9ffa] LibPQ_jll v14.3.0+1
  [42c93a91] Libepoxy_jll v1.5.10+0
⌅ [e9f186c6] Libffi_jll v3.2.2+1
  [d4300ac3] Libgcrypt_jll v1.8.7+0
  [7e76a0d4] Libglvnd_jll v1.6.0+0
  [7add5ba3] Libgpg_error_jll v1.42.0+0
  [94ce4f54] Libiconv_jll v1.16.1+2
  [4b2f31a3] Libmount_jll v2.35.0+0
  [925c91fb] Librsvg_jll v2.54.5+0
⌅ [89763e89] Libtiff_jll v4.4.0+0
  [38a345b3] Libuuid_jll v2.36.0+0
  [5ced341a] Lz4_jll v1.9.3+0
⌅ [d00139f3] METIS_jll v5.1.1+0
⌅ [856f044c] MKL_jll v2022.2.0+0
  [7cb0a576] MPICH_jll v4.1.2+0
  [f1f71cc9] MPItrampoline_jll v5.3.1+0
⌅ [ca64183c] MUMPS_jll v5.5.1+1
⌅ [d7ed1dd3] MUMPS_seq_jll v5.4.1+0
  [9237b28f] MicrosoftMPI_jll v10.1.3+4
⌃ [68e3532b] Ncurses_jll v6.2.0+0
⌃ [c1e1d063] NodeJS_18_jll v18.16.0+0
  [9c4f68bf] OSQP_jll v0.600.200+0
⌅ [656ef2d0] OpenBLAS32_jll v0.3.17+0
  [fe0851c0] OpenMPI_jll v4.1.5+0
⌅ [458c3c95] OpenSSL_jll v1.1.21+0
  [efe28fd5] OpenSpecFun_jll v0.5.5+0
  [7da25872] Osi_jll v0.10800.700+0
⌃ [b247a4be] PARMETIS_jll v4.0.5+0
  [36c8627f] Pango_jll v1.50.9+0
  [30392449] Pixman_jll v0.42.2+0
⌃ [05236dd9] Readline_jll v8.1.1+1
  [f50d1b31] Rmath_jll v0.4.0+0
  [aabda75e] SCALAPACK32_jll v2.2.1+1
  [fc9abe76] SCIP_PaPILO_jll v800.0.301+0
  [e5ac4fe4] SCIP_jll v800.0.301+0
⌅ [a8d0f55d] SCOTCH_jll v6.1.3+0
  [7ed9a814] SSGraphBLAS_jll v7.2.0+0
  [a2964d1f] Wayland_jll v1.21.0+0
  [2381bf8a] Wayland_protocols_jll v1.25.0+0
  [02c8fc9c] XML2_jll v2.10.3+0
  [aed1982a] XSLT_jll v1.1.34+0
⌃ [4f6342f7] Xorg_libX11_jll v1.6.9+4
⌃ [0c0b7dd1] Xorg_libXau_jll v1.0.9+4
  [3c9796d7] Xorg_libXcomposite_jll v0.4.5+4
  [935fb764] Xorg_libXcursor_jll v1.2.0+4
  [0aeada51] Xorg_libXdamage_jll v1.1.5+4
⌃ [a3789734] Xorg_libXdmcp_jll v1.1.3+4
  [1082639a] Xorg_libXext_jll v1.3.4+4
  [d091e8ba] Xorg_libXfixes_jll v5.0.3+4
  [a51aa0fd] Xorg_libXi_jll v1.7.10+4
  [d1454406] Xorg_libXinerama_jll v1.1.4+4
  [ec84b674] Xorg_libXrandr_jll v1.5.2+4
  [ea2f1a96] Xorg_libXrender_jll v0.9.10+4
  [b6f176f1] Xorg_libXtst_jll v1.2.3+4
⌃ [14d82f49] Xorg_libpthread_stubs_jll v0.1.0+3
⌃ [c7cfdc94] Xorg_libxcb_jll v1.13.0+3
⌃ [cc61e674] Xorg_libxkbfile_jll v1.1.0+4
⌃ [35661453] Xorg_xkbcomp_jll v1.4.2+4
⌃ [33bec58e] Xorg_xkeyboard_config_jll v2.27.0+4
⌃ [c5fb5394] Xorg_xtrans_jll v1.4.0+3
  [8f1865be] ZeroMQ_jll v4.3.4+0
  [3161d3a3] Zstd_jll v1.5.5+0
⌅ [b437f822] adwaita_icon_theme_jll v3.33.92+5
  [de012916] at_spi2_atk_jll v2.34.1+4
  [0fc3237b] at_spi2_core_jll v2.34.0+4
  [5629d00f] basiclu_jll v2.2.0+0
  [508c9074] bliss_jll v0.77.0+1
⌅ [28df3c45] boost_jll v1.76.0+1
  [da03df04] gdk_pixbuf_jll v2.42.8+0
  [059c91fe] hicolor_icon_theme_jll v0.17.0+3
  [bf975903] iso_codes_jll v4.11.0+0
  [b53b4c65] libpng_jll v1.6.38+0
  [a9144af2] libsodium_jll v1.0.20+0
⌅ [f8abcde7] micromamba_jll v1.4.1+0
  [1317d2d5] oneTBB_jll v2021.8.0+0
  [cf2c5f97] pprof_jll v1.0.1+0
  [d8fb68d0] xkbcommon_jll v1.4.1+0
  [0dad84c5] ArgTools v1.1.1
  [56f22d72] Artifacts
  [2a0f44e3] Base64
  [ade2ca70] Dates
  [8ba89e20] Distributed
  [f43a241f] Downloads v1.6.0
  [7b1f6079] FileWatching
  [9fa8497b] Future
  [b77e0a4c] InteractiveUtils
  [4af54fe1] LazyArtifacts
  [b27032c2] LibCURL v0.6.3
  [76f85450] LibGit2
  [8f399da3] Libdl
  [37e2e46d] LinearAlgebra
  [56ddb016] Logging
  [d6f4376e] Markdown
  [a63ad114] Mmap
  [ca575930] NetworkOptions v1.2.0
  [44cfe95a] Pkg v1.8.0
  [de0858da] Printf
  [9abbd945] Profile
  [3fa0cd96] REPL
  [9a3f8284] Random
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization
  [1a1011a3] SharedArrays
  [6462fe0b] Sockets
  [2f01184e] SparseArrays
  [10745b16] Statistics
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.0
  [a4e569a6] Tar v1.10.1
  [8dfed614] Test
  [cf7118a7] UUIDs
  [4ec0a83e] Unicode
  [e66e0078] CompilerSupportLibraries_jll v0.5.2+0
  [781609d7] GMP_jll v6.2.1+2
  [deac9b47] LibCURL_jll v7.84.0+0
  [29816b5a] LibSSH2_jll v1.10.2+0
  [c8ffd9c3] MbedTLS_jll v2.28.0+0
  [14a3606d] MozillaCACerts_jll v2022.2.1
  [4536629a] OpenBLAS_jll v0.3.20+0
  [05823500] OpenLibm_jll v0.8.1+0
  [efcefdf7] PCRE2_jll v10.40.0+0
  [bea87d4a] SuiteSparse_jll v5.10.1+0
  [83775a58] Zlib_jll v1.2.12+3
  [8e850b90] libblastrampoline_jll v5.1.1+0
  [8e850ede] nghttp2_jll v1.48.0+0
  [3f19e933] p7zip_jll v17.4.0+0
mzy2240 commented 1 year ago

there are no issues computing the matrix and the algorithm converges.

You got the final solution and did not observe the infinite loop?

mzy2240 commented 1 year ago

I also use a specified slack instead of picking the first bus as slack:

    # Read buses

    if haskey(json["Buses"][values(first(json["Buses"]))[1]], "Offset")
        for (bus_name, dict) in json["Buses"]
            bus = Bus(
                bus_name,
                Int64(dict["Offset"]),
                timeseries(dict["Load (MW)"]),
                ThermalUnit[],
                PriceSensitiveLoad[],
                ProfiledUnit[],
            )
            name_to_bus[bus_name] = bus
            push!(buses, bus)
        end
    else
        for (bus_name, dict) in json["Buses"]
            bus = Bus(
                bus_name,
                length(buses),
                timeseries(dict["Load (MW)"]),
                ThermalUnit[],
                PriceSensitiveLoad[],
                ProfiledUnit[],
            )
            name_to_bus[bus_name] = bus
            push!(buses, bus)
        end
    end
mzy2240 commented 1 year ago

close in favor of https://github.com/ANL-CEEESA/UnitCommitment.jl/issues/41

iSoron commented 1 year ago

Tested it on MacOS 12, Julia 1.9, but I'm still unable to reproduce the issue.

Hi @oyurdakul, do you think this is the same infinite loop you observed a while ago?

mzy2240 commented 1 year ago

Caused by the custom bus offset

mzy2240 commented 1 year ago

Irrelevant but do you have any idea how to model contingencies like loss of load and loss of gen?

iSoron commented 1 year ago

Caused by the custom bus offset

OK; closing as invalid, then.

Irrelevant but do you have any idea how to model contingencies like loss of load and loss of gen?

The most straightforward (and least accurate) approach is just to set an adequate level of reserves. Another approach I'm familiar with, but which has not been implemented yet in the package, is a Benders-like algorithm in which the master problem finds the unit commitment decisions for the base case, and multiple independent subproblems check the feasibility of these decisions under different contingency scenarios. If one of the subproblems is infeasible, feasibility cuts are computed, added to the master problem, and the procedure repeats. See reference below. PRs implementing this method would be very welcome.