Skip to content

Commit f96a40b

Browse files
authored
Fix _to_polynomial for ScalarAffineFunction and ScalarQuadraticFunction (#112)
* Fix _to_polynomial for ScalarAffineFunction and ScalarQuadraticFunction * Update test/qcqp.jl
1 parent 29fa416 commit f96a40b

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/nl_to_polynomial.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ function _to_polynomial!(d, ::Type{T}, vi::MOI.VariableIndex) where {T}
5757
return d[vi]
5858
end
5959

60+
function _to_polynomial!(
61+
d,
62+
::Type{T},
63+
f::Union{MOI.ScalarAffineFunction,MOI.ScalarQuadraticFunction},
64+
) where {T}
65+
return _to_polynomial!(d, T, convert(MOI.ScalarNonlinearFunction, f))
66+
end
67+
6068
function _to_polynomial!(
6169
d,
6270
::Type{T},

test/qcqp.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,22 @@ function test_unbound_polynomial(x, y, T)
199199
return
200200
end
201201

202+
function test_scalar_nonlinear_function(x, y, T)
203+
inner = Model{T}()
204+
model = PolyJuMP.JuMP.GenericModel{T}() do
205+
return PolyJuMP.QCQP.Optimizer{T}(MOI.Utilities.MockOptimizer(inner))
206+
end
207+
PolyJuMP.@variable(model, 0 <= x <= 1)
208+
PolyJuMP.@expression(model, f, 0 + x)
209+
PolyJuMP.@expression(model, g, x^2)
210+
PolyJuMP.@constraint(model, f * g == 0)
211+
PolyJuMP.optimize!(model)
212+
F, S = ScalarQuadraticFunction{T}, EqualTo{T}
213+
@test MOI.get(inner, MOI.NumberOfConstraints{F,S}()) == 2
214+
@test MOI.get(inner, MOI.NumberOfVariables()) == 2
215+
return
216+
end
217+
202218
function runtests(x, y)
203219
for name in names(@__MODULE__; all = true)
204220
if startswith("$name", "test_")

0 commit comments

Comments
 (0)