2017-01-02 77 views
0

我正在嘗試使用循環優化250個不同價格場景的模型。開始時,XPRESS可以在一分鐘內處理5個場景,但隨後內存開始增加,運行速度變慢,在50個場景後,XPRESS開始在5分鐘內解決單個場景。我如何在每次迭代結束時清理內存?Mosel迭代 - 清潔內存

非常感謝你,

阿虎

+0

任何代碼樣本mpproblem? – Baykal

回答

0

我知道這是舊的文章,但你可以通過換場景的程序和循環內的優化?

從有點過時docs

2.9.3本地聲明

若干聲明塊可以在子程序中使用和聲明的所有 標識符是局部的這個子程序。 這意味着所有這些符號在 子程序(即,聲明和端程序或 端功能語句之間)的範圍只存在和他們使用的所有資源的被釋放 一次子程序終止它的執行除非它們是在例程之外引用的 (例如全局定義的集合 的成員)。因此,在子程序中聲明的主動約束(不是 只是線性表達式)和它們使用的變量 在終止子程序後(因爲它們是當前問題的一部分)仍然有效,即使 用於命名相關對象的符號不再被定義。 另請注意,本地聲明可能會隱藏全局符號。

0

您可以使用'dellcell'命令刪除mpvars的動態數組。

dellcell(myVar的)

此外,您還可以使用可變

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