By “variable with Rational type”, do you mean “variable x
that should only take rational values” or “I want to pass data to the solver in Rational
type”?
For the former, it is neither supported by JuMP nor by solvers in general.
The only exception are a handful of LP solvers, e.g., SoPlex (also see here) that can return exact solutions (using Rational arithmetic) to linear programming and quadratic programming problems. That functionality, however, is not available from Julia.
As @odow already hinted at, the only way to effectively enforce that a variable x
takes rational values is through the use of integer variables. Either declare x
as integer and divide it by a constant, or introduce two integer variables p, q
and add the (non-linear and non-convex) constraint x = p / q
.
For the latter, MathOptInterface.jl and Convex.jl both support arbitrary data types when building a model.