季一木 李 航 堯海昌,3 陳 忱 王汝傳,2
1(南京郵電大學計算機學院 江蘇 南京 210023) 2(南京郵電大學江蘇省無線傳感網高技術研究重點實驗室 江蘇 南京 210023) 3(南京工業職業技術學院計算機學院 江蘇 南京 210023)
近年來,能源可持續問題的重要性日益彰顯。家用分布式光伏并網發電系統是發展可再生能源的關鍵因素[1-2]。光伏發電技術也逐步受到企業界和家庭用戶的重視,在通常光伏發電項目上,一個企業或個人為了完成項目部署,前期需要實地考察。考察包括光伏系統部署地點是否符合規范,部署地點光照、風速、氣候等條件是否合適,考察完外部條件后還需要預估項目部署成本,在客觀條件不斷變化的情況下無法科學準確預估成本,亦無法有效節省部署成本。同時,部署項目的運維工作也給工作人員帶來了巨大難題,傳統的項目記錄方式并不規范,具有易損易失性。為了解決上述問題,響應國家“互聯網+”的號召[3],我們開發了一款企業級的光伏發電選配系統。本產品主要面向企業用戶,引入百度地圖和NASA發布的氣候信息輔助用戶完成光伏系統的實地選址、組件選擇、部署設計,針對不同地區的太陽輻射資源和日照時數,分別作不同部署方案。設計了最優布線算法最大化節省企業開支,并通過科學手段幫助企業預估資金等安裝需求。同時針對整個光伏選配系統所需的數據信息設計了具體的數據庫表結構,形成一個系統的、規范的關系型數據庫。實時記錄項目的各種變化,完成數據的持久化操作[4]。開發了一個用戶體驗良好的系統數據錄入和項目查詢展示模塊,交互部分設計符合當下頁面習慣,整套軟件系統做到了規范、易用、簡潔、穩定。
本系統主要由四個部分構成,分別是:系統管理、后臺組件管理系統、光伏項目設計系統、公共操作系統。系統管理實現對本系統全部用戶的登錄鑒權和注冊授權服務。后臺管理系統實現對本系統已注冊或未注冊用戶帳戶管理、權限管理、系統組件管理和報價管理。項目設計系統實現光伏系統的實地選址、組件選擇、部署設計、選取最優布線方案、預估資金的功能。公共操作系統實現給本系統涉及的清單、方案列表的PDF預覽下載功能和EXCEL下載功能,系統總體功能如圖1所示。

圖1 系統總體功能
為方便企業用戶遠程使用,本系統采用B/S架構,通過Apache Tomcat容器將應用部署在云服務器上,用戶通過瀏覽器可直接訪問。服務端采用Spring MVC+Mybatis+Spring的最新Java技術。其中,Mybatis位于持久層,完成數據的持久化操作和讀取操作,Spring MVC處于控制層,實現對前臺請求的調度。采用Spring Framework管理所有系統對象的創建與銷毀。該設計模式的可重用性、可維護性極高,部署方便,最重要的是可以使項目具體實現的業務邏輯、項目的數據部分和項目實際的界面展現進行解耦,且可以將業務邏輯聚集到一個部分里面,符合當下系統設計“低耦合,高內聚”的思想。系統部署設計如圖2所示。

圖2 系統部署設計
本系統使用Mysql數據庫,建立了十多張互相關聯的數據庫表管理全局所有的數據,并設計合理的數據庫組合索引提高查詢效率。系統的核心表主要有9個,包括:sys_user,主要存放光伏選配系統用戶的基本信息以及管理員的基本信息;project,存放所有的項目信息;sys_role_permission,用來存放后臺管理員用戶的菜單權限列表;sys_permission,存放后臺系統的所有菜單;material_list,存放所創建的項目對應的物料的基本信息;log,存放后臺操作時產生的操作日志;component,存放光伏板組件的一些信息;cdkey,主要存放生成的cdkey以及cdkey的狀態;NASA,用來存放收集的NASA全球氣候數據信息。
根據系統四個部分的作用劃分,本系統具體有10個主要功能模塊。系統管理部分包括登錄注冊模塊;后臺管理系統包括用戶系統管理模塊、組件系統管理模塊以及日志系統管理模塊;項目設計系統包括新建系統項目、編輯修改系統項目、項目查詢以及物料清單查詢修改模塊;公共操作系統包括系統報告PDF預覽和下載模塊以及物料清單EXCEL下載模塊。系統整個功能流程如圖3所示。

