Leo Yeh's Blog

SAS 優化研究 (3)

教學目標

初步了解 SAS Optimization 的基本概念。

重點概念

首先我們能夠透過 SAS Viya 平台解決優化問題,並且基於分散式處理架構能夠讓使用者在記憶體內快速運算數學優化問題,同時透過持續儲存資料在記憶體中消除在迭代分析期間多次載入資料的操作,以及 PROC OPTMODEL 是一種成熟的互動式線性代數建模語言,其主要分別為三大部份,分別為:

  1. PROC 敘述:主要設定初始選項。
  2. 宣告敘述:主要優化模型元件。
  3. 程式敘述:主要讀取和寫入資料,並且使用求解器,以及輸出結果。

而我們主要透過 PROC OPTMODEL 解決數學優化問題,像是最大化多維多項式的問題,並且提供建立,解決和維護的建模環境,透過輸入資料優化模型,並且儲存優化模型和相關解決方案的資料

接著 SAS Optimization 主要是基於雲端分析服務的環境為不同的問題提供線性程式 (LP)、混合整數線性程式 (MILP)、二次項程式 (QP)、非線性程式 (NLP)、條件約束程式 (CLP) 、網路演算法 (Network) 和局部搜尋優化 (LSO) 優化求解器,並且能夠透過 PROC OPTMODEL 建立優化模型。

問題類型 求解器
線性程式 LP
混合整數線性程式 MILP
二次項程式 QP
非線性程式 NLP
條件約束程式 CLP
網路演算法 Network
局部搜尋優化 LSO

其中分解演算法可以透過 LP 和 MILP 求解器進行求解,至於網路求解器主要包括解決優化問題的演算法,像是最短路徑和最小網路流量成本,並且還提供分析網路結構的演算法,其中包括連接元件和循環檢測。

再來當我們在 SAS Viya 平台中建立優化模型程序時,其分散式運算將能夠大量且獨立執行的重要子程序,同時求解器可以在分散式運算環境中執行運算節點,以利提供優化解決方案。其中 PROC OPTMODEL 將會自動使用多執行緒執行,以及透過 COFOR 敘述允許多個求解器進行平行處理。此外若我們需要在 SAS 中建立在 SAS Viya 平台中執行求解器,也能夠使用 PROC OPTLP、PROC OPTMILP、PROC OPTQP、PROC OPTNET 和 PROC CLP,並且指定問題的輸入 CAS 資料表就能夠在 SAS Viya 平台中執行求解器。

最後企業客戶更能夠透過 sasoptpy 套件直接以 Python 程式語言撰寫解決線性,混合整數線性和非線性優化問題的程式,同時透過 Python 中的結構、字典、元組和列表用於定義優化問題,並且透過 SAS Viya 平台解決企業客戶所面臨的優化問題。

相關資源

⬅️ Go back