Skip to content

Commit 63336f9

Browse files
authored
Do not set variable name when unsupported by solver in _moi_add_constrained_variables (#3995)
1 parent 53f8a0b commit 63336f9

File tree

2 files changed

+31
-4
lines changed

2 files changed

+31
-4
lines changed

src/variables.jl

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2223,7 +2223,7 @@ function _moi_add_variable(
22232223
end
22242224
if !isempty(name)
22252225
if MOI.supports(moi_backend, MOI.VariableName(), MOI.VariableIndex)
2226-
set_name(x, name)
2226+
MOI.set(moi_backend, MOI.VariableName(), index, name)
22272227
end
22282228
end
22292229
return x
@@ -2346,7 +2346,8 @@ function _moi_add_constrained_variable(
23462346
) where {T}
23472347
var_index, con_index = MOI.add_constrained_variable(moi_backend, set)
23482348
_moi_constrain_variable(moi_backend, var_index, scalar_variable.info, T)
2349-
if !isempty(name)
2349+
supports = MOI.supports(moi_backend, MOI.VariableName(), MOI.VariableIndex)
2350+
if !isempty(name) && supports
23502351
MOI.set(moi_backend, MOI.VariableName(), var_index, name)
23512352
end
23522353
return var_index, con_index
@@ -2433,7 +2434,8 @@ function _moi_add_constrained_variables(
24332434
for (index, variable) in zip(var_indices, scalar_variables)
24342435
_moi_constrain_variable(moi_backend, index, variable.info, T)
24352436
end
2436-
if names !== nothing
2437+
supports = MOI.supports(moi_backend, MOI.VariableName(), MOI.VariableIndex)
2438+
if names !== nothing && supports
24372439
for (var_index, name) in zip(var_indices, names)
24382440
if !isempty(name)
24392441
MOI.set(moi_backend, MOI.VariableName(), var_index, name)
@@ -2454,7 +2456,8 @@ function _moi_add_constrained_variables(
24542456
for (index, variable) in zip(var_indices, scalar_variables)
24552457
_moi_constrain_variable(moi_backend, index, variable.info, T)
24562458
end
2457-
if names !== nothing
2459+
supports = MOI.supports(moi_backend, MOI.VariableName(), MOI.VariableIndex)
2460+
if names !== nothing && supports
24582461
for (var_index, name) in zip(var_indices, names)
24592462
if !isempty(name)
24602463
MOI.set(moi_backend, MOI.VariableName(), var_index, name)

test/test_variable.jl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1778,4 +1778,28 @@ function test_variable_in_set_HermitianPSDCone()
17781778
return
17791779
end
17801780

1781+
function test_direct_model_variable_in_set_Parameter()
1782+
inner = MOIU.MockOptimizer(MOIU.Model{Float64}(); supports_names = false)
1783+
model = direct_model(inner)
1784+
@variable(model, x in Parameter(0.0))
1785+
@test is_parameter(x)
1786+
return
1787+
end
1788+
1789+
function test_direct_model_variable_in_set_SOS1()
1790+
inner = MOIU.MockOptimizer(MOIU.Model{Float64}(); supports_names = false)
1791+
model = direct_model(inner)
1792+
@variable(model, x[1:2] in SOS1([1.0, 2.0]))
1793+
@test num_variables(model) == 2
1794+
return
1795+
end
1796+
1797+
function test_direct_model_variable_in_set_Reals()
1798+
inner = MOIU.MockOptimizer(MOIU.Model{Float64}(); supports_names = false)
1799+
model = direct_model(inner)
1800+
@variable(model, x[1:2] in MOI.Reals(2))
1801+
@test num_variables(model) == 2
1802+
return
1803+
end
1804+
17811805
end # module TestVariable

0 commit comments

Comments
 (0)