Skip to content

Commit

Permalink
Other approach
Browse files Browse the repository at this point in the history
  • Loading branch information
blegat committed Jul 3, 2024
1 parent 0523700 commit 9056ede
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions examples/sos_problem.jl
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,45 @@ function sos_problem(
return m
end

function other_way(
poly::AbstractPolynomial,
wedderburn::SymbolicWedderburn.WedderburnDecomposition,
basis_psd;
)
m = JuMP.Model()

JuMP.@variable m t
JuMP.@objective m Max t
psds = map(SymbolicWedderburn.direct_summands(wedderburn)) do ds
dim = size(ds, 1)
P = JuMP.@variable m [1:dim, 1:dim] Symmetric
JuMP.@constraint m P in PSDCone()
return P
end

C = DynamicPolynomials.coefficients(
poly - t,
SymbolicWedderburn.basis(wedderburn),
)
equations = [-dot(C, iv) for iv in invariant_vectors(wedderburn)]
for ds in SymbolicWedderburn.direct_summands(wedderburn)
dim = size(ds, 1)
P = JuMP.@variable(m, [1:dim, 1:dim] in PSDCone())
U = image_basis(ds)
q = U * basis_psd
for j in 1:dim
for i in 1:dim
qq = SA.star(q[i]) * q[j]
for (k, iv) in enumerate(invariant_vectors(wedderburn))
MA.operate!(MA.add_mul, equations[k], dot(qq, iv), P[i, j])
end
end
end
end
@constraint(m, equations in Zeros())
return m
end

function sos_problem(
poly::AbstractPolynomial,
G::Group,
Expand Down

0 comments on commit 9056ede

Please sign in to comment.