mirror of
https://github.com/kalmarek/PropertyT.jl.git
synced 2025-02-16 18:25:54 +01:00
use SOS_problem-style "interface" for Symmetrized version as well
This commit is contained in:
parent
9c674ec284
commit
9cdcf27215
@ -116,41 +116,32 @@ function addconstraints!(m::JuMP.Model, data::OrbitData, l::Int=length(data.lapl
|
|||||||
println("")
|
println("")
|
||||||
end
|
end
|
||||||
|
|
||||||
function init_model(n, sizes)
|
function init_model(m, sizes)
|
||||||
m = JuMP.Model();
|
P = Vector{Array{JuMP.Variable,2}}(length(sizes))
|
||||||
P = Vector{Array{JuMP.Variable,2}}(n)
|
|
||||||
|
|
||||||
for (k,s) in enumerate(sizes)
|
for (k,s) in enumerate(sizes)
|
||||||
P[k] = JuMP.@variable(m, [i=1:s, j=1:s])
|
P[k] = JuMP.@variable(m, [i=1:s, j=1:s])
|
||||||
JuMP.@SDconstraint(m, P[k] >= 0.0)
|
JuMP.@SDconstraint(m, P[k] >= 0.0)
|
||||||
end
|
end
|
||||||
|
|
||||||
JuMP.@variable(m, λ >= 0.0)
|
return P
|
||||||
JuMP.@objective(m, Max, λ)
|
|
||||||
return m, P
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function create_SDP_problem(sett::Settings)
|
function SOS_problem(X::GroupRingElem, orderunit::GroupRingElem, data::OrbitData; upper_bound=Inf)
|
||||||
info("Loading orbit data....")
|
m = JuMP.Model();
|
||||||
@time SDP_problem, orb_data = OrbitData(sett);
|
P = init_model(m, size.(data.Uπs,2))
|
||||||
|
|
||||||
if sett.upper_bound < Inf
|
λ = JuMP.@variable(m, λ)
|
||||||
λ = JuMP.getvariable(SDP_problem, :λ)
|
if upper_bound < Inf
|
||||||
JuMP.@constraint(SDP_problem, λ <= sett.upper_bound)
|
JuMP.@constraint(SDP_problem, λ <= upper_bound)
|
||||||
end
|
end
|
||||||
|
|
||||||
t = length(orb_data.laplacian)
|
info("Adding $(length(data.orbits)) constraints... ")
|
||||||
info("Adding $t constraints ... ")
|
|
||||||
@time addconstraints!(SDP_problem, orb_data)
|
|
||||||
|
|
||||||
return SDP_problem, orb_data
|
@time addconstraints!(m, X, orderunit, λ, P, data)
|
||||||
end
|
|
||||||
|
|
||||||
function λandP(m::JuMP.Model, data::OrbitData, warmstart=true)
|
JuMP.@objective(m, Max, λ)
|
||||||
varλ = m[:λ]
|
return m, λ, P
|
||||||
varP = data.Ps
|
|
||||||
λ, Ps = PropertyT.λandP(data.name, m, varλ, varP, warmstart)
|
|
||||||
return λ, Ps
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function λandP(m::JuMP.Model, data::OrbitData, sett::Settings)
|
function λandP(m::JuMP.Model, data::OrbitData, sett::Settings)
|
||||||
|
Loading…
Reference in New Issue
Block a user