Существует ожидающая доработка системы выражений, которая может привести к тому, что такое использование перестанет вести себя как положено.

отаю над алгоритмом в Python, который должен изменить конкретные (смешанно-целочисленные нелинейные) Pyomo модели. В частности, мне нужно знать, какие переменные присутствуют вобщее алгебраическое ограничение, Например. для ограничения

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

Я хотел бы сделать запрос (например,model.con1.variables ) который возвращает (список) переменных ([model.x_1,model.x_2]).

Вэта документация Я нахожу это длялинейный ограничения, параметрvariables точно служит моей цели. Тем не менее, модели, с которыми я работаю, также будут содержать общие алгебраические ограничения.

Глава 14 этой книги предоставляет несколько деталей для разработки алгоритмов высокого уровня с использованием pyomo, но я не нашел там ответа на свой вопрос. Единственный очень неуклюжий подход, о котором я могу подумать, это использовать метод выражения to_string () (возвращающийexp( x_1 ) + x_2 <= 1.0 в нашем примере), а затем искать эту строку для появления всех переменных. Я уверен, что есть гораздо лучший способ использовать pyomo для доступа к переменным, встречающимся в ограничении.

Обратите внимание, что подобный, но менее подробный и без ответа вопрос уже задавалсяВот.

Ответы на вопрос(2)

Ваш ответ на вопрос