圖3 系統功能流程
1.3.1 登錄注冊模塊
登錄注冊模塊作為系統管理的核心,負責后臺管理員用戶和項目設計系統用戶的登錄鑒權和退出管理,根據不同的用戶判定本次登錄、退出的有效性,并記錄其登錄、退出的日志。此外,登錄注冊模塊還負責后臺管理員用戶和項目設計系統用戶的修改密碼工作,并記錄其操作日志。
1.3.2 用戶管理模塊
管理員進入后臺系統的用戶管理模塊可以查看系統當前的新注冊用戶,并激活新用戶賬號。也可以重置密碼、遷移用戶賬戶,同時記錄操作日志。管理員進入用戶管理模塊的授權管理頁面下,可以創建子賬號并且給不同的賬戶授予不同的操作權限。該模塊還提供生成激活碼功能,項目設計系統的用戶通過激活碼可以激活賬號。
1.3.3 組件/日志管理模塊
后臺組建管理模塊可以增刪改查項目設計系統可選的光伏組件、逆變器組件,管理員進入后臺管理系統的組件管理模塊,可以批量修改各個組件的報價。日志管理模塊記錄下后臺管理系統用戶的所以操作記錄,方便企業日常運維管理。
1.3.4 新建項目模塊
光伏選配系統的用戶通過新建系統項目模塊,可以完成具體光伏發電系統的部署設計。其中包括記錄項目名稱、項目聯系人、電話;通過第三方百度地圖的引入精確定位項目部署地址,查看項目部署地周邊配套設施;根據NASA官方提供的氣候數據信息,可以方便用戶獲取項目部署地的光照條件、風速條件等外部信息。確定項目部署地址后,用戶可以選擇要部署的光伏板、逆變器的型號和數量以及選擇具體的部署規劃,新建項目模塊根據用戶選定的光伏版和逆變器數量和部署方式通過最優布線算法實現最短路徑布線。最后根據用戶之前步驟會生成項目報告以及物料清單PDF簡圖供用戶查看。以上所有操作都會記錄在數據庫完成數據持久化存儲。
1.3.5 查看/更新項目模塊
用戶可以編輯修改項目的基本信息,包括:項目名稱、部署地址、聯系人、聯系電話等;可以編輯修改項目的設計方案,包括:系統類型、組件安裝角度、安裝點類型、光伏板型號等;可以編輯修改項目的組件排布設計,通過本系統的算法實現最優布線;可以查詢賬戶所有的項目,并進一步查看單個項目的詳細信息,包括通過NASA數據庫查詢計算出來的項目相關的信息。
1.3.6 公共下載模塊
提供本系統所有項目的物料清單、組件接線圖和系統分析報告的PDF預覽功能,同時提供本系統所有項目的物料清單、組件接線圖和系統分析報告的PDF、EXCEL下載功能。
本系統創新性地提出了一種光伏板最優布線算法,解決了傳統光伏板部署時的地理困難、預估困難、排線困難等一系列問題。同時,由于不同用戶使用習慣的差異,以及不同時段系統訪問并發量的巨大變化,導致訪問數據庫的頻率也存在差異。若整個連接池使用固定參數,則整個系統在數據庫處理方面無法達到最優性能[5]。為此提出一種實時生成的動態參數技術,提升數據庫操作的性能。服務器根據不同時間段連接池的負載情況以及整個數據庫服務器的負載情況實時計算出服務器適合的最大連接數和最小連接數,保證系統的性能達到最優。另外,本系統基于第三方開放應用百度地圖API實現了在線實地部署項目的功能;基于網絡爬蟲技術實現獲取NASA數據庫不同地區(精確到經緯度)的風速、日照等氣候數據,這些數據將被用于提高部署效率,降低部署成本,優化部署方案。
2.1.1 算法背景
傳統光伏矩陣的線路規劃需要工程師手動繪圖,這種方式耗時且依賴于工程師的經驗,在小規模光伏矩陣架設中沒有體現出巨大劣勢。但隨著光伏產業的蓬勃發展,光伏板架設也逐步往集群化發展,一個光伏板集群可能需要多個逆變器布設多條線路且一個光伏板只能連通一條線路。傳統的局部路徑規劃算法無法滿足多目標小最短路徑的高效計算,因為一條線路的布設過程會對其他線路造成很大影響,在單條線路達到最短即局部最優的情況下,可能會造成另外一個局部路線無法連通或者性能極差的情況,因此考慮使用貪心策略[6]。只有在逆變器剩余可負載光伏板個數為0或者該行所有光伏板都已被連通的情況下,才允許向下或者向上連接?;谶@個貪心策略快速連通光伏板,然后在遇到向下情況時,利用分治法實現局部最優。本系統基于動態規劃算法[7]和貪心策略設計了光伏板集群最優布線算法。該算法可精準快速地根據現有的光伏板集群布局以及光伏板型號選擇最優逆變器組且計算出最優布線策略,以解決上述背景技術中提出的問題。
2.1.2 算法詳細步驟
1) 將光伏板分布圖以及光伏板型號輸入逆變器組分配模型,根據不同逆變器的功率、電流、電壓計算出需要最優的逆變器組,以及每一個逆變器上可以連接的光伏板數量。
2) 根據步驟1中計算出的逆變器組分割光伏板集群并存儲,同時存儲不同的分割策略存儲以便回溯。
3) 連接第一個不為空且存在未連通光伏板的行,如果此時逆變器能連接的光伏板數量少于該行上未連通的光伏板數量,則從入口往右連接光伏板,直至逆變器能連接的光伏板數量為0,此時選擇一個新的逆變器,跳轉到步驟6;否則連滿該行所有光伏板,然后根據下一行光伏板的分布選擇線路下折的位置,跳轉到步驟4。
4) 從入口位置開始向左連接光伏板直到該逆變器剩余能連接的光伏板數量為0,選擇一個新的逆變器,然后跳轉到步驟5;剩余光伏板大于0則先連滿該行上的全部光伏板,然后跳轉到步驟3。
5) 將該行和下一行還未連通的前M列拓展為一個2×M的二維數組,如果此時逆變器能連接的光伏板數量大于這個2×M二維數組中光伏板數量,則使用動態規劃最短路徑算法規劃出在該數組中連通所有光伏板的最短路線,然后跳轉到步驟3;如果此時逆變器能連接的光伏板數量小于這個2×M二維數組中光伏板數量,優先連滿該行的光伏板,再連接下一行的光伏板,直到逆變器剩余能連接的光伏板數量為0,跳轉到步驟6。
6) 將該行的前k列(上一行已經連接的列)連滿,再將該行和上一行還未連通的列拓展為一個2×T的二維數組,如果此時逆變器能連接的光伏板數量大于這個2×T的二維數組中光伏板數量,則根據下一行光伏板的分布來選擇線路下折的位置,使用動態規劃最短路徑算法規劃出在該數組中連通所有光伏板的最短路線,如圖4,然后跳轉到步驟4;如果此時逆變器能連接的光伏板數量小于這個2×T的二維數組中光伏板數量,優先連滿上一行行的光伏板,再連接該行的光伏板,直到逆變器剩余能連接的光伏板數量為0,跳轉到步驟6。
此時期主要以防治白粉病和地下紅蜘蛛為主。白粉病主要傷害小麥葉片,在田間要做到早發現早防治??刹扇娛┺r藥、殺蟲劑的化學防治措施。用藥量可根據病情的嚴重程度和紅蜘蛛的數量來確定。
7) 當出現一些線路無法走通的情況,需要回溯重現選擇逆變器,如果重現選擇逆變器也無效,則選擇另一種分割策略。
該算法時間復雜度低,對于大規模光伏集群布線算法仍保持較高的效率,隨著實驗數據的增多,算法動態調參部分的參數新能越來越優,可以在時間復雜度,施工難度,用料量上達到綜合最優。
整個算法的流程如圖4所示。

