Skip to content

Commit 7d0816c

Browse files
Add coefficient_type kwarg to dual_optimizer (#168)
1 parent 208b284 commit 7d0816c

File tree

4 files changed

+33
-3
lines changed

4 files changed

+33
-3
lines changed

src/MOI_wrapper.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55

66
export DualOptimizer, dual_optimizer
77

8-
function dual_optimizer(optimizer_constructor)
9-
return () -> DualOptimizer(MOI.instantiate(optimizer_constructor))
8+
function dual_optimizer(
9+
optimizer_constructor;
10+
coefficient_type::Type{T} = Float64,
11+
) where {T<:Number}
12+
return () -> DualOptimizer{T}(MOI.instantiate(optimizer_constructor))
1013
end
1114

1215
struct DualOptimizer{T,OT<:MOI.ModelLike} <: MOI.AbstractOptimizer

test/Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[deps]
22
CSDP = "0a46da34-8e4b-519e-b418-48813639ff34"
33
HiGHS = "87dc4568-4c63-4d18-b0c0-bb2238e4078b"
4+
Hypatia = "b99e6be6-89ff-11e8-14f8-45c827f4f8f2"
45
JuMP = "4076af6c-e467-56ae-b986-b466b2749572"
56
MathOptInterface = "b8f27783-ece8-5eb3-8dc8-9495eed66fee"
67
SCS = "c946c3f1-0d1f-5ce8-9dea-7daa1f7e2d13"
@@ -9,4 +10,5 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
910
[compat]
1011
CSDP = "1.0.0"
1112
HiGHS = "1.1.0"
12-
SCS = "1.0.1"
13+
Hypatia = "0.8.1"
14+
SCS = "1.0.1"

test/Solvers/hypatia_test.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Copyright (c) 2017: Guilherme Bodin, and contributors
2+
#
3+
# Use of this source code is governed by an MIT-style license that can be found
4+
# in the LICENSE.md file or at https://opensource.org/licenses/MIT.
5+
6+
import Hypatia
7+
8+
@testset "Solve problems with different coefficient_type" begin
9+
function mineig(::Type{T}) where {T}
10+
model = GenericModel{T}(
11+
Dualization.dual_optimizer(
12+
Hypatia.Optimizer{T};
13+
coefficient_type = T,
14+
),
15+
)
16+
JuMP.set_silent(model)
17+
@variable(model, x[1:3, 1:3] in PSDCone())
18+
@constraint(model, sum(x[i, i] for i in 1:3) == 1)
19+
@objective(model, Min, sum(x[i, i] for i in 1:3))
20+
optimize!(model)
21+
return objective_value(model)
22+
end
23+
@test mineig(Float64) mineig(Float32)
24+
end

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ primal_power_cone_optimizer = []
102102
include("Solvers/highs_test.jl")
103103
include("Solvers/csdp_test.jl")
104104
include("Solvers/scs_test.jl")
105+
include("Solvers/hypatia_test.jl")
105106

106107
include("Tests/test_JuMP_dualize.jl")
107108
include("Tests/test_MOI_wrapper.jl")

0 commit comments

Comments
 (0)