Add Batched{S} set
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Feature
- Klarheit
- Muss geklärt werden
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- julia
- Bereich
- backend-api-design
Rechercherichtung
Beginnen Sie mit den im Issue beschriebenen Einstiegspunkten MOI.set, ConstraintSet und ConstraintIndex und überprüfen Sie anschließend, wie Parameter-Werte und result_count dargestellt werden. Die Arbeit ist abgeschlossen, wenn das Projekt sich auf einen Batched-Set-Ansatz mit konsistenten Batch-Längen und dem angegebenen Ergebnisverhalten geeinigt und ihn implementiert hat.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
@amontoison wants this. There are also some folks in the GPU/cvxpy domain sniffing around this (https://github.com/cvxpy/cvxpy/issues/2485).
We have almost everything we need. There's just a choice between two approaches.
First, we could set the value of Parameter to a vector of sets:
MOI.set(
::Optimizer,
::MOI.ConstraintSet,
::MOI.ConstraintIndex{MOI.VariableIndex,MOI.Parameter{T}},
::Vector{MOI.Parameter{T}},
)
But this might be hard to get through the various MOI layers.
The easier alternative is to add a new Batched{S<:MOI.AbstractSet} set.
If there are multiple batched sets, they all must have the same length. Then the results are returned via result_count and we don't support returning multiple solutions within a batch.
Then a solver could choose to natively support batched parameters. And we could have a fallback optimizer like:
using JuMP
import Ipopt
import MathOptBatchOptimizer as MOBO
model = Model(() -> MOBO.Optimizer(Ipopt.Optimizer))
@variable(model, x)
@variable(model, p in Parameter(1))
set_parameter_value(p, 1:100) # <-- set as a vector, not a scalar
@objective(model, Min, x)
@constraint(model, x >= p)
optimize!(model)
@assert result_count(model) == 100
- Vorherrschende Sprache
- Julia
- Sterne
- 506
- Forks
- 103
- Ø Merge
- 1 T. 10 Min.
- Gemergte PRs (30 T.)
- 12
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus jump-dev/MathOptInterface.jl
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsEvtl. vergeben @odow hat das vor 6 Tagen übernommen. Offen
jump-dev/MathOptInterface.jl#3106 · 2 Kommentare · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 1 Tag
-
Precision loss in Hessian computationEvtl. vergeben @blegat hat das vor 7 Tagen übernommen. Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
jump-dev/MathOptInterface.jl#3104 · 11 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Layer instantiatorOffen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
jump-dev/MathOptInterface.jl#2986 · 3 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
jump-dev/MathOptInterface.jl#2969 · 2 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
Performance problem with deeply nested nonlinear expressionsEvtl. vergeben @blegat hat das vor 458 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
jump-dev/MathOptInterface.jl#3065 · 11 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in jump-dev/MathOptInterface.jl
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 83/100
JuliaMath/Polynomials.jl#647 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
OpenSourceAWE/SymbolicAWEModels.jl#431 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
-
`@fastmath` reductions are 2–5× slower: no `neutral_element` for `Base.FastMath.max_fast` and co.Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
JuliaGPU/GPUArrays.jl#833 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 89/100
Maintainer antworten meist innerhalb von 4 Tagen