diff --git a/scripts/run_experiments.jl b/scripts/run_experiments.jl index 6c4e7c7c901fde0ea0888ec8edafea29c5b7d689..148cf5549408a901b9b0abb24f7b0c626451d9fe 100644 --- a/scripts/run_experiments.jl +++ b/scripts/run_experiments.jl @@ -193,6 +193,7 @@ function run_while(fwhile, alg) k += 1 step!(st) end + close(st) return st end diff --git a/src/common.jl b/src/common.jl index e5fe03059e2b5ce8d0b8325090f1f0f86e3c3a4c..0748b6e543f1b44eb2805feacf60c9afad2e3062 100644 --- a/src/common.jl +++ b/src/common.jl @@ -48,6 +48,7 @@ information to act as a checkpoint for continuing the algorithm at that point. abstract type State end function init end +function Base.close(::State) end function step! end function fetch end diff --git a/src/dualtvdd.jl b/src/dualtvdd.jl index da47e60c35358b3d4f3e082ce381582da5f99cef..2828d282ae3bdcd951c8706e73e4015d513ba0b5 100644 --- a/src/dualtvdd.jl +++ b/src/dualtvdd.jl @@ -88,6 +88,10 @@ function init(alg::DualTVDDAlgorithm{<:DualTVL1ROFOpProblem}) return DualTVDDState(alg, p, subax, cons) end +function Base.close(st::DualTVDDState) + foreach(close, st.cons) +end + function intersectin(a, b) c = intersect(a, b) az = first(a) - one(eltype(a))