jump-dev / jump-dev/MathOptInterface.jl

Add Batched{S} set

Abierto
#2,904 15 comentarios 7 reacciones 0 asignados Ver en GitHub
Type: Set Request
Lenguaje dominante
Julia
Estrellas
504
Forks
101
Merge medio
6 h 26 min
PR fusionados (30 d)
22

Descripción

@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:
```julia
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:
```Julia
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
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Start with the MOI.set ConstraintSet and ConstraintIndex entry points described in the issue, then review how Parameter values and result_count are represented. The work is done when the project has agreed on and implemented a batched-set approach with consistent batch lengths and the stated result behavior.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
julia
Área
backend-api-design
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Tranquilo
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.