add check_SpNs.jl
This commit is contained in:
parent
a0d993640a
commit
aeb74f71f1
91
bin/check_SpNs.jl
Normal file
91
bin/check_SpNs.jl
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
using Pkg
|
||||||
|
Pkg.activate(".")
|
||||||
|
using Test
|
||||||
|
|
||||||
|
using PropertyT
|
||||||
|
using Nemo
|
||||||
|
|
||||||
|
using PropertyT.LinearAlgebra
|
||||||
|
using PropertyT.SparseArrays
|
||||||
|
using PropertyT.JuMP
|
||||||
|
|
||||||
|
using PropertyT.AbstractAlgebra
|
||||||
|
using PropertyT.Groups
|
||||||
|
using PropertyT.GroupRings
|
||||||
|
|
||||||
|
using PropertyT.JLD
|
||||||
|
|
||||||
|
|
||||||
|
# include("../1712.07167/Roots.jl")
|
||||||
|
include(joinpath("..", "src", "SpNs.jl"))
|
||||||
|
|
||||||
|
using .SpNs
|
||||||
|
using .SpNs.Roots
|
||||||
|
|
||||||
|
BLAS.set_num_threads(Threads.nthreads())
|
||||||
|
ENV["OMP_NUM_THREADS"] = Threads.nthreads()
|
||||||
|
|
||||||
|
const N = 2
|
||||||
|
const RADIUS = 3
|
||||||
|
const UPPER_BOUND = 0.801
|
||||||
|
|
||||||
|
root_system = SpNs.gens_roots(N)
|
||||||
|
S = [g.matrix for g in root_system]
|
||||||
|
G = parent(S[1])
|
||||||
|
autS = WreathProduct(PermGroup(2), PermGroup(N))
|
||||||
|
|
||||||
|
using SCS
|
||||||
|
with_SCS = with_optimizer(SCS.Optimizer, linear_solver=SCS.Direct, max_iters=400000, eps=1e-11, alpha=1.95, acceleration_lookback=1, warm_start=true)
|
||||||
|
|
||||||
|
sett = PropertyT.Settings("Sp($(2N),Z)_r$RADIUS", G, S, autS, with_SCS;
|
||||||
|
radius=RADIUS, upper_bound=UPPER_BOUND, warmstart=true)
|
||||||
|
|
||||||
|
PropertyT.print_summary(sett)
|
||||||
|
|
||||||
|
fp = PropertyT.fullpath(sett)
|
||||||
|
isdir(fp) || mkpath(fp)
|
||||||
|
|
||||||
|
Δ = PropertyT.Laplacian(S, RADIUS)
|
||||||
|
RG = parent(Δ)
|
||||||
|
Δs = SpNs.laplacians(RG, root_system)
|
||||||
|
|
||||||
|
Sq = sum( Δα^2 for (α, Δα) in Δs );
|
||||||
|
# Op = sum( Δα * sum(Δβ for (β, Δβ) in Δs if isorthogonal(α, β)) for (α, Δα) in Δs );
|
||||||
|
Adj = sum( Δα * sum(Δβ for (β, Δβ) in Δs if !isproportional(α, β)) for (α, Δα) in Δs );
|
||||||
|
|
||||||
|
const elt = Adj
|
||||||
|
|
||||||
|
solver_logfile(sett) = joinpath(PropertyT.fullpath(sett), "Adj_solver_$(PropertyT.Dates.now()).log")
|
||||||
|
|
||||||
|
λ, P = PropertyT.approximate_by_SOS(sett, elt, Δ,
|
||||||
|
solverlog=solver_logfile(sett))
|
||||||
|
|
||||||
|
# save(PropertyT.filename(sett, :solution), "λ", λ, "P", P)
|
||||||
|
# λ < 0 && @warn "Solver did not produce a valid solution!"
|
||||||
|
|
||||||
|
# Q = real(sqrt(P));
|
||||||
|
# certified_λ = PropertyT.certify_SOS_decomposition(elt, Δ, λ, Q, R=RADIUS)
|
||||||
|
|
||||||
|
# @info "The obtained SOS can be use to certify λ ≥" certified_λ
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# od = PropertyT.OrbitData(RG, WreathProduct(PermGroup(2), PermGroup(N)))
|
||||||
|
# orbit_data = PropertyT.decimate(od);
|
||||||
|
#
|
||||||
|
# using SCS
|
||||||
|
# using JuMP
|
||||||
|
# warmstart = nothing
|
||||||
|
#
|
||||||
|
# UB = 0.88 # for elt = Δ²;
|
||||||
|
# SDP_problem, varP = PropertyT.SOS_problem(elt, Δ, orbit_data, upper_bound=UB);
|
||||||
|
# # SDP_problem, varP = PropertyT.SOS_problem(elt, Δ, orbit_data);
|
||||||
|
#
|
||||||
|
# sett = PropertyT.Settings("Sp($(2N),Z)", G, S, autS, solver(2000, accel=20);
|
||||||
|
# upper_bound=1.3, warmstart=false)
|
||||||
|
#
|
||||||
|
# with_SCS = with_optimizer(SCS.Optimizer, linear_solver=SCS.Direct, max_iters=100000, eps=1e-12, alpha=1.95, acceleration_lookback=1, warm_start=true)
|
||||||
|
#
|
||||||
|
# status, warmstart = PropertyT.solve(SDP_problem, with_SCS, warmstart)
|
0
src/1712.07167.jl
Normal file
0
src/1712.07167.jl
Normal file
Loading…
Reference in New Issue
Block a user