Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Differentiable Optimization API

Aberta
#2,969 2 comentários 1 reação 0 responsáveis Ver no GitHub

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

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?

  1. Attributes to pass input forward and reverse sensitivities.
    1. forward inputs sensitivities: are numbers associated with the coefficients of the problem or parameters
    2. reverse inputs sensitivities: are numbers associated with variables
  2. functions to perform the diff (analogous to optimize!)
  3. Attributes to query output forward and reverse sensitivities.
    1. forward outputs sensitivities: are numbers associated with variables
    2. 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:

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

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de jump-dev/MathOptInterface.jl

Todas as issues de jump-dev/MathOptInterface.jl

Issues semelhantes

Mais issues de Julia

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.