圖4 最優布線算法流程
在光伏板布線中需要考慮的參數主要有:光伏板型號、逆變器組、導線長度等。其中在具體的光伏項目部署前需要實地考察,這增加了項目的部署周期,加大了部署成本,加劇了工程師的工作負擔,帶來了一系列的問題。為了解決這個問題,本系統通過在線調用第三方百度地圖實現了實時在線的地址選取。通過光伏板集群最優布線算法,可以精準高效地根據現有的光伏板集群布局以及光伏板型號選擇最優逆變器組并計算出最優布線策略,解決了在集群規模下采用手工標注難度巨大且無法保證布線策略在時間復雜度、負載壓力、施工難度、用料量上難以達到綜合最優的問題。
2.2.1 參數定義
(1) maxGLinkConnection:光伏選配系統數據庫連接池所能允許的連接數的上限。
(2) minGLinkConnection:光伏選配系統數據庫連接池所能允許的連接數的下限。
(4) returnConnectionTime:預設收回空閑資源的時間,用戶持有的連接若超過該時間沒有連接交互則強制收回該連接資源。
(5) connectionUsedRate:用戶對連接資源的利用率,使用當前給用戶分配的連接數和整個系統總的連接資源的比值計算。
(6) connectionReqFailRate:用戶連接請求失敗率,使用給定的單位時間段內用戶連接請求的失敗次數和請求總次數的比值計算。
最小連接數和最大連接數是數據庫連接池技術的兩項重要參數[8-10]。光伏發電選配系統數據庫的連接池的參數根據系統用戶的活躍程度實時動態計算,以此來提高系統吞吐量。每個客戶端(瀏覽器)在使用本系統服務的生命周期內會產生一些用戶無關,但是和系統性能相關的數據,數據庫連接處理服務器將根據這些數據計算出每個客戶端的最大連接數(maxGLinkConnection)和最小連接數(minGLinkConnection), 并把這些情況發送主服務器,據此來分配每個客戶端的數據庫連接資源,即設置數據庫連接池最大和最小連接數。這樣,整個數據庫連接處理服務器就可以保證數據庫處理的最佳性能。另外,由于每個用戶都有區別明顯的個性化操作習慣,數據庫連接處理服務器依據這些用戶習慣可以更準確地計算每個客戶端的數據庫連接池的參數。
2.2.2 連接池資源管理
在光伏選配系統服務器開啟時,數據庫連接池會依據設置的默認最小連接數minGLinkConnection創建連接。當用戶需要運用數據庫操作時,光伏系統首先會向數據庫的連接池中發起一個連接請求。如果此時的數據庫連接池中還有可供使用的連接,則將空閑連接分配給請求的用戶,等待用戶處理完數據庫操作請求后,該連接將歸還至數據庫連接池。如果用戶的數據庫操作請求到達時,數據庫連接池中并沒可供使用的閑置連接,則數據庫連接池會計算已分配的數據庫連接數是否達到默認設置的最大連接數maxGLinkConnection,如果還沒達到預設的最大連接數,系統會分配給該請求進程一個新的連接。如果已經達到允許的最大連接數,則該用戶的請求必須等待一定時間(獲取連接的超時時間getConnectionOutTime),如果等待間隔超過該時間,則連接獲取失敗。如果在獲取連接請求超時時間內有其他用戶釋放了自己的連接,則將該連接資源分配給正在等待連接的用戶。光伏系統還需另外再開啟一條監控線程,用于檢測當前已經被分配的連接的使用詳情。若超過預設時間returnConnectionTime的連接一直沒有用戶交互,則數據庫連接池將強制性地執行連接收回操作。這樣可以避免某一個已完成數據庫操作的進程過長時間占據連接,進而提高連接利用率[11-12]。
但是上述連接池管理技術在性能上依然存在缺陷,在數據庫操作效率上還可以提高。考慮到在光伏發電選配系統的實際使用中,不同用戶在使用習慣上的差異性,以及系統使用高峰期用戶量和低峰期用戶量的巨大變化會導致每個客戶端對數據庫操作頻率的差異性,如果系統使用絕對固定的連接池參數,將影響數據庫處理方面的操作,因此整個選配系統的性能無法達到最優。為了進一步優化整個光伏選配系統的數據庫操作效率,可根據不同時段訪問量和每個用戶操作數據庫的頻率,實時、動態可變地設置最優的連接池參數。
2.2.3 數據庫連接池優化策略
為了實時并且動態地計算每個用戶端瀏覽器的數據庫連接池參數,需構建額外的數據庫連接處理服務器作為調度中心,它負責對各個客戶端在一定周期內的請求率進行統計。若某時間段請求率較低時,則服務器收回相應連接資源,同時將記錄資源和時間的變化關系用于進一步優化分析使用,結構如圖5所示。

