欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于Fork/Join框架的梯級水庫群優(yōu)化調(diào)度多核并行計算設計方法與流程

文檔序號:11620441閱讀:2202來源:國知局
一種基于Fork/Join框架的梯級水庫群優(yōu)化調(diào)度多核并行計算設計方法與流程

本發(fā)明涉及梯級水庫群精細化調(diào)度領域,具體是一種基于fork/join框架的梯級水庫群優(yōu)化調(diào)度多核并行計算設計方法。



背景技術:

近年來,我國水電事業(yè)發(fā)展非常迅猛。截止2015年底,全國水電總裝機水電裝機規(guī)模達到3.2億kw,約占全球水電總裝機的1/4,是當之無愧的世界超級水電大國。當前,我國水電能源主要集中分布在十三大水電基地,這些水電基地的開發(fā)正逐漸形成一大批特大干流梯級水庫群,普遍呈現(xiàn)了梯級水庫數(shù)量多、裝機容量大等特點,尤其是西南富水電流域,動輒十幾級甚至幾十級電站規(guī)模。比如,烏江流域規(guī)劃11座電站,已建9座;瀾滄江規(guī)劃15級電站,已建6座;紅水河規(guī)劃10級電站,已建9座;金沙江中下游規(guī)劃12級電站,已建6座;大渡河規(guī)劃28級電站,已建成超過10座。對于這類規(guī)模龐大的梯級水庫群聯(lián)合優(yōu)化調(diào)度問題,面臨的求解困難主要體現(xiàn)在以下3個方面:

(1)大規(guī)模高維性:高維數(shù)問題是制約大規(guī)模水電站群優(yōu)化調(diào)度問題求解的主要難點。隨著水電系統(tǒng)計算規(guī)模不斷擴大,每增加1級電站,求解需要的計算次數(shù)、計算機存儲量以及計算耗時迅速增長,對于某些方法而言,增長速度呈指數(shù)方式上升,導致算法求解非常困難,計算效率顯著下降,而且對算法的可擴展性造成很大影響,這一問題在動態(tài)規(guī)劃中被稱為“維數(shù)災”。實際上在其它求解算法中,系統(tǒng)規(guī)模對求解的限制同樣不同程度地存在,并成為制約水電優(yōu)化調(diào)度工程應用的主要瓶頸。

(2)多階段動態(tài)優(yōu)化:水電站群優(yōu)化調(diào)度屬于多階段動態(tài)優(yōu)化問題。通常在時間維度上離散為多個時段,各時段之間需滿足水庫水量平衡約束或者水位出力變幅等銜接性約束,而且前面時段運行方式直接影響后面時段發(fā)電水頭以及發(fā)電量,因而各階段緊密聯(lián)系;同時調(diào)度期末水位、水電系統(tǒng)總出力限制等全局性等式控制條件使得系統(tǒng)分解和多變量關聯(lián)約束松弛難度很大。

(3)復雜水力電力聯(lián)系:水電站群優(yōu)化調(diào)度需要考慮電站之間的水力聯(lián)系,位于上游且具有較高調(diào)節(jié)性能的電站對天然來水起調(diào)節(jié)作用,因而改變了下游電站的入庫流量。當調(diào)度上游電站產(chǎn)生出庫流量時,其下游電站的入庫流量則由上游電站出庫流量和兩電站之間的區(qū)間流量共同構成,而入庫流量作為優(yōu)化調(diào)度的主要輸入,直接影響當前電站的調(diào)度決策。因此,每一個電站的入庫流量均受到其直屬上游電站調(diào)度的影響。若當前電站有多個上游電站,優(yōu)化問題更加復雜。另外,由于水電在電力系統(tǒng)中發(fā)揮非常重要的調(diào)度任務,致使水電站群優(yōu)化調(diào)度需考慮與電力系統(tǒng)相關的約束條件,比如平衡電力負荷需滿足的系統(tǒng)最小出力、輸電斷面的安全送電極限等,導致水電站群存在密切的電力聯(lián)系,同時也加大了水電站群優(yōu)化調(diào)度的求解困難。

面對我國水電系統(tǒng)如此大規(guī)模庫群聯(lián)合調(diào)度的形勢,采用傳統(tǒng)優(yōu)化方法求解呈現(xiàn)一定的局限性,已無法滿足電網(wǎng)、水電公司及流域機構的精細化調(diào)度需求,探索合理高效的求解算法是水電調(diào)度工作亟待解決的重要科學問題。

目前,動態(tài)規(guī)劃類方法和新興智能算法是梯級水庫群優(yōu)化調(diào)度領域主要應用的兩大類方法。但是,動態(tài)規(guī)劃方法受求解規(guī)模限制,大規(guī)模問題易導致維數(shù)災問題,計算規(guī)模隨著電站計算數(shù)量的增加呈指數(shù)增長;群體算法的求解精度與計算規(guī)模存在一定競爭關系,即種群規(guī)?;虻螖?shù)越大,在解空間搜索到全局優(yōu)化解的概率越大,求解精度越高,但是同時也意味著計算耗時越多,求解效率越低,尤其是應用于我國當前大規(guī)模梯級水電站群優(yōu)化調(diào)度時,求解效率下降非常顯著。因此,為了使在有限時間內(nèi)求解大規(guī)模水電站群優(yōu)化調(diào)度問題成為可能,并同時保證優(yōu)化結(jié)果的質(zhì)量,研究如何改進這兩類常用優(yōu)化方法的計算效率具有重要的科學意義。

