我的问题与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来向我展示不可行的约束,这将非常有帮助。感谢您抽出宝贵的时间阅读我的问题!