Моя проблема связана с использованием программного обеспечения PyPSA. Я хочу оптимизировать простую задачу выделения единиц с помощью PyPSA. Оптимизация невозможна, и я пытаюсь выяснить, какие уравнения или переменные границы вызывают невозможность.
Для этого я пытаюсь вызвать функции из модуля pyomo.util.infeasible. Но я не уверен, где / как они должны называться.
В частности, в моем основном коде я написал:
# basic imports and declarations
import pypsa
...
import logging
logging.basicConfig(level=logging.ERROR)
pypsa.opf.logger.setLevel(logging.INFO)
from pyomo.util.infeasible import log_infeasible_constraints
# define network
...
# run optimization
network.lopf(network.snapshots)
log_infeasible_constraints(network)
, но это не возвращает никакой информации журнала о невозможности выполнения.
Далее я подумал, что, возможно, мне следует вызвать функции неосуществимости в файле opf.py, в котором построена и решена проблема оптимизации, поэтому я добавил сверху:
# my addition on the opf.py file
from pyomo.util.infeasible import log_infeasible_constraints
..
и внутри функции network_lopf (..), в конце:
log_infeasible_constraints(network)
но опять ничего.
Я считаю, что моя неспособность решить эту проблему заключается в том, что я плохо понимаю, как мой основной код, pypsa и pyomo взаимодействуют. Было бы очень полезно, если бы кто-то мог указать, что неправильно в моем подходе, и где / как я должен «попросить» pyPSA показать мне невыполнимые ограничения. Спасибо, что нашли время, чтобы прочитать мой вопрос!