并行計算一直是計算機科學領域的研究熱點?;诙嗪颂幚砥鞯亩嗪瞬⑿屑夹g以其并行實現(xiàn)容易、運行環(huán)境穩(wěn)定、成本低廉等獨特的優(yōu)勢被廣泛應用于實際工程,對于水電系統(tǒng)而言,尋求優(yōu)化調(diào)度問題、求解算法與并行技術之間的切入點,設計合適粗細粒度的并行優(yōu)化方式將是一種提高系統(tǒng)求解效率的可行途徑。目前,在梯級水電站群優(yōu)化調(diào)度領域并行優(yōu)化方法的研究成果較多,方法并行化方式主要通過粗粒度設計和細粒度設計兩種模式實現(xiàn),而且成果普遍利用了已成熟的openmp、mpi或.net等能夠有效兼容fortran、c++、c#等語言的并行模式或框架,為fortran、c++、c#等語言開發(fā)的串行方法并行化提供了便利。但是這些框架并不能有效適應java語言(目前主流的匯編語言之一)開發(fā)的串行方法,難以應用于java編碼的程序并行化開發(fā)和改造。fork/join并行框架是一種基于java源碼開發(fā)的多核并行框架,并已作為標準程序集成到java版本7的并發(fā)程序包中,能夠最大效率地簡化開發(fā)人員的編程工作,便于java編碼開發(fā)的串行方法并行化改造,而且,由于該框架提出時間較晚,目前應用于梯級水庫群優(yōu)化調(diào)度方法并行化計算的成果較少,未見系統(tǒng)性闡述其實現(xiàn)方法以及性能影響因素的相關成果。因此,申請人以java語言為基礎開發(fā)語言,應用fork/join多核并行框架,分別采用粗粒度設計模式和細粒度設計模式,實現(xiàn)了多種方法的并行化計算,發(fā)明了一種基于fork/join框架的梯級水庫群優(yōu)化調(diào)度多核并行計算設計方法。



技術實現(xiàn)要素:

本發(fā)明的目的在于提供一種基于fork/join框架的梯級水庫群優(yōu)化調(diào)度多核并行計算設計方法,該工藝可以在不改變現(xiàn)有計算機配置的基礎上,充分發(fā)揮多核配置的加速性能,大幅度縮減計算時間,提高求解效率。

為實現(xiàn)上述目的,本發(fā)明提供如下技術方案:

一種基于fork/join框架的梯級水庫群優(yōu)化調(diào)度多核并行計算設計方法,包括以下步驟:

(1)構建fork/join并行框架:fork/join并行框架的核心繼承了“分治法”的特性,通過遞歸分割原問題,形成若干個規(guī)模更小、相互獨立且可并行計算的子問題;當各子問題進行獨立并行計算后,組合各子問題的子結(jié)果即可輸出原問題的最終結(jié)果;fork/join框架設計了獨特的線程池技術,當程序開始執(zhí)行時,默認創(chuàng)建與可用的處理器數(shù)目相同的活動線程數(shù);在“分治法”執(zhí)行過程中,定義了一個可自由設置的控制子問題規(guī)模大小的閾值作為子問題規(guī)模的上限值,即當子問題規(guī)模小于或等于閾值時,“分治法”執(zhí)行結(jié)束,各子問題被平均分配到不同線程中開始并行計算;另外,在子問題并行計算過程中,fork/join設計了獨特的雙端隊列排序模式,并采用了“工作竊取”算法,即當一個線程的隊列計算任務為空時,將從其它處于工作狀態(tài)的線程隊列尾部“竊取”計算任務;

(2)實現(xiàn)fork/join并行框架:1)算法實現(xiàn)的代碼類需繼承fork/join應用接口類java.util.concurrent.recursiveaction或者java.util.concurrent.recursivetask;2)選擇閾值劃分任務;3)實現(xiàn)fork/join接口類的voidcompute()方法;4)設置任務劃分方式;

(3)粗粒度模式下典型智能方法并行化設計:1)并行自適應混沌整體退火遺傳算法:

step1參數(shù)初始化。設定種群規(guī)模m、混沌序列個數(shù)d、種群最大迭代次數(shù)kmax、初始溫度t0以及自適應參數(shù)pc1、pc2、pm1、pm2;

step2種群初始化。根據(jù)logistic映射公式,在混沌空間隨機生成n組混沌序列,映射到解空間內(nèi)生成m個不同的個體構成種群,種群個體由各電站不同時段的水位值(zil,zi2,…,zin)構成;

step3創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值;

step4啟動并行計算流程;

parallelstep①根據(jù)設置的計算閾值將父種群按遞歸模式劃分為多個規(guī)模更小的子種群;

parallelstep②劃分的子種群集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同;

parallelstep③每個線程分配到的子種群獨立運行計算,主要計算步驟如下:

a評價個體適應度;

b選擇運算:采用整體退火選擇機制,允許父代參與競爭,并篩選出下一代個體;

c交叉運算:采用算術交叉方法執(zhí)行交叉操作;

d變異運算:采用非均勻變異方式執(zhí)行變異操作;

e計算父代和子代個體適應度:當父代個體xi經(jīng)過交叉、變異生成子代x′i,若f(x′i)>f(xi),則用x′i代替xi;否則,以概率exp[(f(x′i)-f(xi))/tk]保留xi;

f參數(shù)更新。迭代次數(shù)k=k+1,溫度tk=1/ln(k/t0+1)。

g判斷子種群迭代是否結(jié)束;根據(jù)退火溫度tk或最大迭代次數(shù)作為收斂條件,當兩者任意其一達到初始設置的收斂條件時,返回a;否則,子種群計算收斂結(jié)束;

parallelstep④匯總合并各子種群的優(yōu)化解作為結(jié)果集,返回主線程。

step5從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池。

2)并行自適應混合粒子群算法(pahpso)

step1參數(shù)初始化;

step2種群初始化;

step3創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值;

step4啟動并行計算流程;

parallelstep①根據(jù)設置的計算閾值將父種群按遞歸模式劃分為多個規(guī)模更小的子種群;

parallelstep②劃分的子種群集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同;

parallelstep③每個線程分配到的子種群獨立運行計算,主要計算步驟如下:

