2020-01-20 01:19:50 +01:00
|
|
|
using Logging
|
2019-12-18 00:34:21 +01:00
|
|
|
using PropertyT
|
|
|
|
|
|
|
|
using PropertyT.LinearAlgebra
|
|
|
|
using PropertyT.SparseArrays
|
|
|
|
using PropertyT.JuMP
|
|
|
|
|
|
|
|
using PropertyT.AbstractAlgebra
|
|
|
|
using PropertyT.Groups
|
|
|
|
using PropertyT.GroupRings
|
|
|
|
|
|
|
|
using PropertyT.JLD
|
|
|
|
|
|
|
|
BLAS.set_num_threads(2)
|
|
|
|
ENV["OMP_NUM_THREADS"] = 2
|
|
|
|
|
|
|
|
if !haskey(ENV, "GAP_EXECUTABLE")
|
|
|
|
ENV["GAP_EXECUTABLE"] = "/usr/lib/gap/gap"
|
|
|
|
end
|
|
|
|
|
|
|
|
include(joinpath("src", "FPGroups_GAP.jl"))
|
|
|
|
include(joinpath("src", "groupparse.jl"))
|
|
|
|
include(joinpath("src", "utils.jl"))
|
|
|
|
|
2020-01-20 01:19:50 +01:00
|
|
|
const HALFRADIUS = 1
|
2019-12-18 00:34:21 +01:00
|
|
|
using SCS
|
2020-01-19 17:29:41 +01:00
|
|
|
|
|
|
|
with_SCS(iters=30_000, acceleration=10) = with_optimizer(SCS.Optimizer,
|
2019-12-18 00:34:21 +01:00
|
|
|
linear_solver=SCS.Direct,
|
2020-01-19 17:29:41 +01:00
|
|
|
max_iters=iters,
|
2019-12-18 00:34:21 +01:00
|
|
|
eps=1e-9,
|
2020-01-19 17:29:41 +01:00
|
|
|
alpha=(acceleration == 0 ? 1.95 : 1.5),
|
|
|
|
acceleration_lookback=acceleration,
|
2019-12-18 00:34:21 +01:00
|
|
|
warm_start=true)
|
|
|
|
|
2020-01-20 01:19:50 +01:00
|
|
|
groups334 = parse_grouppresentations("data/presentations_3_3_4.txt")
|
|
|
|
groups344 = parse_grouppresentations("data/presentations_3_4_4.txt")
|
|
|
|
groups444 = parse_grouppresentations("data/presentations_4_4_4.txt")
|
2019-12-18 00:34:21 +01:00
|
|
|
|
2020-01-20 01:19:50 +01:00
|
|
|
groups = merge(groups334, groups344, groups444)
|
2020-01-19 17:29:41 +01:00
|
|
|
|
2020-01-20 01:19:50 +01:00
|
|
|
@assert length(ARGS) == 1
|
2020-01-19 17:29:41 +01:00
|
|
|
|
2020-01-20 01:19:50 +01:00
|
|
|
let GROUP = ARGS[1]
|
|
|
|
@assert haskey(groups, GROUP)
|
2020-01-20 02:18:55 +01:00
|
|
|
group_name = "log/$(GROUP)_r$(HALFRADIUS)"
|
2020-01-20 02:23:27 +01:00
|
|
|
mkpath(group_name)
|
2020-01-20 01:19:50 +01:00
|
|
|
open(joinpath(group_name, "full.log"), "a+") do logfile
|
|
|
|
logger = SimpleLogger(logfile)
|
|
|
|
global_logger(logger)
|
|
|
|
|
|
|
|
@info "" group_name
|
2020-01-20 03:18:51 +01:00
|
|
|
λ = check_propertyT(groups[GROUP], group_name,
|
2020-01-20 01:19:50 +01:00
|
|
|
HALFRADIUS, Inf, AutomaticStructure, with_SCS(100_000, 50))
|
|
|
|
|
2020-01-20 03:33:25 +01:00
|
|
|
if λ > 0.01 # there is still a chance to detect spectral gap
|
|
|
|
new_λ = round(0.8λ, sigdigits=2)
|
|
|
|
new_dir = joinpath(group_name, "$new_λ")
|
|
|
|
mkpath(new_dir)
|
|
|
|
cp(joinpath(group_name, "Inf", "warmstart.jld"), new_dir)
|
|
|
|
|
2020-01-20 03:18:51 +01:00
|
|
|
check_propertyT(groups[GROUP], group_name,
|
2020-01-20 03:33:25 +01:00
|
|
|
HALFRADIUS, new_λ, AutomaticStructure, with_SCS(500_000, 0))
|
2020-01-20 03:18:51 +01:00
|
|
|
end
|
2020-01-20 01:19:50 +01:00
|
|
|
end
|
2019-12-18 00:34:21 +01:00
|
|
|
end
|