我正在尝试使用循环优化 250 种不同价格场景的模型。一开始,XPRESS 可以在一分钟内处理 5 个场景,但随后内存开始增加,运行速度变慢,在 50 个场景后,XPRESS 开始在 5 分钟内解决单个场景。如何在每次迭代结束时清理内存?
非常感谢,
阿胡
我知道这是一篇旧文章,但是您能否将优化包装在一个过程中并循环遍历场景?
从稍微过时的文档:
2.9.3 本地声明
一个子程序中可以使用几个声明块,所有声明的标识符都是该子程序的本地标识符。这意味着所有这些符号只存在于子例程的范围内(即在声明和结束过程或结束函数语句之间),并且一旦子例程终止,它们使用的所有资源都会被释放除非它们在例程之外被引用(例如,全局定义的集合的成员),否则它的执行。因此,在子例程中声明的活动约束(不只是线性表达式的 linctr)和它们使用的变量在子例程终止后仍然有效(因为它们是当前问题的一部分),即使用于命名的符号相关对象不再定义。另请注意,局部声明可能会隐藏全局符号。
您可以使用“dellcell”命令删除 mpvar 的动态数组。
戴尔细胞(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