a計算粒子適應度、粒子個體最優(yōu)解以及種群全局最優(yōu)解;粒子適應度與其個體最優(yōu)解比較,若粒子適應度比其個體最優(yōu)解更優(yōu),則當前粒子位置作為個體最優(yōu)位置;粒子適應度與種群全局最優(yōu)解比較,若粒子適應度比種群全局最優(yōu)解更優(yōu),則當前粒子位置作為種群全局最優(yōu)位置;

b計算粒子能量以及粒子能量閾值;若粒子能量低于當前粒子能量閾值,對粒子當前位置與速度執(zhí)行變異操作;

c計算粒子相似度以及粒子相似度閾值;若兩相鄰粒子相似度小于當前粒子相似度閾值,則對較差粒子的歷史最優(yōu)位置執(zhí)行變異操作;

d引入基于鄰域的貪心隨機搜索策略對粒子的個體最優(yōu)位置進行更新;若在鄰域搜索到的當前位置比搜索前粒子適應度更大,則代替搜索前粒子個體位置,再用搜索后粒子個體位置與粒子歷史最優(yōu)位置以及種群全局最優(yōu)位置作比較,更新粒子歷史最優(yōu)位置以及種群最優(yōu)位置;

e更新粒子種群的速度和位置;

f判斷子種群迭代是否結(jié)束;若當前迭代次數(shù)小于最大迭代次數(shù),返回(1);否則,子種群計算收斂結(jié)束;

parallelstep④匯總合并各子種群的計算結(jié)果作為結(jié)果集,返回主線程;

step5從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池;

3)fork/join框架粗粒度并行設計模式及方法

根據(jù)pscwaga和pahpso方法計算流程,歸納總結(jié)fork/join框架粗粒度并行設計模式及方法:

step1初始化算法參數(shù)及種群規(guī)模;

step2創(chuàng)建線程池以及設置計算閾值;

step3利用fork/join并行框架按遞歸模式將父種群劃分為多個子種群,并平均分配到各子線程;

step4各子種群按原串行方法流程優(yōu)化計算,直至各子種群迭代結(jié)束;

step5匯總合并各子種群的計算結(jié)果作為結(jié)果集,返回主線程;

step6從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池;

(4)細粒度模式下典型動態(tài)規(guī)劃方法并行化設計:1)并行動態(tài)規(guī)劃方法:

step1數(shù)據(jù)準備;獲取計算所需的電站基礎屬性特征值及特征曲線,包括電站特征水位、出力系數(shù)、水位-庫容曲線、泄流-尾水位曲線等,并根據(jù)水庫各時段蓄水上下限、離散個數(shù)確定離散狀態(tài)變量st;

step2創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值;

step3啟動并行計算流程;

parallelstep①構建并行計算的父任務;將迭代周期內(nèi)所有蓄水狀態(tài)變量組合在bt(st,it,nt)中的求解計算作為父任務,并為計算過程中水位、出力、發(fā)電量等指標創(chuàng)建存儲空間;

parallelstep②根據(jù)設置的計算閾值將父任務按遞歸模式劃分為多個規(guī)模更小的子任務;

parallelstep③劃分的子任務集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同;

parallelstep④每個線程分配到的子任務獨立運行計算,即子任務中的所有狀態(tài)離散組合在遞推公式中求解計算;

parallelstep⑤匯總合并各子任務的計算結(jié)果作為結(jié)果集,返回主線程;

step4從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池;

2)并行離散微分動態(tài)規(guī)劃方法:

step1數(shù)據(jù)準備;獲取計算所需的電站基礎屬性特征值及特征曲線,包括電站特征水位、出力系數(shù)、水位-庫容曲線、泄流-尾水位曲線等,并根據(jù)水庫各時段蓄水上下限、離散個數(shù)確定離散狀態(tài)變量st;

step2設置迭代廊道個數(shù),并生成初始可行解作為計算初始軌跡;

step3創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值;

step4選取最大廊道寬度作為當前廊道;

step5啟動并行計算流程;

parallelstep①在當前廊道內(nèi)構建并行計算的父任務;將廊道內(nèi)所有蓄水狀態(tài)變量組合在bt(st,it,nt)中的求解計算作為父任務,并為計算過程中水位、出力、發(fā)電量等指標創(chuàng)建存儲空間;

parallelstep②根據(jù)設置的計算閾值將父任務按遞歸模式劃分為多個規(guī)模更小的子任務;

parallelstep③劃分的子任務集合平均分配到不同邏輯線程;為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同;

parallelstep④每個線程分配到的子任務獨立運行計算,即子任務中的所有狀態(tài)離散組合在遞推公式中求解計算;

parallelstep⑤匯總合并各子任務的計算結(jié)果作為結(jié)果集,返回主線程;

step5根據(jù)結(jié)果集輸出當前最優(yōu)軌跡,并判斷當前最優(yōu)軌跡是否與初始軌跡相同;若相同,則進入step6;若不相同,進入step7;

step6判斷當前廊道是否為最后一個廊道;若不是,設置下一個更小的廊道寬度作為當前廊道寬度,進入step7;若是,計算終止,輸出最優(yōu)軌跡作為計算最優(yōu)解并銷毀線程池;

step7設置當前最優(yōu)軌跡作為下一次迭代的初始軌跡,返回step5;

3)fork/join框架細粒度并行設計模式及方法:

根據(jù)pdp和pdddp方法計算流程,歸納總結(jié)fork/join框架細粒度并行設計模式及方法:

step1數(shù)據(jù)準備。包括初始化參數(shù)以及設置狀態(tài)離散點數(shù);

step2創(chuàng)建線程池以及設置計算閾值;

step3按串行流程執(zhí)行直至開始計算狀態(tài)離散點組合的返回值,進入并行計算;

step4利用fork/join并行框架按遞歸模式將父任務劃分為多個子任務,并平均分配到各子線程;

step5各子任務中的狀態(tài)離散點組合按動態(tài)規(guī)劃遞推公式求解運算,直至各子任務計算結(jié)束;

