diff --git a/src/Bridges/Objective/bridges/conversion.jl b/src/Bridges/Objective/bridges/conversion.jl index c0e573f551..92deb99bf9 100644 --- a/src/Bridges/Objective/bridges/conversion.jl +++ b/src/Bridges/Objective/bridges/conversion.jl @@ -48,6 +48,12 @@ function supports_objective_function( return isfinite(MOI.Bridges.Constraint.conversion_cost(F, G)) end +function MOI.Bridges.bridging_cost( + ::Type{FunctionConversionBridge{T,F,G}}, +) where {T,F,G} + return MOI.Bridges.Constraint.conversion_cost(F, G) +end + function MOI.Bridges.added_constrained_variable_types( ::Type{<:FunctionConversionBridge}, ) diff --git a/test/Bridges/lazy_bridge_optimizer.jl b/test/Bridges/lazy_bridge_optimizer.jl index 8fa70aa3e0..a81d45b159 100644 --- a/test/Bridges/lazy_bridge_optimizer.jl +++ b/test/Bridges/lazy_bridge_optimizer.jl @@ -2136,6 +2136,35 @@ function test_ToScalarQuadraticBridge_variable_bounds() return end +MOI.Utilities.@model( + ModelQuadObj, + (), + (), + (MOI.Nonnegatives, MOI.Zeros), + (), + (), + (), + (MOI.VectorOfVariables,), + (MOI.VectorAffineFunction,), +) + +function MOI.supports( + ::ModelQuadObj{T}, + ::MOI.ObjectiveFunction{MOI.ScalarAffineFunction{T}}, +) where {T} + return false +end + +function test_objective_conversion_cost(T = Float64) + model = ModelQuadObj{T}() + bridged = MOI.Bridges.full_bridge_optimizer(model, T) + x = MOI.add_variable(bridged) + MOI.set(bridged, MOI.ObjectiveSense(), MOI.MIN_SENSE) + MOI.set(bridged, MOI.ObjectiveFunction{typeof(x)}(), one(T) * x) + @test MOI.get(model, MOI.ObjectiveFunctionType()) == MOI.VariableIndex + return +end + end # module TestBridgesLazyBridgeOptimizer.runtests()