jump-dev / jump-dev/DiffOpt.jl

Discussion: Should `MOI.set` perform complex operations?

Aperta
#358 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Julia
Stelle
145
Fork
21
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

As far as I understand `MOI.set` is primarily used for setting attributes.

However, https://github.com/jump-dev/DiffOpt.jl/pull/356 introduced:
`function MOI.set(model::Model, ::DiffOpt.ForwardDifferentiate)`
as a replacement to
`function forward_differentiate!(model)`

Historically, performing more complex operations has been left (mostly?) for special functions such as:
- `compute_conflict!`
- `write_to_file`
- `read_from_file`
- `submit`
- `transform`

A partial counter argument is:
- `Utilities.PenaltyRelaxation`, but it is a `modify` not even a `set`
I do think modify here makes sense.

Are there any other arguments to each side? any other precedent?

I would like to have the reasoning for that clarified.

What are de advantages and disadvantages?

Bonus:
As a follow-up, we should have good practices and standards documented to help developers consistently make decisions in these cases.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Start by reading pull request 356 and the existing uses of MOI.set, then compare them with compute_conflict!, write_to_file, read_from_file, submit, transform, and Utilities.PenaltyRelaxation. Clarify the advantages, disadvantages, and precedents for complex operations in set versus modify, and document agreed standards if the discussion reaches a decision.

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

Valutazione

Stack tecnologico
julia
Ambito
backend-api-design
Tipo di issue
Documentazione
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.