Skip to content

Commit

Permalink
Fix format
Browse files Browse the repository at this point in the history
  • Loading branch information
blegat committed Oct 16, 2023
1 parent 0e52542 commit 7ef5d8c
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 16 deletions.
14 changes: 9 additions & 5 deletions src/RelativeEntropy/RelativeEntropy.jl
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,17 @@ function DecompositionAttribute(tol::Real)
return DecompositionAttribute(tol, 1)
end

function decomposition(con_ref::JuMP.ConstraintRef; tol::Real, result_index::Int = 1)
function decomposition(
con_ref::JuMP.ConstraintRef;
tol::Real,
result_index::Int = 1,
)
monos = con_ref.shape.monomials
attr = DecompositionAttribute(tol, result_index)
return Decomposition(
[MP.polynomial(a, monos)
for a in MOI.get(JuMP.owner_model(con_ref), attr, con_ref)]
)
return Decomposition([
MP.polynomial(a, monos) for
a in MOI.get(JuMP.owner_model(con_ref), attr, con_ref)
])
end

MOI.is_set_by_optimize(::DecompositionAttribute) = true
Expand Down
13 changes: 8 additions & 5 deletions src/RelativeEntropy/bridges/sage.jl
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,13 @@ function MOI.get(
!isempty,
[
filter(
x -> !isapprox(x, zero(x), atol=attr.tol),
MOI.get(model, MOI.VariablePrimal(attr.result_index), bridge.ν[k, :])
)
for k in axes(bridge.ν, 1)
]
x -> !isapprox(x, zero(x), atol = attr.tol),
MOI.get(
model,
MOI.VariablePrimal(attr.result_index),
bridge.ν[k, :],
),
) for k in axes(bridge.ν, 1)
],
)
end
15 changes: 12 additions & 3 deletions src/RelativeEntropy/bridges/signomial.jl
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,21 @@ function MOI.Bridges.Constraint.bridge_constraint(
if any(isodd, set.α[i, :])
vi = MOI.add_variable(model)
# vi ≤ -|g[i]|
MOI.Utilities.normalize_and_add_constraint(model, one(T) * vi - g[i], MOI.LessThan(zero(T)))
MOI.Utilities.normalize_and_add_constraint(model, one(T) * vi + g[i], MOI.LessThan(zero(T)))
MOI.Utilities.normalize_and_add_constraint(
model,
one(T) * vi - g[i],
MOI.LessThan(zero(T)),
)
MOI.Utilities.normalize_and_add_constraint(
model,
one(T) * vi + g[i],
MOI.LessThan(zero(T)),
)
g[i] = vi
end
end
constraint = MOI.add_constraint(model, MOI.Utilities.vectorize(g), _signomial(set))
constraint =
MOI.add_constraint(model, MOI.Utilities.vectorize(g), _signomial(set))
return SignomialBridge{T,S,P,F}(constraint)
end

Expand Down
9 changes: 6 additions & 3 deletions test/relative_entropy.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,18 @@ function _test_motzkin(x, y, T, solver, set, feasible, square, neg)
if feasible
@test termination_status(model) == MOI.OPTIMAL
@test primal_status(model) == MOI.FEASIBLE_POINT
if set isa Union{PolyJuMP.RelativeEntropy.SignomialSAGESet,
PolyJuMP.RelativeEntropy.PolynomialSAGESet}
if set isa Union{
PolyJuMP.RelativeEntropy.SignomialSAGESet,
PolyJuMP.RelativeEntropy.PolynomialSAGESet,
}
d = PolyJuMP.RelativeEntropy.decomposition(con_ref; tol = 1e-6)
p = MP.polynomial(d)
if set isa PolyJuMP.RelativeEntropy.SignomialSAGESet
@test p motzkin atol = 1e-6
else
for m in MP.monomials(p - motzkin)
@test MP.coefficient(p, m) MP.coefficient(motzkin, m) atol = 1e-6
@test MP.coefficient(p, m) MP.coefficient(motzkin, m) atol =
1e-6
end
end
end
Expand Down

0 comments on commit 7ef5d8c

Please sign in to comment.