0
在構建具體的QP模型後調用ipopt求解器時,Pyomo在調用求解器之前運行內部代碼。閱讀有關此主題的其他問題我瞭解到Pyomo正在將模型轉換爲ipopt可以理解的格式。但不幸的是Pyomo在ipopt開始解決模型之前需要很長時間。有沒有辦法縮短實際求解器調用的時間?Pyomo在IPOPT求解器調用之後需要時間?
在構建具體的QP模型後調用ipopt求解器時,Pyomo在調用求解器之前運行內部代碼。閱讀有關此主題的其他問題我瞭解到Pyomo正在將模型轉換爲ipopt可以理解的格式。但不幸的是Pyomo在ipopt開始解決模型之前需要很長時間。有沒有辦法縮短實際求解器調用的時間?Pyomo在IPOPT求解器調用之後需要時間?
我相信Pyomo的默認行爲是編寫*.nl
文件,然後調用IPOPT來處理該文件並生成*.sol
文件。 Pyomo然後解析*.sol
文件。用於創建*.nl
文件的文件IO可能是較大型號的限制因素。解決方法是使用內存中的界面,而不是編寫*.nl
文件,我相信這是一項正在進行的工作。
您還有可能在模型構建中提高效率。您可以查看多久才能達到solve()
聲明與執行solve()
本身。
感謝您回答這個問題。我工作的模型很大。我已經對模型構建部分進行了優化,模型構建需要幾分鐘的時間。達到解決方案聲明後,Pyomo將在後臺運行並花費大部分時間,直到ipopt被調用。內存接口用於編寫.nl文件的含義是什麼? – Mukesh
可以通過CasADi將模型信息傳輸到IPOPT而無需將文件寫入磁盤(慢速部分)。這是核心開發人員所討論的內容。我不確定是否有動靜。如果你想要一個具體的答案,你可能會在Pyomo Github頁面上打開一個問題。 –
謝謝齊。我將在Github上跟進這個話題。 – Mukesh