LinearAlgebra matrix types and expressions
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
Direzione di ricerca
Riproduci in Julia i casi segnalati di LowerTriangular e affine-expression, quindi ispeziona il percorso triangular.jl di LinearAlgebra menzionato insieme agli entry point aff_expr.jl, macros.jl e rewrite.jl di MutableArithmetics in JuMP. Il lavoro è completato quando queste operazioni su matrici ed espressioni non generano più l’errore di conversione segnalato da GenericQuadExpr a GenericAffExpr.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
As reported on Discourse, affine expressions don't play well with LinearAlgebra.LowerTriangular:
julia> using JuMP
julia> model = Model()
A JuMP Model
Feasibility problem with:
Variables: 0
ariableModel mode: AUTOMATIC
CachingOptimizer state: NO_OPTIMIZER
Solver name: No optimizer attached.
julia> @variable(model, x[1:3])
3-element Array{VariableRef,1}:
x[1]
x[2]
x[3]
julia> using LinearAlgebra
julia> A = LowerTriangular(rand(3, 3))
3×3 LowerTriangular{Float64,Array{Float64,2}}:
0.246249 ⋅ ⋅
0.925955 0.871257 ⋅
0.388344 0.724686 0.435545
julia> b = x .+ rand(3)
3-element Array{GenericAffExpr{Float64,VariableRef},1}:
x[1] + 0.41008732270098425
x[2] + 0.6152593235089165
x[3] + 0.7871105854964822
julia> c = rand(3)'
1×3 Adjoint{Float64,Array{Float64,1}}:
0.0817674 0.517406 0.660573
julia> A * b
ERROR: MethodError: Cannot `convert` an object of type GenericQuadExpr{Float64,VariableRef} to an object of type GenericAffExpr{Float64,VariableRef}
Closest candidates are:
convert(::Type{GenericAffExpr{T,V}}, ::Union{Number, UniformScaling}) where {T, V} at /Users/oscar/.julia/dev/JuMP/src/aff_expr.jl:314
convert(::Type{GenericAffExpr{T,V}}, ::V) where {T, V} at /Users/oscar/.julia/dev/JuMP/src/aff_expr.jl:311
convert(::Type{T}, ::GenericAffExpr{T,VarType} where VarType) where T at /Users/oscar/.julia/dev/JuMP/src/aff_expr.jl:318
...
Stacktrace:
[1] setindex! at ./array.jl:769 [inlined]
[2] lmul!(::LowerTriangular{GenericAffExpr{Float64,VariableRef},Array{GenericAffExpr{Float64,VariableRef},2}}, ::Array{GenericAffExpr{Float64,VariableRef},1}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/triangular.jl:760
[3] *(::LowerTriangular{Float64,Array{Float64,2}}, ::Array{GenericAffExpr{Float64,VariableRef},1}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/triangular.jl:1802
[4] top-level scope at none:0
julia> @expression(model, A * b)
3-element Array{GenericAffExpr{Float64,VariableRef},1}:
0.24624865480766212 x[1] + 0.10098345156879301
0.9259545359165902 x[1] + 0.8712570245873634 x[2] + 0.9157712241268796
0.3883444595770791 x[1] + 0.724685976949409 x[2] + 0.4355450311946607 x[3] + 0.9479470481617296
julia> @expression(model, (A * b))
3-element Array{GenericAffExpr{Float64,VariableRef},1}:
0.24624865480766212 x[1] + 0.10098345156879301
0.9259545359165902 x[1] + 0.8712570245873634 x[2] + 0.9157712241268796
0.3883444595770791 x[1] + 0.724685976949409 x[2] + 0.4355450311946607 x[3] + 0.9479470481617296
julia> @expression(model, (A * b) .* c)
ERROR: MethodError: Cannot `convert` an object of type GenericQuadExpr{Float64,VariableRef} to an object of type GenericAffExpr{Float64,VariableRef}
Closest candidates are:
convert(::Type{GenericAffExpr{T,V}}, ::Union{Number, UniformScaling}) where {T, V} at /Users/oscar/.julia/dev/JuMP/src/aff_expr.jl:314
convert(::Type{GenericAffExpr{T,V}}, ::V) where {T, V} at /Users/oscar/.julia/dev/JuMP/src/aff_expr.jl:311
convert(::Type{T}, ::GenericAffExpr{T,VarType} where VarType) where T at /Users/oscar/.julia/dev/JuMP/src/aff_expr.jl:318
...
Stacktrace:
[1] setindex! at ./array.jl:769 [inlined]
[2] lmul!(::LowerTriangular{GenericAffExpr{Float64,VariableRef},Array{GenericAffExpr{Float64,VariableRef},2}}, ::Array{GenericAffExpr{Float64,VariableRef},1}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/triangular.jl:760
[3] *(::LowerTriangular{Float64,Array{Float64,2}}, ::Array{GenericAffExpr{Float64,VariableRef},1}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/triangular.jl:1802
[4] top-level scope at /Users/oscar/.julia/packages/MutableArithmetics/hS4h3/src/rewrite.jl:224
[5] top-level scope at /Users/oscar/.julia/dev/JuMP/src/macros.jl:45
- Lingua principale
- TeX
- Stelle
- 55
- Fork
- 15
- Merge medio
- 17h 21m
- PR unite (30g)
- 8
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di jump-dev/MutableArithmetics.jl
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
jump-dev/MutableArithmetics.jl#353 · 4 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
jump-dev/MutableArithmetics.jl#293 · 8 commenti ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 42/100
jump-dev/MutableArithmetics.jl#253 · 7 commenti ·
Tutte le issue di jump-dev/MutableArithmetics.jl
Issue simili
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
melodic-software/claude-code-plugins#9619 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
-
fix(xiaomi): curated picker list still offers six ids that return 400 (plan-limited vs retired)Apertacause/upstream comp/cli P2 provider/other tool/file type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-agent#143900 ·
I maintainer di solito rispondono entro 1 giorno
-
venn: a name that starts with set-, union-, text- or style- followed by a letter is a parse errorAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
obsidianmd/pele#65 ·
I maintainer di solito rispondono entro 3 giorni
-
Packages: Check now says nothing, and a repository with no releases just stays "Not installed"Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
keyxmakerx/Chronicle#1700 ·
I maintainer di solito rispondono entro 1 giorno