Mosel Iterations - 清洁记忆

时间:2017-01-02 10:36:47

标签: memory mosel

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

非常感谢,

阿虎

2 个答案:

答案 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