Speculative: MathOptInterface 2.0
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Refactorización
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- julia
- Área
- backend-api-design
Línea de trabajo
Esto es más un rastreador especulativo de planificación de MathOptInterface v2 que una tarea con un alcance definido. Empieza leyendo las issues enlazadas relevantes y los archivos mencionados en src/Bridges, src/constraints.jl y src/Utilities; selecciona una propuesta concreta con el acuerdo de los maintainers antes de trabajar. Done no está definido hasta que una propuesta tenga un alcance y criterios de aceptación acordados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The purpose of this issue is to track things that we could consider changing if we release MathOptInterface v2.0. To be clear for readers, we currently have no plans to release MOI v2. This issue is just to make a note of things so we don't forget them.
Even if we do release MOI v2, we might not implement every item on this list. They're just up for discussion at some point in the process.
[Major] Make all variables belong to a set
We currently have add_variable and add_constrained_variable, and it's complicated to work out how to add a variable when copying to a new solver. Every variable should have a domain, defaulting to x in Reals(1), to distinguish constrained variables from variable-in-set constraints.
This should also help https://github.com/jump-dev/MathOptInterface.jl/issues/1993, because a solver might support an attribute for variable-in-set but not constrained-variable (or vice versa).
It would also help https://github.com/jump-dev/MathOptInterface.jl/issues/1402 because we'd know the set of each variable when writing a CBF file.
[Major] Remove the 0.5 in QuadraticFunction
The 0.5 factor in ScalarQuadraticFunction and VectorQuadraticFunction is a pain. It makes manually constructing functions error-prone, and writing interfaces is a guess/check of do I need a 2 or a 0.5 factor in front of the diagonals. If Vector{ScalarQuadraticTerm} was literally just a list of terms and not a sparse representation of Q, then we could shift the complexity into the solvers who would know whether they needed the factor.
Examples of bugs because of this: https://github.com/jump-dev/MathOptInterface.jl/pull/2182
[Major] reconsider function structure
x-ref https://github.com/jump-dev/MathOptInterface.jl/issues/863
[Major] reconsider vector funnctions
As discussed on today's (2023-06-15) nonlinear call, why not just make
struct VectorFunction{F<:AbstractScalarFunction} <: AbstractVectorFunction
rows::Vector{F}
end
The only special case are VectorAffineFunction and VectorQuadraticFunction, and their structure doesn't add much at present, besides complexity.
[Major] make all indices unique and non-decreasing
x-ref https://github.com/jump-dev/MathOptInterface.jl/issues/2236
Currently different constraint types are allowed to use same index values, which means we don't know the order in which constraints were added. Having a unique non-decreasing index would allow us to copy constraints by creation order , or by groups of similar constraints.
[Minor] Remove NLPBlock
We should entirely remove NLPBlock and use ScalarNonlinearFunction instead.
[Minor] Restrict supports for bridges
Bridges are too permissive: https://github.com/jump-dev/MathOptInterface.jl/pull/2179#discussion_r1209561760.
For example, VectorizeBridge supports any scalar function:
https://github.com/jump-dev/MathOptInterface.jl/blob/a189a892cabb64f9dfb6e890e333ee73337b3338/src/Bridges/Constraint/bridges/vectorize.jl#L59-L65
but this can't be true unless each scalar function has an equivalent vector function. Currently, new scalar functions will trigger a method error for this operate(vcat, ...):
https://github.com/jump-dev/MathOptInterface.jl/blob/a189a892cabb64f9dfb6e890e333ee73337b3338/src/Bridges/Constraint/bridges/vectorize.jl#L82-L83
[Minor] Remove this method
[Minor] Rename Utilities.operate! to Utilities.operate!!
x-ref https://github.com/jump-dev/MathOptInterface.jl/pull/2207
[Minor] remove various deprecated methods
[Minor] Change substitute_variables
https://github.com/jump-dev/MathOptInterface.jl/pull/2250
[Minor] Fix default values of attributes
get for attributes like TimeLimitSec could return the solver's default if unset. The nothing business is confusing.
[Minor] Fix test naming
Fix inconsistent naming of tests like _infeasible_ or _INFEASIBLE_\
[Minor] don't skip unsupported attributes
See https://github.com/jump-dev/MathOptInterface.jl/issues/3032
- Lenguaje dominante
- Julia
- Estrellas
- 506
- Forks
- 103
- Merge medio
- 1 d 10 min
- PR fusionados (30 d)
- 12
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de jump-dev/MathOptInterface.jl
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsPosiblemente ocupada @odow la tomó hace 6 días. Abierto
jump-dev/MathOptInterface.jl#3106 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Precision loss in Hessian computationPosiblemente ocupada @blegat la tomó hace 7 días. Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
jump-dev/MathOptInterface.jl#3104 · 11 comentarios ·
Los mantenedores suelen responder en 1 día
-
Layer instantiatorAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
jump-dev/MathOptInterface.jl#2986 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Differentiable Optimization APIAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
jump-dev/MathOptInterface.jl#2969 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Add Batched{S} setAbiertoType: Set Request
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
jump-dev/MathOptInterface.jl#2904 · 15 comentarios · 7 reacciones ·
Los mantenedores suelen responder en 1 día
Todos los issues de jump-dev/MathOptInterface.jl
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 83/100
JuliaMath/Polynomials.jl#647 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
OpenSourceAWE/SymbolicAWEModels.jl#431 ·
Los mantenedores suelen responder en 1 día
-
Make PDAQP an optional extraAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
-
`@fastmath` reductions are 2–5× slower: no `neutral_element` for `Base.FastMath.max_fast` and co.Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
JuliaGPU/GPUArrays.jl#833 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 89/100
Los mantenedores suelen responder en 4 días