@@ -72,8 +72,6 @@ function MOI.Bridges.added_constraint_types(::Type{<:SetMapBridge})
7272 return Tuple{Type,Type}[]
7373end
7474
75- # Get a primal function, going from bridged-space -> user-space
76- # => use inverse_map_function
7775function MOI. get (
7876 model:: MOI.ModelLike ,
7977 attr:: Union {
@@ -83,27 +81,28 @@ function MOI.get(
8381 },
8482 bridge:: SetMapBridge ,
8583)
86- f = MOI. get (model, attr, bridge. constraint)
87- return MOI. Bridges. inverse_map_function (bridge, f)
84+ value = MOI. get (model, attr, bridge. constraint)
85+ if value === nothing
86+ return
87+ end
88+ return MOI. Bridges. inverse_map_function (bridge, value)
8889end
8990
90- # Set a primal function, going from user-space -> bridged-space
91- # => use map_function
9291function MOI. set (
9392 model:: MOI.ModelLike ,
9493 attr:: MOI.ConstraintPrimalStart ,
9594 bridge:: SetMapBridge ,
9695 value,
9796)
97+ if value === nothing
98+ MOI. set (model, attr, bridge. constraint, nothing )
99+ return
100+ end
98101 bridged_value = MOI. Bridges. map_function (bridge, value)
99102 MOI. set (model, attr, bridge. constraint, bridged_value)
100103 return
101104end
102105
103- # Get a primal set, going from bridged-space -> user-space
104- # => well we should use inverse_map_set, but for some reason, the convention
105- # is reversed in Variable.SetMapBridge and Constraint.SetMapBridge
106- # => use map_set instead
107106function MOI. get (
108107 model:: MOI.ModelLike ,
109108 attr:: MOI.ConstraintSet ,
@@ -113,40 +112,39 @@ function MOI.get(
113112 return MOI. Bridges. map_set (bridge, set)
114113end
115114
116- # Set a primal set, going from user-space -> bridged-space
117- # => well we should use map_set, but for some reason, the convention is
118- # reversed in Variable.SetMapBridge and Constraint.SetMapBridge
119- # => use inverse_map_set instead
120115function MOI. set (
121116 model:: MOI.ModelLike ,
122117 attr:: MOI.ConstraintSet ,
123118 bridge:: SetMapBridge{T,S1} ,
124119 set:: S1 ,
125120) where {T,S1}
126- mapped = MOI. Bridges. inverse_map_set (typeof ( bridge) , set)
121+ mapped = MOI. Bridges. inverse_map_set (bridge, set)
127122 MOI. set (model, attr, bridge. constraint, mapped)
128123 return
129124end
130125
131- # Get a dual function, going from bridged-space -> user-space
132- # => use inverse_adjoint_map_function
133126function MOI. get (
134127 model:: MOI.ModelLike ,
135128 attr:: Union{MOI.ConstraintDual,MOI.ConstraintDualStart} ,
136129 bridge:: SetMapBridge ,
137130)
138131 value = MOI. get (model, attr, bridge. constraint)
139- return MOI. Bridges. inverse_adjoint_map_function (typeof (bridge), value)
132+ if value === nothing
133+ return
134+ end
135+ return MOI. Bridges. inverse_adjoint_map_function (bridge, value)
140136end
141137
142- # Set a dual function, going from user-space -> bridged-space
143- # => use adjoint_map_function
144138function MOI. set (
145139 model:: MOI.ModelLike ,
146140 attr:: MOI.ConstraintDualStart ,
147141 bridge:: SetMapBridge ,
148142 value,
149143)
144+ if value === nothing
145+ MOI. set (model, attr, bridge. constraint, nothing )
146+ return
147+ end
150148 bridged_value = MOI. Bridges. adjoint_map_function (bridge, value)
151149 MOI. set (model, attr, bridge. constraint, bridged_value)
152150 return
@@ -221,6 +219,9 @@ function MOI.get(
221219 bridge:: SetMapBridge ,
222220)
223221 value = MOI. get (model, attr, bridge. variable)
222+ if value === nothing
223+ return
224+ end
224225 return MOI. Bridges. map_function (bridge, value)
225226end
226227
@@ -230,6 +231,10 @@ function MOI.set(
230231 bridge:: SetMapBridge ,
231232 value,
232233)
234+ if value === nothing
235+ MOI. set (model, attr, bridge. variable, nothing )
236+ return
237+ end
233238 bridged_value = MOI. Bridges. inverse_map_function (bridge, value)
234239 MOI. set (model, attr, bridge. variable, bridged_value)
235240 return
@@ -287,7 +292,7 @@ function MOI.get(
287292)
288293 value = MOI. get (model, attr, bridge. variables)
289294 if any (isnothing, value)
290- return nothing
295+ return
291296 end
292297 return MOI. Bridges. map_function (bridge, value, i)
293298end
@@ -299,6 +304,10 @@ function MOI.set(
299304 value,
300305 i:: MOI.Bridges.IndexInVector ,
301306)
307+ if value === nothing
308+ MOI. set (model, attr, bridge. variables[i. value], nothing )
309+ return
310+ end
302311 bridged_value = MOI. Bridges. inverse_map_function (bridge, value)
303312 MOI. set (model, attr, bridge. variables[i. value], bridged_value)
304313 return
0 commit comments