How to define a lower triangular variable WITHOUT the main diagonal elements

There’s no specialized support, but you could do:

julia> using JuMP

julia> import LinearAlgebra

julia> model = Model();

julia> @variable(model, x[i=1:3, j=(i+1):3])
JuMP.Containers.SparseAxisArray{VariableRef, 2, Tuple{Int64, Int64}} with 3 entries:
  [1, 2]  =  x[1,2]
  [1, 3]  =  x[1,3]
  [2, 3]  =  x[2,3]

julia> X = LinearAlgebra.LowerTriangular(
           [i < j ? x[i, j] : 0 for j in 1:3, i in 1:3]
       )
3×3 LinearAlgebra.LowerTriangular{Any, Matrix{Any}}:
 0         ⋅        ⋅
  x[1,2]  0         ⋅
  x[1,3]   x[2,3]  0
1 Like