step6匯總合并各子任務的計算結(jié)果作為結(jié)果集,返回主線程;

step7從結(jié)果集中篩選出當前最優(yōu)解,并繼續(xù)按方法串行流程執(zhí)行直至計算結(jié)束,并銷毀線程池。

作為本發(fā)明進一步的方案:步驟(2)中閾值劃分任務具體為當閾值設置偏小,意味著子問題的規(guī)模更小且分割數(shù)量更多,易造成資源管理消耗過大;當閾值設置偏大,意味著子問題的規(guī)模更大且分割數(shù)量更少,甚至當子問題數(shù)量小于工作線程數(shù)時,易導致部分工作線程處于閑置狀態(tài)。因此,為了保證所有工作線程均能分配到子問題,通用的閾值設置公式(i)如下:

公式(i)中:為計算結(jié)果取上整數(shù);μ為規(guī)??刂崎撝担籹c為原問題規(guī)模;w為多核處理器邏輯線程數(shù)。

作為本發(fā)明進一步的方案:步驟(2)中設置任務劃分方式具體為每次任務劃分可將父任務劃分為多個子任務,而劃分的子任務個數(shù)由開發(fā)人員編寫代碼實現(xiàn)。

與現(xiàn)有技術相比,本發(fā)明的有益效果是:

本發(fā)明通過pscwaga、pahpso、pdp、pdddp方法實例測試結(jié)果,采用fork/join多核并行框架,能充分發(fā)揮多核cpu并行性能,大幅度縮減計算耗時,顯著提高算法計算效率;并行方法的計算規(guī)模越大,縮減計算耗時越多,并行計算的優(yōu)勢越明顯;而且隨著計算規(guī)模逐漸增大,加速比及并行效率逐步增大,加速比更加接近理想加速比。

附圖說明

圖1為“分治法”示意圖;

圖2為閾值控制方式示意圖;

圖3為“工作竊取”算法示意圖;

圖4為fork/join偽代碼示意圖;

圖5為fork/join框架粗粒度并行設計模式及方法;

圖6為fork/join框架細粒度并行設計模式及方法;

圖7為紅水河梯級水庫拓撲結(jié)構圖;

圖8為3離散狀態(tài)點廊道示意圖。

具體實施方式

下面將結(jié)合本發(fā)明實施例,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

一、梯級水電站群優(yōu)化調(diào)度模型

(1)目標函數(shù)

以梯級水庫群總發(fā)電量最大模型為例。該模型可描述為:在已知調(diào)度期內(nèi)各電站入庫流量過程條件下,考慮水量平衡、蓄水量、泄量、出力等各種約束,兼顧防洪、灌溉、航運等綜合要求,制定最優(yōu)調(diào)度決策過程,使調(diào)度期內(nèi)水庫群發(fā)電量最大。目標函數(shù)數(shù)學表達式如下:

式中:e為水電站群總發(fā)電量(億kw.h);n為電站數(shù)目;i為電站序號;t為時段數(shù);t為時段序號;為水電站i第t時段的平均出力;δt為第t時段的小時數(shù)。

(2)約束條件

水量平衡約束:

水庫蓄水量約束:

發(fā)電流量約束:

出庫流量約束:

出力約束:

末水位約束:

水電系統(tǒng)總出力約束:

式中:為水電站i第t時段初水庫蓄水量(m3);為水電站i第t時段入庫流量(m3/s);為水電站i第t時段出庫流量(m3/s);為水電站i第t時段區(qū)間流量(m3/s);ki為水電站i的上游電站數(shù);k為上游電站序號;為水電站i第t時段的上游水庫k的出庫流量(m3/s);為水電站i第t時段的發(fā)電流量(m3/s);為水電站i第t時段的棄水流量(m3/s);分別為水電站i第t時段水庫蓄水量上下限(m3);分別為水電站i第t時段發(fā)電流量上下限(m3/s);分別為水電站i第t時段出庫流量上下限(m3/s);分別為水電站i第t時段出力上下限(mw);分別為水電站i的初始時刻和t時刻的蓄水狀態(tài);sbi、sei分別為水電站i指定的初始蓄水狀態(tài)和末時段預期的蓄水狀態(tài);分別為水電系統(tǒng)第t時段總出力上下限(mw)。

二、fork/join并行框架

fork/join并行框架的接口類以及實現(xiàn)類封裝在java.util.concurrent中。雖然fork/join的并行效率與其他并行框架相比較并非最優(yōu),但其最大優(yōu)點在于給開發(fā)人員提供了非常簡便的應用程序?qū)崿F(xiàn)接口。開發(fā)人員不再需要處理各種并行相關事務,例如同步、通信等,同時可避免難以調(diào)試的死鎖和數(shù)據(jù)爭用等錯誤,只需按照給定接口的實現(xiàn)方式,編寫很少的程序即可完成算法與框架接口的對接,極大地簡化了編寫并發(fā)程序的瑣碎工作,可大量節(jié)省開發(fā)人員的工作量,提高工作效率,fork/join偽代碼示意圖見圖4。對于開發(fā)人員而言,應用fork/join并行框架實現(xiàn)算法并行化計算主要需關注以下4個問題。

1)算法實現(xiàn)的代碼類需繼承fork/join應用接口類java.util.concurrent.recursiveaction或者java.util.concurrent.recursivetask。

2)選擇合適的閾值劃分任務。根據(jù)圖2中的實例,閾值的大小直接影響子問題的分割數(shù)目。當閾值設置偏小,意味著子問題的規(guī)模更小且分割數(shù)量更多,易造成資源管理消耗過大;當閾值設置偏大,意味著子問題的規(guī)模更大且分割數(shù)量更少,甚至當子問題數(shù)量小于工作線程數(shù)時,易導致部分工作線程處于閑置狀態(tài)。因此,為了保證所有工作線程均能分配到子問題,通用的閾值設置公式如下:

