Rewriting JuMP code in MathOptInterface

Say I wanted to add a variable x which represents an m x n matrix whose elements are constrianed.
In JuMP, the code would simply be:

@variable(model, 0 <= x[i=1:m, j=1:n] <= 1)

However, I am not sure how to translate this into MathOptInterface, which contains features that I need that were not carried into JuMP.

x = reshape(MOI.add_variables(model, m * n), m, n)
cx = MOI.add_constraint(model, MOI.SingleVariable.(x), MOI.Interval(0.0, 1.0))

Or

x = [MOI.add_constrained_variables(model, MOI.Interval(0.0, 1.0))(1) for i in 1:m, j in 1:n]
1 Like

Which features of MOI were not carried into JuMP?

1 Like

I was working off of a suggestion from my previous question Rational{Int64} variables in JuMP? to use the CDDLib.Optimizer, which according to JuMP Documentation, requires directly implementing from MOI.

I may have misread the instructions though and could use some help clearing things up regarding whether rational fraction arithmetic from CDDLib can be used in JuMP.

No, you will need to use MOI directly.

From the tests, it looks like you need to use:

model = CDDLib.Optimizer{Rational{BigInt}}()

And make sure all your coefficients are also Rational{BigInt}s.

1 Like

Thanks for the help!