mirror of
https://github.com/kalmarek/PropertyT.jl.git
synced 2024-09-07 07:11:42 +02:00
42 lines
1.1 KiB
Julia
42 lines
1.1 KiB
Julia
function check_positivity(elt, unit; upper_bound=Inf, halfradius=2, optimizer)
|
|
@time sos_problem =
|
|
PropertyT.sos_problem_primal(elt, unit, upper_bound=upper_bound)
|
|
|
|
status, _ = PropertyT.solve(sos_problem, optimizer)
|
|
P = JuMP.value.(sos_problem[:P])
|
|
Q = real.(sqrt(P))
|
|
certified, λ_cert = PropertyT.certify_solution(
|
|
elt,
|
|
unit,
|
|
JuMP.objective_value(sos_problem),
|
|
Q,
|
|
halfradius=halfradius,
|
|
)
|
|
return status, certified, λ_cert
|
|
end
|
|
|
|
function check_positivity(elt, unit, wd; upper_bound=Inf, halfradius=2, optimizer)
|
|
@assert aug(elt) == aug(unit) == 0
|
|
@time sos_problem, Ps =
|
|
PropertyT.sos_problem_primal(elt, unit, wd, upper_bound=upper_bound)
|
|
|
|
@time status, _ = PropertyT.solve(sos_problem, optimizer)
|
|
|
|
Q = let Ps = Ps
|
|
Qs = [real.(sqrt(JuMP.value.(P))) for P in Ps]
|
|
PropertyT.reconstruct(Qs, wd)
|
|
end
|
|
|
|
λ = JuMP.value(sos_problem[:λ])
|
|
|
|
certified, λ_cert = PropertyT.certify_solution(
|
|
elt,
|
|
unit,
|
|
λ,
|
|
Q,
|
|
halfradius=halfradius
|
|
)
|
|
return status, certified, λ_cert
|
|
end
|
|
|