diff --git a/src/variable.jl b/src/variable.jl index 4164cb6..6bc9de4 100644 --- a/src/variable.jl +++ b/src/variable.jl @@ -1,10 +1,19 @@ export Poly -function JuMP.value(t::AbstractTerm{<:JuMP.AbstractJuMPScalar}) - JuMP.value(coefficient(t)) * monomial(t) +function JuMP.value( + t::AbstractTerm{<:JuMP.AbstractJuMPScalar}, + f::Function = JuMP.value, +) + return JuMP.value(MultivariatePolynomials.coefficient(t), f) * monomial(t) end -function JuMP.value(p::AbstractPolynomialLike{<:JuMP.AbstractJuMPScalar}) - polynomial(JuMP.value.(terms(p)), MultivariatePolynomials.SortedUniqState()) +function JuMP.value( + p::AbstractPolynomialLike{<:JuMP.AbstractJuMPScalar}, + f::Function = JuMP.value, +) + return polynomial( + JuMP.value.(terms(p), f), + MultivariatePolynomials.SortedUniqState(), + ) end abstract type AbstractPoly end diff --git a/test/variable.jl b/test/variable.jl index 3624ebe..016a40b 100644 --- a/test/variable.jl +++ b/test/variable.jl @@ -93,4 +93,5 @@ end JuMP.fix(α, 2) JuMP.fix(β, 3) @test_broken JuMP.value(p) == 2x*y + 3x^2 + @test JuMP.value(p, fix_value) == 2x*y + 3x^2 end