From 5f54ecb515f04ac4b2ad4a3b2d908b80d0767703 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Fri, 6 Oct 2023 14:16:49 +0200 Subject: [PATCH] rework moment_matrix formulation --- src/sos_sdps.jl | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/sos_sdps.jl b/src/sos_sdps.jl index 7dfb306..2b264d7 100644 --- a/src/sos_sdps.jl +++ b/src/sos_sdps.jl @@ -8,21 +8,22 @@ function sos_problem_dual( elt::StarAlgebras.AlgebraElement, order_unit::StarAlgebras.AlgebraElement = zero(elt); lower_bound = -Inf, + supp::AbstractVector{<:Integer} = axes(parent(elt).mstructure, 1), ) @assert parent(elt) == parent(order_unit) - algebra = parent(elt) - moment_matrix = let m = algebra.mstructure - [m[-i, j] for i in axes(m, 1), j in axes(m, 2)] - end + A = parent(elt) # 1 variable for every primal constraint # 1 dual variable for every element of basis # Symmetrized: # 1 dual variable for every orbit of G acting on basis model = Model() - JuMP.@variable(model, y[1:length(basis(algebra))]) + JuMP.@variable(model, y[1:length(basis(A))]) JuMP.@constraint(model, λ_dual, dot(order_unit, y) == 1) - JuMP.@constraint(model, psd, y[moment_matrix] in PSDCone()) + let mstr = A.mstructure + moment_matrix = [mstr[-i, j] for i in supp, j in supp] + JuMP.@constraint(model, psd, y[moment_matrix] in PSDCone()) + end if !isinf(lower_bound) throw("Not Implemented yet")