何楓 劉閔 楊鳳年 何文德
摘要:為了減少電氣工程師在復(fù)雜用電環(huán)境下的多臺(tái)變壓器之間負(fù)荷分配的計(jì)算工作量,本文采用Python語(yǔ)言,運(yùn)用背包算法,開發(fā)了Windows操作系統(tǒng)環(huán)境下用于多臺(tái)變壓器負(fù)荷分配的計(jì)算程序,輸入?yún)?shù)和輸出結(jié)果均采用Excel表格,將以往煩瑣的人工重復(fù)計(jì)算工作實(shí)現(xiàn)由計(jì)算機(jī)輔助完成,為多臺(tái)變壓器的負(fù)荷分配計(jì)算提供了新的思路和便捷方法。
關(guān)鍵詞:背包算法;Python;變壓器;負(fù)荷分配
中圖分類號(hào):TP311? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2021)28-0117-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
目前,在電氣工程項(xiàng)目中,對(duì)于將若干個(gè)負(fù)荷平均分配到多臺(tái)變壓器上這樣的計(jì)算問題,大多都是以Excel表格為基礎(chǔ),首先利用人工進(jìn)行負(fù)荷的初步分配,然后再來(lái)通過不斷地人工調(diào)整和優(yōu)化,以便達(dá)到最佳分配效果。然而,在負(fù)荷數(shù)量較少時(shí),上述方法尚不太影響工作效率,若負(fù)荷數(shù)量在四十個(gè)以上時(shí),通常需耗時(shí)半天以上,效率不高且勞神費(fèi)力,且很難達(dá)到理想效果,越來(lái)越難以適應(yīng)復(fù)雜用電環(huán)境的設(shè)計(jì)要求,若遇到極端情況,甚至可能無(wú)法得到變壓器容量和補(bǔ)償功率相對(duì)一致的結(jié)果,因此,利用計(jì)算機(jī)實(shí)現(xiàn)多臺(tái)變壓器負(fù)荷分配的輔助計(jì)算,把工程師從煩瑣復(fù)雜的重復(fù)計(jì)算工作中解放出來(lái)已是當(dāng)務(wù)之急。
本文采用Python編程語(yǔ)言,運(yùn)用背包算法,設(shè)計(jì)實(shí)現(xiàn)了Windows環(huán)境下的變壓器負(fù)荷分配的計(jì)算機(jī)輔助計(jì)算應(yīng)用程序,輸入?yún)?shù)用Excel文件導(dǎo)入,輸出結(jié)果用Excel文件導(dǎo)出,將以往繁重的人工計(jì)算工作交由計(jì)算機(jī)自動(dòng)完成,大大提高了工作效率。
1變壓器計(jì)算的主要影響因素
為確保變壓器能支撐負(fù)荷運(yùn)轉(zhuǎn),不至于因電流過大導(dǎo)致過熱損毀,變壓器運(yùn)行時(shí)的視在功率S通常要小于其容量的85%。設(shè)S的復(fù)數(shù)量為[S],虛數(shù)單位為j,那么:
[S=Sc.+?PT+j??QT]? ? ? ? ? ? ? ? ? ? ? ?(1)
其中[?P]為有功損耗,[?Q]為無(wú)功損耗,[Sc.]為變壓器的計(jì)算負(fù)荷。若變壓器掛載了n個(gè)負(fù)荷,那么變壓器的計(jì)算負(fù)荷[Sc.]為:
[Sc.=i=1nPi+j?(i=1nQi+?Qc)]? ? ? ? ? ? ? ? ? ?(2)
其中[Pi]和[Qi]分別為各負(fù)荷的有功功率和無(wú)功功率,[?Qc]為該變壓器無(wú)功補(bǔ)償?shù)娜萘俊S之?dāng)變壓器負(fù)載小于等于額定負(fù)載的85%時(shí),其功率損耗如下[1]:
[?PT=0.01Sc]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (3)
[?QT=0.05Sc]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (4)
另設(shè)變壓器負(fù)載的功率因數(shù)角為[θ],即[Sc.=(cosθ+j?sinθ)Sc],那么有:
[S=[cosθ+0.01+j?(sinθ+0.05)]Sc]? ? ? ? ? ? ? ? (5)
在實(shí)際應(yīng)用中,往往會(huì)調(diào)整無(wú)功補(bǔ)償容量[?Qc]的大小,以使變壓器的功率因數(shù)在0.95左右;另外由于設(shè)備限制,無(wú)功補(bǔ)償容量值只能在有限的幾個(gè)整數(shù)中選擇,若補(bǔ)償稍多,即使是功率因數(shù)達(dá)到了0.97,其對(duì)視在功率也只比0.95時(shí)差了2.1%,對(duì)整體影響較小,完全可以忽略輕微的過、欠補(bǔ)償帶來(lái)的影響,因此可以認(rèn)定:[cosθ≈0.95],這表示[Sc.]的實(shí)部和其模的比值就是[cosθ],即:
[Re(Sc.)Sc=i=1nPiSc≈cosθ]? ? ? ? ? ? ? ? ? ? ? ? ? ? (6)
結(jié)合之前[S]與[Sc]的關(guān)系式,得到:
[S≈β?i=1nPi]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (7)
其中:
[β=cosθ+0.01+j?(sinθ+0.05)cosθ]? ? ? ? ? ? ? ? ?(8)
而[β]是一個(gè)常數(shù),由此得出:變壓器的視在功率與其所帶負(fù)荷的有功功率之和基本成正比;即如果需要控制變壓器的視在功率,只需控制其所帶負(fù)荷的有功功率[1]。
2背包算法
2.1背包問題簡(jiǎn)介
背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價(jià)格,在限定的總重量?jī)?nèi),如何選擇,才能使得物品的總價(jià)格最高。對(duì)于最基本的情況,可以將背包問題敘述如下:
有N件物品和一個(gè)容量為V的背包。第i件物品的重量是w[i],價(jià)值是v[i]。求解將哪些物品裝入背包可使這些物品的重量總和不超過背包容量,且價(jià)值總和最大[2]。
2.2背包算法與變壓器負(fù)荷分配計(jì)算的關(guān)系
如果要將背包算法應(yīng)用于變壓器負(fù)荷分配計(jì)算,只需將變壓器的參數(shù)轉(zhuǎn)化為背包問題的參數(shù)。即將若干負(fù)荷分成兩組,使這兩組的負(fù)荷對(duì)各自變壓器產(chǎn)生的視在功率基本相同。即找到一種選取方法,在所有負(fù)荷中選出一些負(fù)荷,使它們的有功功率之和,盡可能地接近總有功功率之和的一半,這樣就能將所有負(fù)荷均衡分配到兩臺(tái)相同的變壓器上。
因此,可將變壓器的參數(shù)轉(zhuǎn)化為背包問題的參數(shù):
1)將所有負(fù)荷的有功功率之和的一半作為背包大小;
2)將每個(gè)負(fù)荷視為背包的物品;
3)將負(fù)荷的有功功率同時(shí)視為背包物品價(jià)值和重量。
此外,參數(shù)轉(zhuǎn)化過程中變壓器負(fù)荷應(yīng)進(jìn)行參數(shù)取整和倍數(shù)調(diào)整。
3計(jì)算能力的限制與程序算法流程
將背包算法理論應(yīng)用到變壓器負(fù)荷分配計(jì)算,還應(yīng)當(dāng)考慮計(jì)算能力的限制、變壓器計(jì)算要求的限制。
3.1背包算法的選擇
背包算法中,設(shè)物品個(gè)數(shù)為n,背包容量為W。那么,進(jìn)行一次背包計(jì)算,或者說得到一個(gè)抓取結(jié)果,大致需要[(n+1)?W]次加減計(jì)算,且利用背包算法得到的解,基本都不是所有可能解中的最優(yōu)解。如果物品數(shù)量少,用枚舉法就能很快得到最優(yōu)解。但是,枚舉法的計(jì)算量會(huì)隨著物品個(gè)數(shù)增加呈指數(shù)級(jí)增長(zhǎng);而背包算法的計(jì)算量和物品數(shù)成線性關(guān)系。因此,在物品數(shù)較大的時(shí)候應(yīng)選擇背包算法,數(shù)量小的時(shí)候使用枚舉法更合適。根據(jù)工程經(jīng)驗(yàn),兩臺(tái)800~1250KVA變壓器的負(fù)荷分配使用背包算法計(jì)算的負(fù)荷數(shù)量臨界值約為20。
3.2計(jì)算精度的取舍
背包算法的計(jì)算量大約是每次[(n+1)?W]次加減計(jì)算,而計(jì)算時(shí)應(yīng)先將變壓器負(fù)荷值取整。然而取整涉及計(jì)算量,因?yàn)樵黾右晃蝗≌麜r(shí)的有效數(shù)字,那么計(jì)算量會(huì)增大10倍;有效數(shù)字取得太少,計(jì)算精度就會(huì)下降。就現(xiàn)有的主流個(gè)人計(jì)算機(jī)的計(jì)算能力下,背包重量取四位有效數(shù)字是尚可。注意,若背包重量的有效數(shù)字變化,物品重量也應(yīng)進(jìn)行相應(yīng)的調(diào)整,否則計(jì)算會(huì)出錯(cuò)。
3.3通過隨機(jī)物品序列產(chǎn)生不同結(jié)果
初步測(cè)試發(fā)現(xiàn),在處理了應(yīng)合并的負(fù)荷后,經(jīng)過單次背包計(jì)算無(wú)法得出令人滿意的結(jié)果。因?yàn)樵谧儔浩髫?fù)荷分配時(shí),除了變壓器視在功率,還有變壓器的無(wú)功補(bǔ)償容量要考慮[3],而背包算法只能控制視在功率,這樣就造成算出的結(jié)果不一定滿足無(wú)功補(bǔ)償容量的要求。
進(jìn)一步測(cè)試發(fā)現(xiàn),背包算法的結(jié)果,還與其物品的排列序列有關(guān),因?yàn)楸嘲惴ㄊ前错樞驅(qū)ξ锲愤M(jìn)行計(jì)算。如果需要得到令人滿意的結(jié)果,可以通過生成隨機(jī)序列的方法改變物品排列序列,讓背包算法產(chǎn)生多個(gè)結(jié)果,然后對(duì)這些結(jié)果進(jìn)行比較,最終選擇一個(gè)最符合要求的結(jié)果。
3.4程序流程
應(yīng)用程序采用控制臺(tái)輸入命令啟動(dòng),初始數(shù)據(jù)輸入和結(jié)果的輸出都通過Excel文件實(shí)現(xiàn),程序流程圖(枚舉法的計(jì)算流程省略)如圖1所示。從Excel文件導(dǎo)入初始數(shù)據(jù)后,首先對(duì)負(fù)荷進(jìn)行分類,要求分配在同一變壓器的負(fù)荷要合并成一個(gè),然后求出負(fù)荷個(gè)數(shù)的總和、總有功功率和總無(wú)功補(bǔ)償容量,若負(fù)荷個(gè)數(shù)小于等于臨界值20,使用枚舉法計(jì)算;若負(fù)荷個(gè)數(shù)大于臨界值20,使用背包算法計(jì)算。生成隨機(jī)負(fù)荷序列用于背包計(jì)算的物品抓取,完成一輪抓取后求出本次背包中的無(wú)功補(bǔ)償容量,然后判斷該值是否符合設(shè)計(jì)要求,符合則計(jì)算完成;不符合進(jìn)入下一輪,這時(shí),首先看剛得出的無(wú)功補(bǔ)償容量比之前保存的值更好嗎?若更好則用新值替換舊值。程序進(jìn)入重新生成隨機(jī)負(fù)荷序列模塊,開始新一輪的計(jì)算,如此循環(huán)往復(fù),直到無(wú)功補(bǔ)償容量值符合設(shè)計(jì)要求,或計(jì)算次數(shù)已達(dá)到最大閾值,程序才會(huì)停止執(zhí)行。
4應(yīng)用實(shí)例
應(yīng)用程序采用Python語(yǔ)言開發(fā),可以從excel表格獲取輸入數(shù)據(jù),將數(shù)據(jù)整理歸類并計(jì)算后再用excel表格輸出計(jì)算結(jié)果,可根據(jù)實(shí)際的負(fù)荷數(shù)量選擇使用枚舉法或者背包算法。程序的臨界數(shù)量值為19,最大背包計(jì)算次數(shù)為1000次,當(dāng)兩組變壓器容量與無(wú)功補(bǔ)償容量分別相等時(shí),會(huì)終止計(jì)算并輸出結(jié)果。
4.1測(cè)試項(xiàng)目概況
選用某住宅小區(qū)項(xiàng)目做測(cè)試。該小區(qū)有2有個(gè)專用配電房,1#配電房共有65個(gè)出線回路,總有效計(jì)算負(fù)荷為1324kW;2#配電房共有54個(gè)出線回路,總有效計(jì)算負(fù)荷為1297kW。
將程序運(yùn)行2次即可得到2個(gè)配電房的計(jì)算結(jié)果。測(cè)試電腦CPU型號(hào)為i7-9700k,內(nèi)存為8GB。
4.2運(yùn)行結(jié)果
1#、2#配電房測(cè)試計(jì)算分別用時(shí)2.1秒和4.3秒,測(cè)試結(jié)果符合設(shè)計(jì)要求,與人工計(jì)算結(jié)果高度接近。以下為1#配電房測(cè)試結(jié)果如圖1和圖3所示。
5結(jié)語(yǔ)
隨著信息技術(shù)的飛速發(fā)展,很多復(fù)雜的工程計(jì)算都可以用計(jì)算機(jī)輔助完成。采用Python語(yǔ)言、利用背包算法設(shè)計(jì)實(shí)現(xiàn)的變壓器負(fù)荷分配計(jì)算應(yīng)用程序,不僅可以對(duì)兩臺(tái)容量相同的變壓器進(jìn)行負(fù)荷分配,而且可通過給出合適的背包容量,并添加適當(dāng)?shù)南拗茥l件,還能對(duì)兩臺(tái)容量不同的變壓器,或者多臺(tái)變壓器進(jìn)行負(fù)荷分配,可以大大節(jié)省設(shè)計(jì)時(shí)間,目前已處于試用階段,并在持續(xù)完善和優(yōu)化中。試用結(jié)果表明,該軟件使用方便,性能較穩(wěn)定,有較大的推廣應(yīng)用價(jià)值。
參考文獻(xiàn):
[1] 邱關(guān)源. 電路[M]. 北京:高等教育出版社,2006.
[2] 謝紹華. 背包問題(上)——算法分析[J]. 中文信息:程序春秋,2002,(8):25-26.
[3] 中國(guó)航空規(guī)劃設(shè)計(jì)研究總院有限公司.工業(yè)與民用供配電設(shè)計(jì)手冊(cè)(第四版)[M].北京:中國(guó)電力出版社,2016.
【通聯(lián)編輯:李雅琪】