0

我正在尝试使用循环优化 250 种不同价格场景的模型。一开始,XPRESS 可以在一分钟内处理 5 个场景,但随后内存开始增加,运行速度变慢,在 50 个场景后,XPRESS 开始在 5 分钟内解决单个场景。如何在每次迭代结束时清理内存?

非常感谢,

阿胡

4

2 回答 2

1

我知道这是一篇旧文章,但是您能否将优化包装在一个过程中并循环遍历场景?

从稍微过时的文档

2.9.3 本地声明

一个子程序中可以使用几个声明块,所有声明的标识符都是该子程序的本地标识符。这意味着所有这些符号只存在于子例程的范围内(即在声明和结束过程或结束函数语句之间),并且一旦子例程终止,它们使用的所有资源都会被释放除非它们在例程之外被引用(例如,全局定义的集合的成员),否则它的执行。因此,在子例程中声明的活动约束(不只是线性表达式的 linctr)和它们使用的变量在子例程终止后仍然有效(因为它们是当前问题的一部分),即使用于命名的符号相关对象不再定义。另请注意,局部声明可能会隐藏全局符号。

于 2017-04-11T21:16:54.627 回答
0

您可以使用“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
于 2017-04-26T23:46:50.170 回答