Differentiable Optimization API
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- julia
- Domínio
- backend-api-design
Direção de pesquisa
Comece pela discussão inicial em DiffOpt.jl PR #344 e compare as implementações referenciadas de DiffOpt lpbasis, MadDiff e Moreau. Revise como elas lidam com atributos de sensibilidade, funções de diferenciação, resets, parâmetros, funções de coeficientes, getters lazy e helpers no nível do JuMP; considera-se concluído quando houver uma API mínima acordada, pois nenhum arquivo-alvo ou teste é nomeado.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What is the minimal API for differentiable optimization?
- Attributes to pass input forward and reverse sensitivities.
- forward inputs sensitivities: are numbers associated with the coefficients of the problem or parameters
- reverse inputs sensitivities: are numbers associated with variables
- functions to perform the diff (analogous to optimize!)
- Attributes to query output forward and reverse sensitivities.
- forward outputs sensitivities: are numbers associated with variables
- reverse outputs sensitivities: are numbers associated with the coefficients of the problem or parameters
Important aspects:
a. A function to reset all input sensitivities is extremely important in practice, as resetting manually is very inefficient.
b. Parameters are extremely useful here. Having used DiffOpt and talking to users it is clear that it is very error-prone to touch coefficients directly (also see: https://arxiv.org/abs/2510.25986). POI is almost essential here.
c. Passing coefficients individually is suboptimal because it does not play well with bridges. Passing coefficient sensitivities as functions is key to making it work smoothly. For getters, Lazy operations are importants as we are usually no interested in absolutely every single coefficient
d. In practice, helper methods for objective sensitivity are a lifesaver.
e. Having a JuMP level API is much more ergonomic than having MOI.set and get all around.
We already have use case for existing solvers:
- https://github.com/jump-dev/DiffOpt.jl/tree/jg/lpbasis (HiGHS, Gurobi, Xpress)
- MadNLP (https://github.com/MadNLP/MadDiff.jl/tree/main/ext/MathOptInterfaceExt)
There is a new solver that proposes to do it as well: - Moreau (https://github.com/jump-dev/DiffOpt.jl/pull/344)
Additional points:
- In DiffOpt, we did not put much effort into sensitivities associated with duals. Attribute-wise, there is nothing special here, but we never have a concrete use case, so we did not venture into it.
Initial discussion in: https://github.com/jump-dev/DiffOpt.jl/pull/344
- Linguagem predominante
- Julia
- Estrelas
- 506
- Forks
- 103
- Merge médio
- 1d 10min
- PRs com merge (30d)
- 12
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de jump-dev/MathOptInterface.jl
-
[Bridges] MultirowChange in set_map.jl drops zero coefficientsTalvez já em andamento @odow assumiu há 6 dias. Aberta
jump-dev/MathOptInterface.jl#3106 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
Precision loss in Hessian computationTalvez já em andamento @blegat assumiu há 7 dias. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 15/100
jump-dev/MathOptInterface.jl#3104 · 11 comentários ·
Mantenedores costumam responder em até 1 dia
-
Layer instantiatorAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
jump-dev/MathOptInterface.jl#2986 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Add Batched{S} setAbertaType: Set Request
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
jump-dev/MathOptInterface.jl#2904 · 15 comentários · 7 reações ·
Mantenedores costumam responder em até 1 dia
-
Performance problem with deeply nested nonlinear expressionsTalvez já em andamento @blegat assumiu há 458 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
jump-dev/MathOptInterface.jl#3065 · 11 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de jump-dev/MathOptInterface.jl
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 83/100
JuliaMath/Polynomials.jl#647 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
OpenSourceAWE/SymbolicAWEModels.jl#431 ·
Mantenedores costumam responder em até 1 dia
-
Make PDAQP an optional extraAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
JuliaArrays/StaticArrays.jl#1365 ·
-
`@fastmath` reductions are 2–5× slower: no `neutral_element` for `Base.FastMath.max_fast` and co.Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
JuliaGPU/GPUArrays.jl#833 ·
Mantenedores costumam responder em até 1 dia