From 28596026396a26781451fae0027d37b1af6c978f Mon Sep 17 00:00:00 2001 From: kalmar Date: Thu, 8 Jun 2017 21:35:27 +0200 Subject: [PATCH] use Settings type to pass arguments --- AutFN_orbit.jl | 4 +++- Orb_AutFN.jl | 28 ++++++++++++++++++++-------- SL_orbit.jl | 4 +++- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/AutFN_orbit.jl b/AutFN_orbit.jl index b820d31..39c9b6e 100644 --- a/AutFN_orbit.jl +++ b/AutFN_orbit.jl @@ -102,7 +102,9 @@ function main() solver = SCS.SCSSolver(eps=tol, max_iters=iterations, verbose=true, linearsolver=SCS.Indirect) - orbit_check_propertyT(logger, dirname, G, S, AutS, solver, upper_bound) + sett = Settings(dirname, N, G, S, AutS, radius, solver, upper_bound, tol) + + orbit_check_propertyT(logger, sett) end main() diff --git a/Orb_AutFN.jl b/Orb_AutFN.jl index b16d43a..432ec81 100644 --- a/Orb_AutFN.jl +++ b/Orb_AutFN.jl @@ -20,6 +20,18 @@ immutable ProblemData{T} dims::Vector{Int} end +immutable Settings + name::String + N::Int + G::Group + S::Vector + AutS::Group + radius::Int + solver::SCSSolver + upper_bound::Float64 + tol::Float64 +end + function sparsify!{T}(U::AbstractArray{T}, eps=eps(T)) # n = rank(U) U[abs.(U) .< eps] = zero(T) @@ -151,20 +163,20 @@ function init_orbit_data{T<:Nemo.GroupElem}(logger, name::String, G::Nemo.Group, return 0 end -function orbit_check_propertyT(logger, dirname, G, S, AutS, solver, upper_bound) +function orbit_check_propertyT(logger, sett::Settings) - init_orbit_data(logger, dirname, G, S, AutS; radius=2) + init_orbit_data(logger, sett, radius=sett.radius) - Δ = PropertyT.ΔandSDPconstraints(name, G)[1] + Δ = float(PropertyT.ΔandSDPconstraints(sett.name, sett.G)[1]) - fnames = PropertyT.λSDPfilenames(dirname) + fnames = PropertyT.λSDPfilenames(sett.name) if all(isfile.(fnames)) - λ, P = PropertyT.λandP(dirname) + λ, P = PropertyT.λandP(sett.name) else info(logger, "Creating SDP problem...") - SDP_problem, orb_data = create_SDP_problem(dirname, upper_bound=upper_bound) - JuMP.setsolver(SDP_problem, solver) + SDP_problem, orb_data = create_SDP_problem(sett.name, upper_bound=sett.upper_bound) + JuMP.setsolver(SDP_problem, sett.solver) λ, P = λandP(SDP_problem, orb_data) end @@ -174,7 +186,7 @@ function orbit_check_propertyT(logger, dirname, G, S, AutS, solver, upper_bound) info(PropertyT.logger, "minimum(P) = $(minimum(P))") if λ > 0 - sgap = PropertyT.check_distance_to_positive_cone(Δ, λ, P, tol=tol, rational=false, len=2*radius) + sgap = PropertyT.check_distance_to_positive_cone(Δ, λ, P, tol=sett.tol, rational=false, len=2*sett.radius) if isa(sgap, Interval) sgap = sgap.lo end diff --git a/SL_orbit.jl b/SL_orbit.jl index c0b207a..a43743b 100644 --- a/SL_orbit.jl +++ b/SL_orbit.jl @@ -139,7 +139,9 @@ function main() solver = SCS.SCSSolver(eps=tol, max_iters=iterations, verbose=true, linearsolver=SCS.Indirect) - orbit_check_propertyT(logger, dirname, G, S, AutS, solver, upper_bound) + sett = Settings(dirname, N, G, S, AutS, radius, solver, upper_bound, tol) + + orbit_check_propertyT(logger, sett) end main()