我正在嘗試使用循環優化250個不同價格場景的模型。開始時,XPRESS可以在一分鐘內處理5個場景,但隨後內存開始增加,運行速度變慢,在50個場景後,XPRESS開始在5分鐘內解決單個場景。我如何在每次迭代結束時清理內存?Mosel迭代 - 清潔內存
非常感謝你,
阿虎
我正在嘗試使用循環優化250個不同價格場景的模型。開始時,XPRESS可以在一分鐘內處理5個場景,但隨後內存開始增加,運行速度變慢,在50個場景後,XPRESS開始在5分鐘內解決單個場景。我如何在每次迭代結束時清理內存?Mosel迭代 - 清潔內存
非常感謝你,
阿虎
我知道這是舊的文章,但你可以通過換場景的程序和循環內的優化?
從有點過時docs:
2.9.3本地聲明
若干聲明塊可以在子程序中使用和聲明的所有 標識符是局部的這個子程序。 這意味着所有這些符號在 子程序(即,聲明和端程序或 端功能語句之間)的範圍只存在和他們使用的所有資源的被釋放 一次子程序終止它的執行除非它們是在例程之外引用的 (例如全局定義的集合 的成員)。因此,在子程序中聲明的主動約束(不是 只是線性表達式)和它們使用的變量 在終止子程序後(因爲它們是當前問題的一部分)仍然有效,即使 用於命名相關對象的符號不再被定義。 另請注意,本地聲明可能會隱藏全局符號。
您可以使用'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
任何代碼樣本mpproblem? – Baykal