式中:為計算結(jié)果取上整數(shù);μ為規(guī)??刂崎撝担籹c為原問題規(guī)模;w為多核處理器邏輯線程數(shù)(具有“超線程”技術的處理器可在1個內(nèi)核中模擬2個邏輯線程)。另外,框架應用接口類提供了劃分子問題的方法接口,因此,開發(fā)人員只需提供合適的閾值實現(xiàn)提供的接口,至于程序如何實現(xiàn)任務劃分以及線程分配,開發(fā)人員不需要關心。

3)實現(xiàn)fork/join接口類的voidcompute()方法。該方法接口主要實現(xiàn)各子任務的計算,即將算法可并行化部分的代碼程序?qū)懭朐摲椒ń涌凇?/p>

4)設置任務劃分方式。每次任務劃分可將父任務劃分為多個子任務,而劃分的子任務個數(shù)由開發(fā)人員編寫代碼實現(xiàn)。一般來說,采用對半分解父任務的方式有利于硬件實現(xiàn)負載均衡。

三、實例方法重要參數(shù)定義

(1)自適應混沌整體退火遺傳算法(pscwaga)

logistic映射公式:xn+1=μxn(1-xn)(3.1)

jk(fi)=exp(fi/tk)(3.4)

式中:xn是[0,1]上的隨機數(shù),是變量x第n次的迭代值;μ為控制參數(shù),且μ∈[0,4]。其中當=4時,logistic映射公式完全處于混沌狀態(tài),而且,μ的初始取值不能為0、0.25、0.5、0.75和1;pcl、pc2、pm1、pm2為區(qū)間(0,1)上的控制參數(shù);f′為兩交叉?zhèn)€體中的適應度較大值;f為當前個體的適應度;fmax、favg分別表示種群中最大適應度和種群平均適應度;p(xi)為選擇概率,jk(fi)為適應度函數(shù);fi是個體xi的目標函數(shù)值;m為種群大小;k為遺傳算法迭代次數(shù);tk為漸趨于0的退火溫度。其中,溫度按tk=1/ln(k/t0+1)下降。

(2)自適應混合粒子群算法(pahpso)

粒子能量

其中

式中:pibest為粒子xi的歷史最優(yōu)位置;pgbest為種群全局最優(yōu)位置;n為維數(shù);xi(k)為粒子位置;vi(k)為粒子飛行速度??梢姡琫(pi)∈[0,1]。粒子能量描述的是粒子的搜索能力,并且對算法自適應起到了關鍵作用。公式(3.6)中看到粒子能量計算與粒子當前位置和速度的相似程度以及粒子歷史最優(yōu)位置和種群全局最優(yōu)位置的相似程度有關。

粒子能量閾值

其中:speed(pi(curg))=pibest(curg)/pibest(curg-1)

式中:maxg為最大迭代次數(shù);curg為當前迭代次數(shù);e為預先給定常量,用于控制能量閾值的變化趨勢;eini為粒子能量上限;efin為粒子能量下限。

粒子能量閾值與種群進化程度及進化速度密切相關。從公式(3.5)中可以看到,粒子能量閾值與粒子最優(yōu)位置和粒子能量上下限有關。迭代過程中粒子能量閾值不斷變化,當粒子能量小于當前粒子能量閾值時,對速度和位置進行變異操作,見公式(3.8)、(3.9)。

vi(k)=mutation(vi(k))(3.8)

xi(k)=mutation(xi(k))(3.9)

粒子相似度

其中

式中:pibest為粒子xi的歷史最優(yōu)位置;pjbest為粒子xj的歷史最優(yōu)位置。從公式(3.10)中可看出,相鄰粒子相似度的計算與其相對應的歷史最優(yōu)位置有關。

粒子相似度閾值

式中:sini是粒子相似度上限;sfin是粒子相似度下限;s為常量,控制相似度閾值的變化幅度。

(3)動態(tài)規(guī)劃方法(dp)

st=tt+1(st+1,qt,nt);t=t,t-1,…,1(3.13)

式中:t、t分別為時段序號和時段數(shù);st、qt、nt分別為m維(電站個數(shù))水電站庫容、入庫流量、出力,均為矢量;ft*(st)為時段t狀態(tài)為st時,從時段t到末時段的系統(tǒng)最大發(fā)電量,億kwh;bt(st,qt,nt)為時段t初始蓄水狀態(tài)為st,入庫流量為qt,決策出力為nt時的本時段系統(tǒng)發(fā)電量,億kwh;tt+1(st+1,qt,nt)為時段t+1到t的狀態(tài)轉(zhuǎn)移方程,通常為水量平衡方程,見公式(1.2)。

(4)離散微分動態(tài)規(guī)劃方法(dddp)

廊道:當每次迭代搜索開始時,在狀態(tài)可行域內(nèi)對當前初始解構造一定范圍的“廊道”,并在當前“廊道”內(nèi)搜索最優(yōu)軌跡,在廊道內(nèi)一般離散較少的狀態(tài)數(shù),通常離散3個狀態(tài)點,即可大幅度縮小計算規(guī)模,見圖8。圖8中,δ1和δ2分別為上廊道寬度和下廊道寬度,整個廊道寬度為δ=δ1+δ2。為了方便計算,可設置δ1=δ2,另外,廊道上邊界與下邊界不能超出狀態(tài)變量的可行域。

四、粗粒度模式下典型智能方法并行化設計實現(xiàn)方式

