我正在尝试使用循环优化250种不同价格场景的模型。一开始,XPRESS可以在一分钟内处理5个场景,但随后内存开始增加,运行速度变慢,在50个场景之后,XPRESS开始在5分钟内解决单个场景。如何在每次迭代结束时清理内存?
非常感谢,
阿虎
答案 0 :(得分:0)
我知道这是一篇很老的帖子,但是你可以在一个过程中包装优化并循环遍历场景吗?
略微过时的docs:
2.9.3地方声明
可以在子程序和所有子程序中使用多个声明块 声明的标识符是此子例程的本地标识符。 这意味着所有这些符号仅存在于范围内 子程序(即在声明和结束程序之间或 end-function statement)和他们使用的所有资源都被释放了 一旦子程序终止它的执行,除非它们是 在例程之外引用(例如,定义的集合的成员) 全球范围内)。因此,主动约束(linctr不是 只是线性表达式)在子程序中声明 他们使用的变量在终止后仍然有效 子程序(因为它们是当前问题的一部分)即使是 用于命名相关对象的符号不再定义。 另请注意,本地声明可能会隐藏全局符号。
答案 1 :(得分:0)
您可以使用' dellcell'命令删除mpvars的动态数组。
dellcell(myVar的)
此外,您可以使用mpproblem变量
declarations
MyProblem: mpprob
end-declarations
forall(p in Prices) do
with MyProblem do
! create mpvar
! create constraints
! solve problem
reset(MyProblem)
delcell(MyVar1)
delcell(MyVar2)
! etc
end-do
end-do