圖5 動態連接池結構
當服務器初始化時,數據庫連接調度服務器根據該時間段并發量預估情況為系統設置一組初始的數據庫連接池參數。
在系統的實際運行過程中,需要動態地計算所有用戶的資源利用率connectionUsedRate和連接請求失敗率connectionReqFailRate。數據庫連接調度服務器實時記錄這些數據,同時記錄該時間段內整個數據庫連接池的資源使用情況,并基于這些數據做壓力分析,得到系統在當前環境下最快的數據庫連接參數。在系統實際使用中,數據庫連接調度服務器會分析各個時段下用戶請求連接的成功率和失敗率,必要情況下會剝奪一些成功率非常高的用戶的連接資源分配給連接成功率較低的用戶,以此實現全系統用戶請求資源的負載均衡。極端情況下,如果超過一半以上的用戶均出現連接請求失敗率過高的情況,則該時段極有可能是光伏選配系統訪問高峰期,數據庫連接調度服務器需要記錄該時段壓力情況,下次在該時段到來前會提前反饋給系統服務器,已請求額外資源開啟更多的數據庫連接降低用戶連接失敗率。
傳統的光伏項目在部署的時候需要預先進行實地考察,考察的因素包括部署地點的風速、光照強度、天氣狀況等氣候類型。這些繁瑣的步驟增加了項目的部署周期,給企業帶來了額外的資金開銷和人力開銷。基于NASA數據庫的開放數據,本系統實現了精確到經緯度級別的氣候狀態獲取,通過調用百度地圖API和NASA數據相結合的在線實地排布光伏板大大簡化了部署周期,節約了人力物力。
NASA官網提供了全球的氣候數據信息,為了快速獲取這些信息并集成到本項目的數據庫,我們在系統中集成了一個獨立的網絡爬蟲服務,該爬蟲服務基于WebMagic實現了廣度優先的爬蟲框架。網絡爬蟲的關鍵是信息獲取和數據存儲,NASA對于氣候信息是公開的,本系統在信息獲取方面只需實現數據篩。NASA爬蟲利用Java類庫分析HTML頁面,通過正則表達式篩選相關氣候信息并過濾無關信息。在數據存儲方面,本系統將獲取到的信息直接存儲到系統專門的氣候數據庫表中備用?;讷@取的NASA氣候數據,通過調用百度地圖API即可實現根據氣候特性在線部署光伏項目。
本系統的所有功能已經完成單元測試和集成測試,系統的使用情況滿足預期設計要求,下面詳細介紹本系統核心功能。
3.1 新建項目
登錄后點擊新建項目按鈕,進入新建項目頁面。其中有三個部分,第一部分是項目基本信息,包括項目名、項目地點(調用百度地圖)、項目聯系人和項目聯系電話其中對項目名稱、聯系人和聯系電話都做了正則校驗過濾掉非法輸入,如圖6所示;第二部分是項目設計方案填寫,包括系統類型選擇、組建類型選擇、安裝點類型選擇和項目相關設置,如圖7所示;第三部分是組建排布設計,在此可以選擇光伏板的個數、排列方式等信息,最優布線算法會根據這些信息生成最優布線圖,如圖8所示。

圖6 新建項目-基本信息

圖7 新建項目-設計方案

圖8 新建項目-光伏板排布
3.2 物料清單/最優布線
進入我的項目列表,查看用戶已經新建的項目,可以查看項目的具體信息,包括系統分析報告(可下載PDF格式或EXCEL表),組件接線圖,物料清單(可下載PDF格式或EXCEL表)等,具體如圖9-圖11所示。

圖9 系統分析報告

圖10 物料清單

圖11 最優布線
本文介紹了光伏發電選配系統設計與實現。本系統是傳統光伏發電項目的互聯網化產品,是“互聯網+”時代的產物。本文使用了優化的數據庫連接池策略解決了系統運行效率問題,設計了光伏板最優布線算法幫助使用本系統的企業實現了利益最大化。目前,本套系統已通過系統測試并逐步投入實際使用。