對于目前眾多新興智能算法而言,不同的優(yōu)化算法求解過程有所不同,比如遺傳算法主要過程是通過種群個體選擇、交叉、變異等步驟尋優(yōu);粒子群算法主要過程是通過個體極值點和全局極值點不斷更新個體位置來搜索全局最優(yōu)解;蟻群算法主要過程通過個體遺留的信息素不斷向全局最優(yōu)解進化。但是,這些智能算法的優(yōu)化機制普遍為從個體最優(yōu)逐步搜索至全局最優(yōu),其共同特點是在算法開始執(zhí)行時,初始生成一定規(guī)模的個體種群,種群中的每一個個體為單一獨立的初始解,且每個個體在尋優(yōu)過程中的迭代計算是相互獨立的,因此,均可采用將初始種群分解為規(guī)模更小種群尋優(yōu)匯總的粗粒度模式進行并行化設計與計算。本發(fā)明主要以并行自適應混沌整體退火遺傳算法和并行自適應混合粒子群算法兩種典型智能方法的并行化設計為例,總結(jié)基于fork/join多核并行框架的粗粒度并行化設計方法。

(1)并行自適應混沌整體退火遺傳算法(pscwaga)

step1參數(shù)初始化。設定種群規(guī)模m、混沌序列個數(shù)d、種群最大迭代次數(shù)kmax、初始溫度t0以及自適應參數(shù)pc1、pc2、pm1、pm2。

step2種群初始化。根據(jù)logistic映射公式,在混沌空間隨機生成n組混沌序列,映射到解空間內(nèi)生成m個不同的個體構成種群,種群個體由各電站不同時段的水位值(zi1,zi2,…,zin)構成。

step3創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值。

step4啟動并行計算流程。

parallelstep①根據(jù)設置的計算閾值將父種群按遞歸模式劃分為多個規(guī)模更小的子種群。

parallelstep②劃分的子種群集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同。

parallelstep③每個線程分配到的子種群獨立運行計算,主要計算步驟如下:

(1)評價個體適應度。直接采用目標函數(shù)作為適應度評價函數(shù),同時采用最優(yōu)保存策略,即記錄每一代最優(yōu)個體,不參與交叉運算和變異運算,在本代計算結(jié)束后,替換掉適應度最差的個體,確保其順利進入下一代。

(2)選擇運算。采用整體退火選擇機制,允許父代參與競爭,每個個體通過相對適應度函數(shù)公式(5)和選擇概率公式(6)篩選出下一代。

(3)交叉運算。采用算術交叉方法執(zhí)行交叉操作,交叉算子由公式(2)得到。

(4)變異運算。采用非均勻變異方式執(zhí)行變異操作,變異算子由公式(3)得到。

(5)計算父代和子代個體適應度。假設父代個體xi經(jīng)過交叉、變異生成子代x′i,若f(x′i)>f(xi),則用x′i代替xi;否則,以概率exp[(f(x′i)-f(xi))/tk]保留xi。

(6)參數(shù)更新。迭代次數(shù)k=k+1,溫度tk=1/ln(k/t0+1)。

(7)判斷子種群迭代是否結(jié)束。根據(jù)退火溫度tk或最大迭代次數(shù)作為收斂條件。當兩者任意其一達到初始設置的收斂條件時,返回(1);否則,子種群計算收斂結(jié)束。

parallelstep④匯總合并各子種群的優(yōu)化解作為結(jié)果集,返回主線程。

step5從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池。

pscwaga算法流程見圖5。

(2)并行自適應混合粒子群算法(pahpso)

step1參數(shù)初始化。設定種群規(guī)模m、混沌序列個數(shù)d、種群最大迭代次數(shù)kmax、飛行加速度c1,c2、慣性因子w、常量e、常量s、粒子能量上限eini、粒子能量下限efin以及粒子相似度上限sini和粒子相似度下限sfin。

step2種群初始化。根據(jù)logistic映射公式,在各時段水位允許范圍內(nèi),隨機初始化粒子種群個體位置(zi1,zi2,…,zin)以及粒子飛行速度(vi1,vi2,…,vin)。其中,粒子位置元素為水位,飛行速度元素為水位漲落速度。

step3創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值。

step4啟動并行計算流程。

parallelstep①根據(jù)設置的計算閾值將父種群按遞歸模式劃分為多個規(guī)模更小的子種群。

parallelstep②劃分的子種群集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同。

parallelstep③每個線程分配到的子種群獨立運行計算,主要計算步驟如下:

(1)計算粒子適應度、粒子個體最優(yōu)解以及種群全局最優(yōu)解。粒子適應度與其個體最優(yōu)解比較,若粒子適應度比其個體最優(yōu)解更優(yōu),則當前粒子位置作為個體最優(yōu)位置;粒子適應度與種群全局最優(yōu)解比較,若粒子適應度比種群全局最優(yōu)解更優(yōu),則當前粒子位置作為種群全局最優(yōu)位置。

(2)計算粒子能量以及粒子能量閾值。若粒子能量低于當前粒子能量閾值,對粒子當前位置與速度執(zhí)行變異操作。

(3)計算粒子相似度以及粒子相似度閾值。若兩相鄰粒子相似度小于當前粒子相似度閾值,則對較差粒子的歷史最優(yōu)位置執(zhí)行變異操作。

(4)引入基于鄰域的貪心隨機搜索策略對粒子的個體最優(yōu)位置進行更新。若在鄰域搜索到的當前位置比搜索前粒子適應度更大,則代替搜索前粒子個體位置,再用搜索后粒子個體位置與粒子歷史最優(yōu)位置以及種群全局最優(yōu)位置作比較,更新粒子歷史最優(yōu)位置以及種群最優(yōu)位置。

(5)更新粒子種群的速度和位置。

(6)判斷子種群迭代是否結(jié)束。若當前迭代次數(shù)小于最大迭代次數(shù),返回(1);否則,子種群計算收斂結(jié)束。

parallelstep④匯總合并各子種群的計算結(jié)果作為結(jié)果集,返回主線程。

step5從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池。

pahpso算法流程見圖5。

(3)fork/join框架粗粒度并行設計模式及方法

根據(jù)pscwaga和pahpso方法計算流程,歸納總結(jié)fork/join框架粗粒度并行設計模式及方法:

step1初始化算法參數(shù)及種群規(guī)模。

step2創(chuàng)建線程池以及設置計算閾值。

