Acesse todas as variáveis que ocorrem em uma restrição pyomo

Estou trabalhando em um algoritmo em python que precisa modificar modelos pyomo concretos (números inteiros mistos não lineares). Em particular, preciso saber quais variáveis estão presentes em umrestrição algébrica geral. Por exemplo. por uma restrição

model.con1 = Constraint(expr=exp(model.x_1) + 2*model.x_2 <= 2)

Eu gostaria de fazer uma consulta (comomodel.con1.variables ) que retorna (uma lista) as variáveis ([model.x_1,model.x_2])

Noesta documentação Acho que paralinear restrições, o parâmetrovariables exatamente serve ao meu propósito. No entanto, os modelos com os quais estou trabalhando também conterão restrições algébricas gerais.

Capítulo 14 deste livro fornece vários detalhes para o desenvolvimento de algoritmos de alto nível usando pyomo, mas não encontrei uma resposta para minha pergunta lá. A única abordagem muito desajeitada em que consigo pensar é usar o método to_string () da expressão (retornandoexp( x_1 ) + x_2 <= 1.0 no nosso exemplo) e, em seguida, pesquise nessa sequência a aparência de todas as variáveis. Tenho certeza de que existe uma maneira muito melhor de usar o pyomo para acessar as variáveis que ocorrem em uma restrição.

Observe que uma pergunta semelhante, mas menos detalhada e sem resposta, já foi feita.aqui.

questionAnswers(2)

yourAnswerToTheQuestion