運籌系列25 Cplex的分布式求解

2021-09-22 12:44:37 字數 1117 閱讀 4517

實際生產中很多的組合優化問題包含上百萬甚至上億的變數,很容易出現記憶體溢位和計算超時的問題。在試探計算機「底線」的過程中,我們如果能利用分布式的優勢,會讓很多問題的求解規模成倍增加。

在cplex多程序分確定性和機會性兩種。確定性指的是重複求解時遵循相同的求解路徑,而機會性則是隨機應變。可以使用並行方式開關 (parallelmode/cpx_param_parallelmode) 來控制機會性演算法的呼叫。 在使用其預設設定 0 時,除非執行緒引數更改為嚴格大於 1 的值,否則將使用確定性演算法。要強制 cplex 在所有情況下使用確定性演算法,請將並行方式引數設定為 1。要允許 cplex 在所有情況下使用機會性演算法,請將並行方式引數設定為 -1。

混合整數規劃的基本方法是分支定界法。分布式演算法的主要流程是:

預求解:在master node上預求解 mip。

提公升:將簡化模型傳送到各個work node構建搜尋樹。當master node斷定至少work node建立了足夠大的搜尋樹時,提公升將停止。

分發:master node將獲勝的搜尋樹分發到所有機器,進行分支定界搜尋。

在 cplex 實現的分布式並行分支定界中,master node保留全域性搜尋樹的大量節點。 如果某個work node變為空閒狀態,那麼master node會將其中一些節點傳送到該work node。 然後,該node將此節點視為新的 mip,並預求解該 mip、使用分支定界法找到該節點的最優解。 換而言之,work node不僅僅求解單個節點,而是求解根位於該節點處的整個子樹。

下面說一下ssh方式的配置。首先在集群所有節點上安裝python和cplex。不妨假設cplex安裝目錄為/nfs/cplex,然後建立配置檔案configuration.vmc(虛擬機器配置檔案是乙個 xml 檔案,用於指定分布式並行優化應用程式中主控與工作程式之間的通訊協議,以及每個工作程式的配置。):

<?xml version="1.0"?>

其中host2和host3為work node的別名。然後從主節點host1上啟動cplex即可,關鍵語句是:

cplex.read_copy_vmconfig(「configuration.vmc」)
找到配置檔案後,cplex會自動執行分布式mip優化。

WCF系列 分布式事務

跟wcf 相關的事務協議有三個。這是個輕量級的本地事務協議,限制管理在乙個 中的事務。不能跨 邊界傳播事務,也不能跨服務邊界傳播事務。跟其他協議比,lightweight protocol 是最有效率的協議。這個協議可用於跨 程序和機器邊界,管理兩階段提交的事務協議。這個跨邊界的事務協議使用 rpc...

分布式 分布式系統的設計

在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...

分布式系統設計系列 概要

在現在的 大資料 雲平台 這些前沿技術的背景下,衍生了很多平台型技術點,nosql hadoop storm等層出不窮。這些華麗的技術後面其實處處都離不開 分布式 這個雖然提出了很久,但是大資料 雲計算帶火了的技術。以致於開個玩笑說,如果不懂一些 分布式 下的技術和原理的,會有點不好意思說自己是後端...