Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Speculative: MathOptInterface 2.0

Aperta
#2,180 1 commento 1 reazione 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
15/100
Tipo di issue
Refactoring
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
julia

Direzione di ricerca

Questo è più un tracker speculativo di pianificazione per MathOptInterface v2 che un'attività con ambito definito. Inizia leggendo le issue collegate rilevanti e i file indicati in src/Bridges, src/constraints.jl e src/Utilities; seleziona una proposta specifica con l'accordo dei maintainer prima di iniziare. Done non è definito finché una proposta non ha un ambito e criteri di accettazione concordati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

https://github.com/jump-dev/MathOptInterface.jl/blob/494933f3a1fc54a83a994aa662ad6eba93126b67/src/constraints.jl#L215-L222

[Minor] Rename Utilities.operate! to Utilities.operate!!

x-ref https://github.com/jump-dev/MathOptInterface.jl/pull/2207

[Minor] remove various deprecated methods

https://github.com/jump-dev/MathOptInterface.jl/blob/95036fb34e5db297fb8ba70033bc55fa3ba29298/src/Utilities/operate.jl#L1413-L1434

https://github.com/jump-dev/MathOptInterface.jl/blob/95036fb34e5db297fb8ba70033bc55fa3ba29298/src/Utilities/operate.jl#L1574-L1592

https://github.com/jump-dev/MathOptInterface.jl/blob/95036fb34e5db297fb8ba70033bc55fa3ba29298/src/Utilities/functions.jl#L2260-L2285

[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

Lingua principale
Julia
Stelle
506
Fork
103
Merge medio
1g 1h
PR unite (30g)
9

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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di jump-dev/MathOptInterface.jl

Tutte le issue di jump-dev/MathOptInterface.jl

Issue simili

Altre issue su Julia

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.