干式變壓器的優化設計研究
發布時間:2019-07-13 17:18:19來源:
關鍵字標準棋板庫干式交壓優化煽程1前言干式變壓器在耐火能力、適應環境能力和環保能力方面與傳統的油浸式變壓器相比有突出優點,它具有適應環境能力強、超銘牌額定值運行能力強、局放低、環保性好、生產無須澆注設備與模具及初期投資低等特點,己基本上在室內配電中取代油浸式變壓器。
為了提高經濟效益,節約用料,比較大限度降低成本,必須對干式變壓器的設計作優化。傳統的手工優化計算效率低,耗費的時間長,且很多地方依賴經驗數據,覆蓋面小,容易遺漏比較優方案。軟件實現優化工作就可以彌補上述缺點,做到真正的快速、比較優。把手工計算與軟件相結合,可以驗證手工計算方案的準確性,評估比較優程度,另一方面也減少了軟件優化設計的時間。
本文介紹了干式變壓器優化設計軟件開發過程中通過采用標準模板庫來封裝數據存儲細節,減輕編程工作量,縮短程序運行時間,使軟件開發者可以集中精力于變壓器優化設計本身。
2干式變壓器優化的特點干式變壓器工作原理與油浸式變壓器并無區別,差異在于使用的絕緣材料、采用的絕緣結構、制造工藝,且結構更簡單。
干式變壓器的優化設計是一個離散的非線性規劃問銓,一般采用循環迪歷法進行優化設計,即把各變童、各結構的所有可能的取值進行排列組合,用循環的辦法對所有可能的組合進行可行性判斷,再對滿足可行性要求的點計算目標函數,根據目標函數的大小進行篩選。從而得到比較優解循環迪歷法需要對所有可能的組合進行計算、存儲并比較判斷,所以非常耗時間*在設計過程中,循環變童的選取、循環上下界的確定、技術數據的計算過程中會處理到大量的表或者以表的形式反映的知識關系。這些表中元素可能是實數、實數關系、函數表達式;表中元素的下標索引不僅僅是連續的自然數序列,也可以是一組數據:表不是滿的,即其中存在空元素w.另外在設計中,要存儲很多種類的數童難以事先確定的自定義對象,例如變壓器繞組、一定條件下線可行結構*對這些問題一般不采用數組存儲而是采用動態內存分配和鏈表相結合的辦法m,它能靈活而不失效率地解決數目在運行期才能確定的對象存儲問題,但是編程的工作量大,且容易造成內存泄漏。頻繁的分配釋放內存還會造成大量內存碎片,降低了程序執行的效率。另外,若存儲的是一組對象的映射,采用鏈表實現比較復雜,且操作不方便,例如:在存儲導線標準數據時,鏈表中的每個元素又包含了三個子元素:若要對遞增不均勻的導線厚度進行循環,就要增加一個導線厚度序號的量,通過導線厚度序號的循環實現導線厚度的循環這樣處理既不直觀又降低了效率。
3基于STL的優化程序設計3.1標f模板庫簡介templatelibrary,簡稱STL〉是C++標準函數庫的一部如所示它廣泛使用泛型技術,并基于通用性和效率性的基本思想,實現了與類型無關的容器、與容器無關的算法。
種據構各數結種用法各通k容器算法迭代器:容器、算法和迭代器的關系在STL中,容器分為兩類:序列、關聯容器。前者包括向量類、鏈表類、雙向隊列類等;后者包括映射類、集合類等。其中的每個都是模板類,可以存儲自定義類型的對象。各個容器實現下標操作、插入刪除、壓入彈出等公共操作的復雜度不一樣,效率也不盡相同。各個容器還提供了針對自己的特殊操作。效率和特殊操作的需要是選取使用何種容器的標準。
通用算法是一組可以作用在不同容器上的模板函數它為容器提供遍歷、復制、排序、找、確定大小等基本操作。通用算法使用函數對象141作為參數,函數對象定制了算法對容器中元素所采取的操作。
迭代器是連接容器和通用算法的紐帶,是指向容器中元素指針的一種抽象,如所示*通過迭代器使用通用算法時就不必關心容器中具體的數據類型,實現了算法和數據結構相分離,增強了標準模板庫的通用性。
map容器及其繼承與應用以map容器的形式存儲在優化設計中涉及的表格形式數據,具有高效、簡單的優點。
nap容器map容器屬于關聯容器,又稱為關聯數組,保存的是類型為Key的關鍵碼和類型為T的映射值的對偶。
map中的關鍵碼Key具有唯一性,通過關鍵碼的比較來保持內部元素的有序性,且提供了基于關鍵碼的元素快速提取*碼執行關聯找,返回與之對應的映射值。
如果不存在這個關鍵碼,一個具有該關鍵碼的默認map元素被初始化。
插入刪除操作,能靈活地插入一個元素或者插入另一個容器中的一組元素,刪除一個或者一個區間或全部的元素。
容器內部會自動根據當前容器的大小進行內存調整,不需要程序干預,因而:map容器具有比數組、鏈表更先進的數據存儲機制,而且存儲的對象的類型是廣義的,選用map容器作為變壓器設計中的各種表的實現是合適的。
但是如前所述,map容器的下標操作、插入操作與我們通常意義上的這些操作有區別:而且在變壓器的設計中涉及的表操作除了根據關鍵碼詢映射值,還要求直接對己存在的關鍵碼詢,判斷一個值是否是關鍵碼;若反映的是離散關系,則要尋找與所給值比較近的關鍵碼,若反映的是連續關系,則要用插值法計算對應的映射值。因此有必要以map容器為基類,派生出滿足上述功能的新的容器類TranTable.結合關聯容器map,可以這樣描述變壓器設計中的表:表是關鍵碼和其映射值的集合,是一個二維表,且具有以下的特性:*關鍵碼的元素可以是一個數值,也可以是一組數值,表的一個完整的關鍵碼所含數值元素的個數稱為表的維數;*映射值的元素可以是數值、函數關系或者其他對*個完整的映射值也可以多* *根據關鍵碼可以找到對應的映射值。
變壓器設計中所有的數據關系表都可以轉化為二維表。其中,一維表是二維表的特例,即令二維表中的任一維為常量,二維表就退化為一維表:超過二維以上的多維表可以對其關鍵碼作適當的分割,使之轉換為多個二維表的組合,根據上述要求由map容器派生一模板類TranTable下面是TranTable類的聲明部分的主要代碼://表的關鍵碼類型tablekey //表的映射值類型Val作為模板參數//存放第一維鍵//重載下標操作符//插入操作//判別該關鍵碼存在否bool //關鍵碼是否在己存在的關鍵碼范圍內//尋找與該關鍵碼比較接近的關鍵碼//根據關鍵碼插值尋找映射值(Insert)、刪除(Erase)搡作:在選擇合適的標準模板庫算法的基礎上,能對表進行靈活的詢操作;并且重載了〉>和<〈運算符,封裝了對其元素對象必要的磁盤操作功能,實現了容器中的數據與數據文件或數據庫的串行化*設計中涉及的各種類型的表。
例1:定義導線標準它恰好是二維表,其關鍵碼(線厚a、線寬b)是一對浮點數,映射值(導線截面積s)是一個浮點數。定義導線標準表如下:3.1vector容3及其應用統的鏈表和數組。存儲優化過程的中間結果。
可以看作對C++數組的擴展。其特出優點是:*高效的元素隨機訪問操作;變化。
使用vector容器://m是容器初始大小可以代替鏈表結構存儲變壓器設計中動態產生的各中間方案。
在一個電磁方案計算完畢后,只要使用vector的成員函數pushback(),該方案就會被添加到容器末尾*與此同時vector容器會在內部自動改變容器的大小,不必手動動態分配、釋放內存*為了在內存管理上兼顧效率,不必每次增加一個元素就觸發vector分配一個元素大小的內存,替代辦法是:在到達vectoi容器容ft的上界時一次分配多個元素大小的內存,resize(n)://n是一次增加的大小減少頻繁的內存分紀操作,以小的空間的損失換取大的效率提高。
當可行方案計算完畢后,要對它們按設定的目標函數:原材料成本MaterialCost、運行效率、十年變電成本采取加權進行排序。權重的分配在于各目標函數在總體評估中的重要程度。利用標準模板庫算法,結合實現比較功能的函數對象對加權后的總體評估排序:其中,3個目標函數分得的權重分別為:1、0、0,即只按原材料成本進行優化排序。比較函數對象objFunLess定義如下://各個目標函數的權值表丨:結果比較廠方數據優化數據國標數據硅鋼片重4算例SG10-630/10干式變壓器性能優化設計在結構上,高壓線圈采用連續式,低壓線圈采用箔式。優化中的循環變量總個數為14,各變置可能的變化取值從2個到22個不等。優化中遍歷的數據維數很大。
(1)對導線數據進行遍歷在優化設計時,使用迭代器實現。首先分離TranTable 代器在導線寬度范圍確定之后就可以對該范圍內的導線寬循環:卜……//§關作丨使用迭代器可以直接對線寬循環,否則不得不增加一個導線寬度序號的臨時變量;通過靈活組合使用STL算法,可以實現復雜的找、排序、復制等通用操作。避免我們編寫相對低效的這些函數,(2)方案選擇對計算出的所有可行方案按銅線和硅鋼片的總價格排序,表1是比較優方案數據與原廠方使用方案數據以及國標數據的比較:Pentium4主頻為1.6GHz的PC機上對vector序列mT中存儲的7000多個初步可行方案排序,通過嵌入匯編的辦法多次測量該過程耗費的時間求平均,僅經歷1.310 X109個時鐘周期,耗時819毫秒。使用標準模板庫算法,只要提供一個實現比較功能的函數對象。就能實現完整高效的排序功能。可見在變壓器設計中采用STL是高效的、可行的。 5結論在面向對象的變壓器優化設計軟件開發中,使用標準模板庫容器可以大大減輕程序中數據管理的工作,使我們能更好地致力于變壓器優化設計本身的研究。 在構建實現具體操作的函數對象的基礎上,使用合適的標準模板庫算法。能靈活地對容器中的元素進行各種操作,提高了程序運行的效率和程序的可讀性,減少了軟件開發的周期。此算法可以推廣到其他涉及大量數據表格的應用中。