step3利用fork/join并行框架按遞歸模式將父種群劃分為多個子種群,并平均分配到各子線程。

step4各子種群按原串行方法流程優(yōu)化計算,直至各子種群迭代結(jié)束。

step5匯總合并各子種群的計算結(jié)果作為結(jié)果集,返回主線程。

step6從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池。

fork/join框架粗粒度并行設計模式見圖5。

五、細粒度模式下典型動態(tài)規(guī)劃方法并行化設計實現(xiàn)方式

經(jīng)典動態(tài)規(guī)劃類方法是目前水庫群優(yōu)化調(diào)度應用最廣泛的優(yōu)化方法之一,主要有傳統(tǒng)動態(tài)規(guī)劃方法、離散微分動態(tài)規(guī)劃方法、逐次逼近動態(tài)規(guī)劃方法等動態(tài)規(guī)劃類方法。這類動態(tài)規(guī)劃方法尋優(yōu)迭代方式各有不同,但是方法的核心均為不同的狀態(tài)離散點組合在動態(tài)規(guī)劃遞推公式中的求解尋優(yōu),而且不同的狀態(tài)離散點組合迭代計算是相互獨立的。因此,經(jīng)典動態(tài)規(guī)劃類方法均適用于細粒度模式下的并行設計。本發(fā)明主要以并行動態(tài)規(guī)劃方法和并行離散微分動態(tài)規(guī)劃方法兩種典型動態(tài)規(guī)劃類方法的并行化設計為例,總結(jié)基于fork/join多核并行框架的細粒度并行化設計方法。

(1)并行動態(tài)規(guī)劃方法(pdp)

step1數(shù)據(jù)準備。獲取計算所需的電站基礎屬性特征值及特征曲線,包括電站特征水位、出力系數(shù)、水位-庫容曲線、泄流-尾水位曲線等,并根據(jù)水庫各時段蓄水上下限、離散個數(shù)確定離散狀態(tài)變量st。

step2創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值。

step3啟動并行計算流程。

parallelstep①構建并行計算的父任務。將迭代周期內(nèi)所有蓄水狀態(tài)變量組合在bt(st,it,nt)中的求解計算作為父任務,并為計算過程中水位、出力、發(fā)電量等指標創(chuàng)建存儲空間。

parallelstep②根據(jù)設置的計算閾值將父任務按遞歸模式劃分為多個規(guī)模更小的子任務。

parallelstep③劃分的子任務集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同。

parallelstep④每個線程分配到的子任務獨立運行計算,即子任務中的所有狀態(tài)離散組合在遞推公式中求解計算。

parallelstep⑤匯總合并各子任務的計算結(jié)果作為結(jié)果集,返回主線程。

step4從結(jié)果集中篩選出最優(yōu)解,計算結(jié)束并銷毀線程池。

pdp算法流程見圖6。

(2)并行離散微分動態(tài)規(guī)劃方法(pdddp)

step1數(shù)據(jù)準備。獲取計算所需的電站基礎屬性特征值及特征曲線,包括電站特征水位、出力系數(shù)、水位-庫容曲線、泄流-尾水位曲線等,并根據(jù)水庫各時段蓄水上下限、離散個數(shù)確定離散狀態(tài)變量st(dddp方法的狀態(tài)離散個數(shù)一般選為3)。

step2設置迭代廊道個數(shù),并生成初始可行解作為計算初始軌跡。

step3創(chuàng)建線程池,默認生成的線程池的工作線程數(shù)目與cpu邏輯線程數(shù)目相同,同時設置fork/join的計算閾值。

step4選取最大廊道寬度作為當前廊道。

step5啟動并行計算流程。

parallelstep①在當前廊道內(nèi)構建并行計算的父任務。將廊道內(nèi)所有蓄水狀態(tài)變量組合在bt(st,it,nt)中的求解計算作為父任務,并為計算過程中水位、出力、發(fā)電量等指標創(chuàng)建存儲空間。

parallelstep②根據(jù)設置的計算閾值將父任務按遞歸模式劃分為多個規(guī)模更小的子任務。

parallelstep③劃分的子任務集合平均分配到不同邏輯線程。為了保持cpu負載平衡,確保每個邏輯線程分配的子任務數(shù)相同。

parallelstep④每個線程分配到的子任務獨立運行計算,即子任務中的所有狀態(tài)離散組合在遞推公式中求解計算。

parallelstep⑤匯總合并各子任務的計算結(jié)果作為結(jié)果集,返回主線程。

step5根據(jù)結(jié)果集輸出當前最優(yōu)軌跡,并判斷當前最優(yōu)軌跡是否與初始軌跡相同。若相同,則進入step6;若不相同,進入step7。

step6判斷當前廊道是否為最后一個廊道。若不是,設置下一個更小的廊道寬度作為當前廊道寬度,進入step7;若是,計算終止,輸出最優(yōu)軌跡作為計算最優(yōu)解并銷毀線程池。

step7設置當前最優(yōu)軌跡作為下一次迭代的初始軌跡,返回step5。

pdddp算法流程見圖6。

(3)fork/join框架細粒度并行設計模式及方法

根據(jù)pdp和pdddp方法計算流程,歸納總結(jié)fork/join框架細粒度并行設計模式及方法:

step1數(shù)據(jù)準備。包括初始化參數(shù)以及設置狀態(tài)離散點數(shù)。

step2創(chuàng)建線程池以及設置計算閾值。

step3按串行流程執(zhí)行直至開始計算狀態(tài)離散點組合的返回值,進入并行計算。

step4利用fork/join并行框架按遞歸模式將父任務劃分為多個子任務,并平均分配到各子線程。

step5各子任務中的狀態(tài)離散點組合按動態(tài)規(guī)劃遞推公式求解運算,直至各子任務計算結(jié)束。

step6匯總合并各子任務的計算結(jié)果作為結(jié)果集,返回主線程。

