壁虎 "Memory allocation failed"
GEKKO "Memory allocation failed"
我正在尝试使用 GEKKO 在本地解决相当大的优化问题(使用 remote=False
)。
当运行编译代码时,出现错误:
Error: At line 463 of file custom.f90
Traceback: not available, compile with -ftrace=frame or -ftrace=full
Operating system error: Not enough memory resources are available to process this command.
Memory allocation failed
所以这暗示操作系统不允许 GEKKO 使用足够的内存。
不过,我使用的是 32GB RAM 的机器,有将近 25GB 的可用空间,而模型可能甚至不需要 10GB。
我试过使用 m.options.MAX_MEMORY = 10
,但这似乎并不重要。
Any thoughts on how to allow it to allocate more memory?
下面是触发此错误的一些(简化的)代码:
from gekko import GEKKO
quantiles = [(x+1)*.01 for x in range(300)]
#Initialize Model
m = GEKKO(remote=False)
#Set global options
m.options.IMODE = 3 #steady state optimization
m.options.SOLVER=3
m.options.MAX_ITER=100000
m.options.MAX_MEMORY = 10
m.options.REDUCE=10
#initialize variables
Est_array = m.Array(m.Var,(2, 16),value=1,lb=0,ub=48)
P_ij_t = m.Array(m.Var,(4, 16, 300), lb=0, ub=1)
Exp_ij_t = m.Array(m.Var,(4, 16, 300),value=1,lb=-36,ub=36)
C_t = m.Array(m.Var,300,lb=0,ub=5)
#Equations
for h in range(16):
for q in range(300):
m.Equation(m.sum([P_ij_t[i,h,q] for i in range(3)]) == 1)
for (q,t) in enumerate(quantiles):
m.Equation(C_t[q] == ( m.sum([P_ij_t[i+2,h,q]*(Est_array[i,h]-t)**2 for i in range(2) for h in range(16)]) + \
m.sum([P_ij_t[i,h,q]*(Est_array[1-i,15-h]-t)**2 for i in range(2) for h in range(16)])
)
)
#Objective
m.Minimize(C_t[0])
#Solve simulation
#m.open_folder()
m.solve()
#Results
print('C = ' + str(C_t[0].value[0]))
(所有 m.options.*
参数都是我试图让求解器达到 运行 的东西,但 none 似乎有助于解决内存分配问题。
Windows 二进制文件是 32 位,而 Linux、MacOS 和 ARM Linux 是 64 位可执行文件 remote=False
with Gekko v1.0.2
.使用 remote=True
,它在具有 64 GB RAM 并使用 64 位可执行文件的 Linux 服务器上运行。由于 32 位可执行文件,运行 成为内存限制问题,Windows 二进制文件高达 4 GB RAM。 64 位可执行文件的容量为 160 亿 GB(无限制)。 64 位 Windows 本地可执行文件是未来版本的计划开发。 Linux VM 或 APM Linux server(例如主机 IP 10.0.0.10
)是那些需要使用 Windows 本地 gekko 客户端在本地网络上解决大型问题的人的选择。
m = GEKKO(remote=True, server='https://10.0.0.10')
我正在尝试使用 GEKKO 在本地解决相当大的优化问题(使用 remote=False
)。
当运行编译代码时,出现错误:
Error: At line 463 of file custom.f90
Traceback: not available, compile with -ftrace=frame or -ftrace=full
Operating system error: Not enough memory resources are available to process this command.
Memory allocation failed
所以这暗示操作系统不允许 GEKKO 使用足够的内存。
不过,我使用的是 32GB RAM 的机器,有将近 25GB 的可用空间,而模型可能甚至不需要 10GB。
我试过使用 m.options.MAX_MEMORY = 10
,但这似乎并不重要。
Any thoughts on how to allow it to allocate more memory?
下面是触发此错误的一些(简化的)代码:
from gekko import GEKKO
quantiles = [(x+1)*.01 for x in range(300)]
#Initialize Model
m = GEKKO(remote=False)
#Set global options
m.options.IMODE = 3 #steady state optimization
m.options.SOLVER=3
m.options.MAX_ITER=100000
m.options.MAX_MEMORY = 10
m.options.REDUCE=10
#initialize variables
Est_array = m.Array(m.Var,(2, 16),value=1,lb=0,ub=48)
P_ij_t = m.Array(m.Var,(4, 16, 300), lb=0, ub=1)
Exp_ij_t = m.Array(m.Var,(4, 16, 300),value=1,lb=-36,ub=36)
C_t = m.Array(m.Var,300,lb=0,ub=5)
#Equations
for h in range(16):
for q in range(300):
m.Equation(m.sum([P_ij_t[i,h,q] for i in range(3)]) == 1)
for (q,t) in enumerate(quantiles):
m.Equation(C_t[q] == ( m.sum([P_ij_t[i+2,h,q]*(Est_array[i,h]-t)**2 for i in range(2) for h in range(16)]) + \
m.sum([P_ij_t[i,h,q]*(Est_array[1-i,15-h]-t)**2 for i in range(2) for h in range(16)])
)
)
#Objective
m.Minimize(C_t[0])
#Solve simulation
#m.open_folder()
m.solve()
#Results
print('C = ' + str(C_t[0].value[0]))
(所有 m.options.*
参数都是我试图让求解器达到 运行 的东西,但 none 似乎有助于解决内存分配问题。
Windows 二进制文件是 32 位,而 Linux、MacOS 和 ARM Linux 是 64 位可执行文件 remote=False
with Gekko v1.0.2
.使用 remote=True
,它在具有 64 GB RAM 并使用 64 位可执行文件的 Linux 服务器上运行。由于 32 位可执行文件,运行 成为内存限制问题,Windows 二进制文件高达 4 GB RAM。 64 位可执行文件的容量为 160 亿 GB(无限制)。 64 位 Windows 本地可执行文件是未来版本的计划开发。 Linux VM 或 APM Linux server(例如主机 IP 10.0.0.10
)是那些需要使用 Windows 本地 gekko 客户端在本地网络上解决大型问题的人的选择。
m = GEKKO(remote=True, server='https://10.0.0.10')