


摘要:基于Python編程語言設計傳輸業務調度系統,以提升業務調度方案輸出效率為目標。系統充分利用現有的綜資系統中站點、光交箱、中繼段等基礎數據,有效結合Python在數據分析方面的優勢,通過設計光路路由調度關鍵算法實現端到端跳纖方案輸出、上聯方案輸出、查找附近最近接入點等功能。用戶可以通過輸入站點、經緯度等信息,實現業務調度方案快速輸出及批量輸出,顯著提升業務調度方案制作效率,有力支撐業務開通。
關鍵詞:Python;傳輸業務調度;光路路由調度;路由規劃;批量方案制作
doi:10.3969/J.ISSN.1672-7274.2024.08.026
中圖分類號:TP 311.1" " " " " " " " "文獻標志碼:B" " " " " " 文章編碼:1672-7274(2024)08-00-04
Design and Implementation of Transmission Service Scheduling System Based on Python
SU Yuanhao, WU Yicai, ZHENG Miaoxia
(China Mobile Group Guangdong Co., Ltd. Zhangjiang Branch, Zhangjiang 524033, China)
Abstract: Design a transmission service scheduling system based on Python programming language, with the purpose of improving the output efficiency of service scheduling solutions. The system fully utilizes the basic data of the existing comprehensive information system, such as stations, optical transmission box, and relay sections. And effectively combines Python's advantages in data analysis. By designing key algorithms for optical routing scheduling, the system achieves functions such as end-to-end fiber hopping scheme output, uplink scheme output, and searching for the nearest access point. Users can quickly output and batch output service scheduling plans by inputting information such as site, longitude and latitude. Significantly improving the efficiency of service scheduling and providing strong support for service opening.
Keywords: Python; transmission service scheduling; algorithms for optical routing scheduling; route planning; batch output service scheduling
0" "引言
隨著5G、家寬及集團客戶等業務大力發展,在運營商內部每日均需要輸出大量的業務光路調度方案,用于支撐業務的開通。目前已有的綜資系統具備光路規劃設計功能,但是存在設計模塊操作流程復雜、輸出業務調度方案速率慢、無法批量輸出調度方案等短板問題,影響業務開通效率。為解決存在的問題,有必要開發一款使用簡便,能夠有效提升方案輸出效率的軟件。
Python使用簡單,是一門接近自然語言的通用編程語言[1],目前已成為數據分析、機器學習、深度學習等領域的首選語言。同時Python相比其他編程語言的另一巨大優勢是開源庫眾多,可以有效提升開發的效率。為提升傳輸業務調度的效率,本文研究并設計一套基于Python的傳輸業務調度工具,優化光路調度方案輸出算法,充分利用Python眾多優質數據分析開源庫實現了業務調度方案快速輸出、調度方案批量輸出,有效提升業務調度方案輸出效率。
1" "系統整體設計
1.1 架構設計
本系統要實現的具體功能有以下5個方面:①具備菜單功能模塊,用于更新本地的站點、機房、光交、中繼段緩存數據。②具體A端-具體B端的端到端調度方案輸出。③快速模糊查詢中繼段信息。④基于家寬、集客、5G業務需求,輸出站點上聯方案。⑤基于需求站點名稱或經緯度信息,查找附近最近一張光纜網接入點。
在系統設計中使用wxPython庫完成用戶圖形界面編寫,使用threading庫實現多任務多線程運行,使用pandas/numpy庫進行跳纖路由分析[2]。通過布局控件和綁定控件事件函數,使用戶操作(單擊按鈕、文本輸入、回車按鍵等)觸發各子程序,實現自動輸出業務調度方案的功能。
1.2 GUI界面設計
為提升系統的簡潔性及可用性,本系統將全部功能設計在同一個GUI界面中。GUI界面應用的控件清單主要包括窗體Frame、布局BoxSizer、按鈕Buttun、靜態文本框StaticText、文本輸入框TextCtrl、多選框、菜單欄Menu、狀態欄MenuBar。
系統在GUI中將實現的功能按模塊集中呈現,分別為《模塊一:輸出跳纖方案》、《模塊二:快速查詢中繼段》、《模塊三:輸出上聯方案》、《模塊四:查找附近接入點》。整體功能界面如圖1所示。
1.3 光路路由調度關鍵算法搭建
按照傳輸網一張光纜網規劃指導意見[3]光路調度的總體原則,在傳輸光路路由調度中主要基于A站點至B站點的調度路由自動計算的算法實現,其關鍵算法架構思想是通過設置A、B站點,跳數及光衰預算信息,通過圖2所示算法流程實現調度方案的自動輸出:
按上述算法執行跳纖方案分析后,跳纖方案結果以表格的形式呈現。生成的方案表格存放至程序《調度方案》目錄下并自動打開,同時為進一步支撐調度人員,對生成的方案按方案得分從小到到大進行排序。按如下公式進行得分計算:
方案得分=['最小空閑芯數得分']/10*(3.7/['跳纖距離']+1.3/['跳數'])
最小空閑芯數得分:1芯1分,滿分10分
機房 機樓六樓機房 20 13.63 4 8.77 金沙灣樓機房lt;={金沙灣機房ODF01-海田機房/ODF03-AD10架}(33/96)=gt;海田機房lt;={南橋郵政局ODF-B03A-海田機房/ODF01-AB10B}(120/144)=gt;南橋機房lt;={南橋機房ODF-BCB06架(D列02A架)-機樓三樓南-ABA14(A列14B架)}(20/144)=gt;機樓三樓機房lt;={機樓六樓機房-ABB08-機樓三樓南ABB16A(ABB16)}(56/144)=gt;機樓六樓機房 0.59
當提示N跳無可達路由時,會返回A點N跳內能達到的所有接入點,并按B點至接入點的距離進行從小到大排序,并將結果輸出至程序《調度方案》目錄下。
1.4 上聯方案輸出設計
對目前常見的傳輸業務開通場景(家寬OBD上聯OLT、5G CRAN前傳、集團客戶上聯PTN或SPN)快速生成上聯方案。整體流程如下:①選擇本次需求類型;②輸入單站的資管標準名(為實現精準匹配分析;可使用模塊一A端文本輸入框模糊搜索功能獲取標準名);③系統調用光路路由調度關鍵算法自動生成上聯方案,并按方案得分從小到大排序,至《調度方案》目錄下并自動打開。按如下公式進行得分計算:
方案得分=['最小空閑芯數得分']/10*(3.7/['跳纖距離']+1.3/['跳數'])+['跨區得分']
最小空閑芯數得分:1芯1分,滿分10分
跨區得分:跨區-1,不跨區+1
1.5 查找附近最近接入點設計
針對尚未接入一張光纜網的已錄入機房/光交設施或者新增客戶點需求,通過輸入經緯度信息,查找業務需求點附近最近的接入點。整體流程如下:①選擇需求站點類型;②輸入已錄入的站點或新業務點的經緯度信息;③設定查找的范圍(1~9 km)及接入需求點類型(CRAN、OLT、PTN、OTN等);④系統通過查找附近N km的所有接入點,并按距離從小到大排序,輸出接入點表格至程序《調度方案》目錄下。
2" "系統功能實現
2.1 菜單模塊
本模塊包含更新本地緩存和幫助兩項功能。
2.1.1 更新本地緩存欄
本部分功能是將資管導出的原始表格數據進行分析,提取跳纖方案必須的字段數據,存儲為本地pickle文件,實現下次程序快速讀取本地緩存數據。分為單文件和一鍵更新兩種方法更新本地緩存。文件方式:中繼段/機房/光交箱/分纖箱/OLT站點/CRAN站點/PTN站點。點擊選項,彈出文件選擇框,選擇資管系統導出的最新文件進行更新。一鍵更新:將資管系統導出的文件存放至程序《源文件》目錄下,文件名字須包含'中繼段','機房','光交箱','分纖箱','OLT','CRAN','PTN'等關鍵字進行區分。
2.1.2 幫助欄
主要包含日志和使用說明兩部分,其中日志部分包含程序運行中的一些運行歷史記錄,通過查詢程序日志,了解方案制作結果。說明部分包含導入文件和方案輸出的必要說明,方便使用者。
2.1.3 具體代碼實現
程序代碼主要分為控件布局和綁定事件函數兩部分(以菜單欄為例,其他模塊類似):
2.1.3.1 控件布局
#創建菜單
#更新本地緩存欄 布局:
fileMenu = wx.Menu()
lineTips =‘導入文件必須包含以下列名:‘+‘、‘.join(lineCols)
menuLineUpate = fileMenu.Append(wx.ID ANY,’ 中繼段’ lineTips)
houseTips =’導入文件必須包含以下列名:’+’、’’.join(houseTableCols )
menuHouseUpate = fileMenu.Append(wx.ID ANY,’機房’, houseTips)
boxTips =’導入文件必須包含以下列名:’+’、’.join(boxTableCols)
menuBoxUpate = fileMenu.Append(wX.ID ANY,’光交箱’, boxTips)
oBoxTips =’導入文件必須包含以下列名:’+’、’.join(oBoxTableCols)
menuOboxUpate = fileMenu.Append(wx.ID ANY,’分纖箱’, oBoxTips)
……
#幫助欄 布局:
helpMenu = wx.Menu()
menuLog = helpMenu.Append(wx.ID ANY,’日志’,’查看程序運行日志’)
menuHelp = helpMenu.Append(wx.ID ANY,’使用說明’ ,’查看程序使用說明’)
……
2.1.3.2 綁定事件函數
#綁定更新本地緩存欄 菜單事件,更新本地中繼段,光交箱,分纖箱等文件
self.Bind(Wx.EVT MENU, self.OnOpenHouse,
menuHouseUpate)
self.Bind(Wx.EVT MENU, self.OnOpenLine,
menuLineUpate)
self.Bind(Wx.EVT MENU,self.OnOpenBox,
menuBoxUpate)
self.Bind(wx.EVT MENU,self.OnOpenObox,
menuOboxUpate)
……
#綁定幫助欄 菜單事件,更新本地中繼段,光交箱,分纖箱等文件
self.statusText =’’
self.Bind(wx.EVT MENU, self.OnOpenLog,
menuLog)
self.Bind(wx.EVT MENU,self.OnHelp,
menuHelp)
self.Bind(Wx.EVT MENU,self.OnAbout,
menuAbout)
2.2 跳纖方案輸出模塊
系統實現單站-單站調度方案制作、批量站點-批量站點調度方案制作兩項功能。在單站-單站調度方案制作中,A/B端文本輸入框支持模糊輸入站點/光交設施的資管名稱關鍵字,設定跳纖方案的跳數上限和光衰上限后,系統按照光路路由調度關鍵算法自動分析并生成的方案表格存放至程序對應目錄下并自動打開。
在批量站點-批量站點調度方案制作中,通過模版表格導入。程序自動通過調取表格中“A端”“B端”綜資標準名稱信息,批量生成調度方案。
2.3 快速查詢中繼段模塊
本模塊針對“中繼段名稱+A端站點名稱+B端站點名稱”進行快速多關鍵字模糊搜索,搜索的所有結果運用按“芯數總數”“空閑芯數”從大到小排序,并在搜索窗口顯示。較傳統的中繼段表格查找/管線系統查找,查找速率有了極大的提升。
2.4 上聯方案輸出模塊
為提升匹配的精準度,在實現過程中要求輸入單站資管標準名稱,對于分析的上聯方案結果,運用按光衰預算從小到大排序,輸出方案文件至程序目錄下并自動打開。
對于批量站點方案制作類似單站模式,通過模版表(類似模塊一)導入。程序自動調取表格中輸入單站信息,批量生成調度方案。
2.5 查找附近最近接入點模塊
通過輸入已錄入站點或者新增客戶點需求(經緯度),系統查找業務需求點附近最近的接入點進行附近接入資源分析。
批量站點搜索類似單站模式,通過模版表導入。調取表格中輸入單站或經緯度信息,實現批量查找。
在開發完上述模塊后使用pyinstaller工具[4]將Python代碼封裝成windows “.exe”軟件文件推廣給其他用戶使用。
3" "結束語
Python簡單易用、標準庫和第三庫眾多、功能強大、程序方便維護等特點,是目前最流行的語言之一。基于Python的傳輸業務調度系統充分利用現有的站點、機房、光交、中繼段等基礎數據,并有效結合Python在數據分析方面的優勢,通過設計光路路由調度關鍵算法實現端到端跳纖方案輸出、上聯方案輸出、查找附近最近接入點等功能。系統實現了業務調度方案快速輸出、調度方案批量輸出,有效提升業務調度方案輸出效率。
參考文獻
[1] 翟高粵.基于Python的數據分析概述[J].甘肅科技縱橫,2018,47(11):5-7.
[2] 郝海妍,潘萍.Python技術在數據分析中的應用[J].電子技術與軟件工程,2020(12):179-181.
[3] 中國移動廣東公司本地傳輸網一張光纜網規劃指導意見[Z].中國移動廣東公司,2020.
[4] 呂云翔,李伊琳,王肇一,等.Python數據分析實戰[M].北京:清華大學出版社,2019.
作者簡介:蘇元浩(1983—),男,漢族,福建人,中級工程師,碩士,研究方向為網絡路由學習和資源調度策略、網絡自動運維。
吳益才(1990—),男,漢族,廣東人,中級工程師,學士,研究方向為網絡自動運維、傳輸組網策略。
鄭妙霞(1991—),女,漢族,廣東人,中級工程師,碩士,研究方向為傳輸資源調度及策略。