我目前正在 Python GEKKO 中实施 MINLP 优化问题,以确定三代能源系统的最佳运行策略。由于我将不同代表性日子的所有时期的能源需求视为输入数据,因此基本上我所有的决策变量、中间体等都是二维数组。我怀疑 2D 中间体的声明是我的问题。现在我使用列表理解来声明 2D 中间体,但似乎 python 不能使用这些中间体。此外,误差这个稳态 IMODE 只允许标量值。发生。
每当我像这样使用 GEKKO m.Array 函数时:
e_GT = m.Array(m.Intermediate(E_GT[z][p]/E_max_GT) for z in range(Z) for p in range(P), (Z,P))
它说,GEKKO 对象 m.Intermediate 不能被调用。
如果有人能给我提示,我将不胜感激。
这是完整的代码:
"""
Created on Fri Nov 22 10:18:33 2019
@author: julia
"""
# __Get GEKKO & numpy___
from gekko import GEKKO
import numpy as np
# ___Initialize model___
m = GEKKO()
# ___Global options_____
m.options.SOLVER = 1 # APOPT is MINLP Solver
# …Run Code Online (Sandbox Code Playgroud)