step7從結(jié)果集中篩選出當前最優(yōu)解,并繼續(xù)按方法串行流程執(zhí)行直至計算結(jié)束,并銷毀線程池。

fork/join框架細粒度并行設計模式見圖6。

(1)基礎信息

為了驗證pscwaga、pahpso、pdp、pdddp方法的并行效率,以梯級水庫群年發(fā)電量最大模型(見《具體實施方式》)作為計算實例,并根據(jù)各方法的優(yōu)化特性,選擇不同的調(diào)度對象(參與優(yōu)化的水庫群)進行測試,用于測試的調(diào)度對象為紅水河梯級水庫群。水庫群拓撲結(jié)構見附圖7。用于測試的計算機cpu配置為intelxeone31245@3.30ghz(4核),測試狀態(tài)為“超線程”關閉。

(2)并行性能指標

加速比sp和效率ep是衡量并行算法性能的兩個常用指標,其數(shù)學表達式分別如下所示:

sp=t1/tp(1)

ep=sp/p(2)

式中:t1表示串行環(huán)境下算法執(zhí)行時間,s;tp表示p個內(nèi)核環(huán)境下算法執(zhí)行時間,s。

(3)測試方案

①pscwaga方法

參與優(yōu)化的水庫為魯布革、云鵬、天生橋一級、光照、龍灘和巖灘6座季調(diào)節(jié)及以上電站,并設置三組種群規(guī)模大小不同的方案進行仿真測試。各方案種群規(guī)模大小設置見表1。

表1pscwaga算法三組仿真方案種群規(guī)模大小

②pahpso方法

參與優(yōu)化的水庫為天生橋一級、光照、龍灘和巖灘4座季調(diào)節(jié)及以上電站,并設置三組種群規(guī)模大小不同的方案進行仿真測試。各方案種群規(guī)模大小設置見表2。

表2pahpso算法三組仿真方案種群規(guī)模大小

③pdp方法

參與優(yōu)化的水庫為龍灘和巖灘2座季調(diào)節(jié)及以上電站,并設置三組離散點數(shù)目不同的方案進行仿真測試。各方案離散點數(shù)目設置見表3。

表3pdp算法三組仿真方案離散點數(shù)目

④pdddp方法

參與優(yōu)化的水庫為天一、龍灘和巖灘3座季調(diào)節(jié)及以上電站,并設置三組調(diào)度周期(計算規(guī)模)不同的方案進行仿真測試。各方案調(diào)度周期設置見表4。

表4pdddp算法三組仿真方案離散點數(shù)目

(4)各方案并行結(jié)果

①pscwaga方法

pscwaga方法測試結(jié)果見表5。3個方案的最少耗時出現(xiàn)在4核環(huán)境下,分別為582s、881s以及1173s,比串行時間縮減了1583s、2425s以及3355s,最大加速比分別達到了3.72、3.75以及3.86,充分發(fā)揮了多核cpu的加速性能,顯著提高了算法的計算效率。

表5pscwaga方法各仿真方案不同多核環(huán)境下串并行結(jié)果對比

②pahpso方法

pahpso方法測試結(jié)果見表6。3個方案的最少耗時出現(xiàn)在4核環(huán)境下,分別為139.7s、263.9s以及382.7s,比串行時間縮減了363.4s、723.5s以及1075.9s,最大加速比分別達到了3.60、3.74以及3.81,充分發(fā)揮了多核cpu的加速性能,顯著提高了算法的計算效率。

表6pahpso方法各仿真方案不同多核環(huán)境下串并行結(jié)果對比

③pdp方法

pdp方法測試結(jié)果見表7。3個方案的最少耗時出現(xiàn)在4核環(huán)境下,分別為25.1s、91.5s以及187.5s,比串行時間縮減了64.1s、251.7s以及532.1s,最大加速比分別達到了3.56、3.75以及3.84,充分發(fā)揮了多核cpu的加速性能,顯著提高了算法的計算效率。

表7pdp方法各仿真方案不同多核環(huán)境下串并行結(jié)果對比

④pdddp方法

pdddp方法測試結(jié)果見表8。3個方案的最少耗時出現(xiàn)在4核環(huán)境下,分別為15.1s、362.3s以及928.4s,比串行時間縮減了6.7s、258.0s以及669.7s,最大加速比分別達到了1.80、3.48以及3.59,充分發(fā)揮了多核cpu的加速性能,顯著提高了算法的計算效率。

表8pdddp方法各仿真方案不同多核環(huán)境下串并行結(jié)果對比

(5)小結(jié)

1)通過pscwaga、pahpso、pdp、pdddp方法實例測試結(jié)果,采用fork/join多核并行框架,能充分發(fā)揮多核cpu并行性能,大幅度縮減計算耗時,顯著提高算法計算效率。

2)并行方法的計算規(guī)模越大,縮減計算耗時越多,并行計算的優(yōu)勢越明顯;而且隨著計算規(guī)模逐漸增大,加速比及并行效率逐步增大,加速比更加接近理想加速比。

對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。

此外,應當理解,雖然本說明書按照實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術方案,說明書的這種敘述方式僅僅是為清楚起見,本領域技術人員應當將說明書作為一個整體,各實施例中的技術方案也可以經(jīng)適當組合,形成本領域技術人員可以理解的其他實施方式。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
旌德县| 琼海市| 马尔康县| 沛县| 敦化市| 扎囊县| 湖口县| 柳河县| 阿拉善左旗| 文山县| 荣成市| 扶风县| 乡宁县| 乌拉特后旗| 拜泉县| 满洲里市| 龙陵县| 攀枝花市| 高州市| 祁连县| 紫金县| 达拉特旗| 宜城市| 新蔡县| 集安市| 广安市| 涿鹿县| 南靖县| 富顺县| 和平区| 铜山县| 阆中市| 宁南县| 民乐县| 手机| 东安县| 德安县| 潼南县| 南皮县| 泊头市| 巴楚县|