constraints_from_pm -> constraints

returns a vector of constraints, i.e. vectors of Tuple{Int, Int}
This commit is contained in:
kalmarek 2017-11-08 09:25:40 +01:00
parent 31715701cc
commit 0c9fb40e65
3 changed files with 11 additions and 11 deletions

View File

@ -79,14 +79,14 @@ function orbit_spvector(vect::AbstractVector, orbits)
return orb_vector return orb_vector
end end
function orbit_constraint(constraints::Vector{Vector{Vector{Int64}}}, n) function orbit_constraint(constraints::Vector{Vector{Tuple{Int,Int}}}, n)
result = spzeros(n,n) result = spzeros(n,n)
for cnstr in constraints for cnstr in constraints
for p in cnstr for p in cnstr
result[p[2], p[1]] += 1.0 result[p[2], p[1]] += 1.0/length(constraints)
end end
end end
return 1/length(constraints)*result return result
end end
############################################################################### ###############################################################################

View File

@ -88,7 +88,7 @@ function ΔandSDPconstraints(prefix::String, G::Group)
pm_fname, Δ_fname = pmΔfilenames(prefix) pm_fname, Δ_fname = pmΔfilenames(prefix)
product_matrix = load(pm_fname, "pm") product_matrix = load(pm_fname, "pm")
sdp_constraints = constraints_from_pm(product_matrix) sdp_constraints = constraints(product_matrix)
RG = GroupRing(G, product_matrix) RG = GroupRing(G, product_matrix)
Δ = GroupRingElem(load(Δ_fname, "Δ")[:, 1], RG) Δ = GroupRingElem(load(Δ_fname, "Δ")[:, 1], RG)
@ -107,15 +107,15 @@ end
function ΔandSDPconstraints{T<:GroupElem}(S::Vector{T}, Id::T; radius::Int=2) function ΔandSDPconstraints{T<:GroupElem}(S::Vector{T}, Id::T; radius::Int=2)
info(logger, "Generating balls of sizes $sizes") info(logger, "Generating balls of sizes $sizes")
@logtime logger B, sizes = Groups.generate_balls(S, Id, radius=2*radius) @logtime logger E_R, sizes = Groups.generate_balls(S, Id, radius=2*radius)
info(logger, "Creating product matrix...") info(logger, "Creating product matrix...")
@logtime logger pm = GroupRings.create_pm(B, GroupRings.reverse_dict(B), sizes[radius]; twisted=true) @logtime logger pm = GroupRings.create_pm(E_R, GroupRings.reverse_dict(E_R), sizes[radius]; twisted=true)
info(logger, "Creating sdp_constratints...") info(logger, "Creating sdp_constratints...")
@logtime logger sdp_constraints = PropertyT.constraints_from_pm(pm) @logtime logger sdp_constraints = PropertyT.constraints(pm)
RG = GroupRing(parent(Id), B, pm) RG = GroupRing(parent(Id), E_R, pm)
Δ = splaplacian(RG, S) Δ = splaplacian(RG, S)
return Δ, sdp_constraints return Δ, sdp_constraints

View File

@ -1,13 +1,13 @@
using JuMP using JuMP
import MathProgBase: AbstractMathProgSolver import MathProgBase: AbstractMathProgSolver
function constraints_from_pm(pm, total_length=maximum(pm)) function constraints(pm, total_length=maximum(pm))
n = size(pm,1) n = size(pm,1)
constraints = [Array{Int,1}[] for x in 1:total_length] constraints = [Vector{Tuple{Int,Int}}() for _ in 1:total_length]
for j in 1:n for j in 1:n
for i in 1:n for i in 1:n
idx = pm[i,j] idx = pm[i,j]
push!(constraints[idx], [i,j]) push!(constraints[idx], (i,j))
end end
end end
return constraints return constraints