Skip to content

Broadcasting mismatched expressions in constraint fails #158

@odow

Description

@odow

x-ref: https://discourse.julialang.org/t/jump-broadcasting-in-constraint-involving-expressions-throws-error/82044

julia> using JuMP

julia> model = JuMP.Model()
A JuMP Model
Feasibility problem with:
Variables: 0
Model mode: AUTOMATIC
CachingOptimizer state: NO_OPTIMIZER
Solver name: No optimizer attached.

julia> @expression(model, x, zeros(AffExpr, 1, 4))
1×4 Matrix{AffExpr}:
 0  0  0  0

julia> @expression(model, y, zeros(AffExpr, 2, 4))
2×4 Matrix{AffExpr}:
 0  0  0  0
 0  0  0  0

julia> @constraint(model, y .>= x)  # A: OK
2×4 Matrix{ConstraintRef{Model, MathOptInterface.ConstraintIndex{MathOptInterface.ScalarAffineFunction{Float64}, MathOptInterface.GreaterThan{Float64}}, ScalarShape}}:
 0  0.0  0  0.0  0  0.0  0  0.0
 0  0.0  0  0.0  0  0.0  0  0.0

julia> @constraint(model, x .<= y)
ERROR: DimensionMismatch("destination axes (Base.OneTo(1), Base.OneTo(4)) are not compatible with source axes (Base.OneTo(2), Base.OneTo(4))")
Stacktrace:
 [1] throwdm(axdest::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}}, axsrc::Tuple{Base.OneTo{Int64}, Base.OneTo{Int64}})
   @ Base.Broadcast ./broadcast.jl:1060
 [2] copyto!
   @ ./broadcast.jl:972 [inlined]
 [3] copyto!
   @ ./broadcast.jl:936 [inlined]
 [4] broadcast!(op::typeof(MutableArithmetics.sub_mul), A::Matrix{AffExpr}, args::Matrix{AffExpr})
   @ MutableArithmetics ~/.julia/packages/MutableArithmetics/VLWSd/src/broadcast.jl:117
 [5] broadcast_fallback!
   @ ~/.julia/packages/MutableArithmetics/VLWSd/src/broadcast.jl:173 [inlined]
 [6] broadcast!!(::typeof(MutableArithmetics.sub_mul), ::Matrix{AffExpr}, ::Matrix{AffExpr})
   @ MutableArithmetics ~/.julia/packages/MutableArithmetics/VLWSd/src/broadcast.jl:145
 [7] macro expansion
   @ ~/.julia/packages/MutableArithmetics/VLWSd/src/rewrite.jl:294 [inlined]
 [8] macro expansion
   @ ~/.julia/dev/JuMP/src/macros.jl:823 [inlined]
 [9] top-level scope
   @ REPL[6]:1

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions