北郵信息工程通信網理論基礎實驗1報告-ErlangB計算器_第1頁
北郵信息工程通信網理論基礎實驗1報告-ErlangB計算器_第2頁
北郵信息工程通信網理論基礎實驗1報告-ErlangB計算器_第3頁
北郵信息工程通信網理論基礎實驗1報告-ErlangB計算器_第4頁
北郵信息工程通信網理論基礎實驗1報告-ErlangB計算器_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、通信網理論基礎實驗報告信息與通信工程學院通信網理論基礎實驗報告班級: 姓名: 學號: 序號: 日 期: 第15頁 實驗一erlangb公式計算器一、實驗目的erlang b公式通信網理論基礎這門課程的學習重點之一,其表達了電話交換系統(tǒng)的時間阻塞率b(s,a)與到達的呼叫量a以及中繼線的數目s之間的關系,為電話網絡的規(guī)劃和中繼線容量配置奠定了基礎。 本次實驗要求用計算機語言編寫erlangb公式計算器,實現給定任意兩個變量求解第三個變量的功能,掌握erlangb公式的計算方法,培養(yǎng)數值分析計算與算法設計能力。二、 實驗內容erlang即時拒絕系統(tǒng)用于建模電話交換系統(tǒng),設電話呼叫流的到來服從poi

2、sson過程,為呼叫的到達率,呼叫的持續(xù)時間服從參數的負指數分布。系統(tǒng)有s條中繼線,呼叫到來時,如系統(tǒng)中有空閑的中繼線,則呼叫可到達任意一個空閑的中繼線,如果沒有空閑的中繼線,就拒絕該呼叫。在這樣的情況下,該交換系統(tǒng)的排隊系統(tǒng)模型為 。利用生滅過程穩(wěn)態(tài)分布的結論,可求解m/m/s(s)系統(tǒng)的時間阻塞率為bs,a=ass!r=0sarr!該公式給出了a,s,與b之間的關系。本次實驗要求編寫erlang b公式的計算器,實現給定任意兩個變量求解第三個變量的功能:(1) 給定到達的呼叫量a和中繼線的數目s,求解系統(tǒng)的時間阻塞率b;(2) 給定系統(tǒng)的時間阻塞率的要求b和到達的呼叫量a,求解中繼線的數目

3、s,以實現網絡規(guī)劃;(3) 給定系統(tǒng)的時間阻塞率要求b以及中繼線的數目s,判斷該系統(tǒng)能支持的最大的呼叫量a。三、 實驗要求(1) 兩人一組,利用c+或者java等語言實現有圖形用戶界面的三向計算能力的erlang b公式計算器,生成可獨立運行的可執(zhí)行文件。(2) 與上的計算器結果進行比對,驗證所編寫的erlang b公式計算器的正確性。(3) 利用所編寫的計算器,繪制:a給定情況下,b隨s的變化曲線;b給定情況下,s隨a的變化曲線;s給定情況下,b隨a的變化曲線;或者繪制三維圖形,顯示b、s和a三者之間的關系。四、程序基本信息本次實驗我編寫了兩個程序,一

4、個是圖形界面的erlang b公式計算器,另一個是專門用于畫erlang b公式里變量關系曲線的命令行程序。1、設計語言及開發(fā)工具:(1)計算器:c+語言(mfc),采用visual studio 2010開發(fā)與設計;(2)作圖程序:c語言和matlab語言,采用matlab開發(fā)。本次實驗由于都是簡單的遞歸、逼近、窮舉算法,基本不涉及面向對象的知識,所以基本上使用簡單的c語言就能完成任務。而mfc由于其編程復雜,多少涉及了一些c+方面的內容。由于作圖需要使用matlab,因此最好實現c程序和matlab的交互,這樣可以畫出任意情況的曲線。visual studio和matlab都提供了對對方的

5、基本支持,但是visual studio無法直接調用matlab的圖形系統(tǒng),而它又是這個程序的主要功能。權衡之下決定用matlab開發(fā)作圖程序。matlab具有c編譯器,可以編譯基本的c程序,在里面加入一些語句,就可以調用matlab引擎,但是matlab不支持mfc,所以只好舍棄了圖形界面。2、數據結構:本次實驗由于算法簡單,每次計算的數據之間也不存在任何關系(獨立)的,因此程序設計時只采用了諸如串、數組等簡單形式用于存儲數據,復雜的數據結構思想諸如鏈表、樹等基本沒有采用。3、主要函數(算法):(1) erlang b計算器:為簡單起見和突出重點,這里只給出愛爾蘭b公式中變量求解相關的算法和

6、函數說明,和mfc界面相關的函數不做說明。以下三個函數共同使用如下三個變量,但它們的使用方式不同,可能作為輸出也可能是輸入:a. 到達呼叫量(bht,非負雙精度浮點數);b. 時間阻塞率(blocking,浮點數,取值范圍01);c. 中繼線數(lines,非負整數)。double calculateblocking(double bht, int lines)函數功能:已知到達呼叫量和中繼線數(輸入),求時間阻塞率(輸出),該函數是本次程序中最基本也是最重要的函數,其它函數均以它為依存。算法原理:計算時間阻塞率可以用愛爾蘭b公式本身實現,但這種算法不僅麻煩,還可能產生數據溢出。有一個更為簡便

7、的迭代算法。這個算法可表示為pbm,a=apb(m-1,a)m+apb(m-1,a) (m=0,1,2,n;p0,a=1)其中pb表示阻塞率,m表示中繼線數,a表示到達呼叫量。這個算法表明在到達呼叫量一定時,n條中繼線的阻塞率可以用(n-1)條中繼線的阻塞率表示。若要求n條中繼線的阻塞率,使用這個算法只需n次迭代就可以實現,大大減少了運算次數,而且也不會出現溢出問題。 算法流程圖: int calculatelines(double bht, double blocking)函數功能:已知到達呼叫量和時間阻塞率(輸入),求中繼線數(輸出)。算法原理:對于這個運算尚無有效的快速算法??紤]到目標結

8、果的特殊(非負整數),故采用窮舉法,具體見下面流程圖說明。 算法流程: double calculatebht(double blocking, int lines, double presicion)函數功能:已知中繼線數、時間阻塞率和精度(輸入),求到達呼叫量(輸出)。算法原理:這個運算同樣找不到有效的快速算法。目標結果情況復雜(可取非負的任意數,沒有上限),用普通窮舉、二分法逼近不太合適,這里我采用的方法是一種類似于逐次逼近的窮舉法,即還是通過連續(xù)疊加逼近真實值,但是疊加值逐步縮小,并利用數學上的零點定理縮小判定范圍。另外還要考慮精度。 算法流程:(2) 作圖程序:作圖程序仍采用c語言編

9、寫,它采用了與erlang b計算器相同的計算函數代碼,這里不再重復介紹。為了實現畫圖功能,里面加入了一些matlab專用的函數或語句,需要包含engine.h頭文件才能識別。以下作簡要介紹。engopen():打開matlab引擎;engevalstring(ep,cmd):在matlab引擎里執(zhí)行cmd中存儲的matlab命令;plot3(x,y,z):matlab命令,在三維坐標系里畫出向量;plot(x,y):matlab命令,二維繪圖;engclose():關閉matlab引擎。五、程序運行結果與分析1、程序運行要求:(1)erlang b計算器:經測試已經可以獨立運行,不需要任何軟

10、件支持;(2)作圖程序:該程序內部僅包含對matlab的調用而不包含matlab本身,需要計算機上安裝有matlab軟件。2、erlangb計算器運行結果:(1)程序主界面及使用說明:該界面的設計基本采用了上的計算器界面。另外增加了一個列表框,用來顯示以前計算的結果。使用方法也與上的計算器類似。本程序對阻塞率要求輸入01之間的實數,中繼線數要求輸入非負整數,到達呼叫量要求輸入非負實數。后兩者支持的輸入范圍非常大,而網上的計算器則要求信道數和到達呼叫量都要小于180,當然輸入數據越大所需要的計算時間也越長。另外計算到達呼叫量時,可以實現任意精度的運

11、算,需要在如下對話框中指定。以下隨機選取5組計算截圖,以驗證本計算器的準確性。網上的愛爾蘭計算器源自/calculator/erlb/。 第一組: 第二組: 第三組: 第四組(取精度為0.001): 第五組: 實際操作中,計算信道數可能有1的誤差。 2、作圖程序(兼圖形分析): 為實現作出不同情況下的圖形,我編了三個程序,分別是作阻塞率、信道數和到達呼叫量三者之間的關系圖的程序,作信道數與阻塞率的關系圖(到達呼叫量一定)的程序、作到達呼叫量與阻塞率的關系圖(信道數一定)的程序。信道數與到達呼叫量關系的程序由于某些原因沒有編寫成功,只好改用matlab語言

12、重寫了一個。除了作到達呼叫量與阻塞率的關系圖程序外,其它三個程序都要求輸入相關信息,如限定量、最大信道數(呼叫量)、精度等。最大信道數(呼叫量)越大圖形表示范圍越大,阻塞率精度越小圖形越精密,當然要獲得更好的結果需要更長的執(zhí)行時間。選擇好后程序會給出圖像。 選擇精度和信道數的界面: 三個程序的界面是類似的,以下不再給出其他程序的界面。信道數和阻塞率關系圖:(最大信道數100,限定到達呼叫量30.5erl)圖像分析:信道數為0時阻塞率為1(對到達呼叫全部拒絕),而后阻塞率隨信道數增加而大幅減小,信道數達到一定程度阻塞率幾乎為0,此時基本可以保證所有到達呼叫都能被服務,不需要再增加信道數。到達呼叫

13、量和阻塞率關系圖:(最大到達呼叫量80,限定信道數100,呼叫量精度0.1)曲線分析:該圖說明,給定特定個數的信道,可以保證一定范圍內的到達呼叫不被拒絕,但是超過這個范圍后阻塞率就會急劇增加,此時需要增加信道。到達呼叫量和信道數關系圖:(阻塞率限定為0.15,最大信道數100)曲線分析:在保證阻塞率不變的情況下,信道數與呼叫量大致呈線性正比關系,也就是說要保證相同的服務質量,到達的呼叫量越多,相應的就要增加更多的信道(中繼線)。阻塞率、信道數和到達呼叫量三者之間的關系圖(三維):(到達呼叫量精度0.1,最大呼叫量30,最大信道數50)六、遇到的主要問題算法部分:1、計算阻塞率時數據有較大誤差。

14、這次實驗涉及的算法精密度非常高,有一個地方和正確算法不符結果就會出現較大誤差,必須要仔細檢查算法的每一個步驟。2、計算阻塞率時數據出現溢出。采用愛爾蘭b公式計算會出現這個問題,導致可計算的范圍大大縮小,而選用迭代算法后問題就不會出現。猜想溢出是計算大數階乘時發(fā)生的。3、計算信道數時可能會有1的誤差。這是與網上的計算器相比時出現的。本程序在設計算法時,若計算出的信道數結果是非整數,則按向下取整處理的,而網上的計算器的處理方法可能是按照四舍五入,因此有可能出現這樣的情況。mfc設計部分:4、mfc實際調試時三個單選框沒有關聯到一起(出現多選)。給一個單選框的group屬性設置為true。5、列表框

15、不顯示結果。每次更新列表時都要先初始化,并且要插入新結果時還要按如下語句新增一項:list-insertitem(0,);6、調試時,在“精度要求”對話框中,直接單擊取消會出現程序錯誤。 主程序時沒有對該按鈕設置適當的處理代碼所致。因為該對話框只有兩個按鈕,所以代碼按如下組織:if(dlg.domodal()=idok) precision=dlg.m_input;elsereturn; matlab作圖部分: 7、畫出的圖像元素(如標題、坐標軸標記)缺失。 對應的title,xlabel等語句中包含了不可識別的字符,這樣的語句matlab不予執(zhí)行。8、最后畫出的圖像有誤,出現直線,調用mat

16、lab查看時,發(fā)現某些向量所有項都為一個整數。 經查找資料后發(fā)現問題來自matlab 的c編譯器。原先在visual studio 2010中開發(fā)時,阻塞率和到達呼叫量都是聲明為double(雙精度浮點)型,而matlab的c編譯器似乎把double視為長整型,因此出現這個問題。把所有double變量類型改為float后問題解決。 9、編寫完畫信道數和到達呼叫量關系圖的程序后(c語言),調試時程序進入死循環(huán),無法作圖。 無論輸入怎樣的值都會出現這種情況,并且檢查程序后也沒有發(fā)現什么問題,嘗試多次后無奈放棄,其他三個程序并無此問題。現在猜想可能是由于主函數以外聲明了兩個函數,且其中一個函數包含對另一個函數的調用,編譯時不知道出了什么岔子導致程序陷入死循環(huán)。這個程序與mfc程序代碼并無較大不同,懷疑是matlab中c編譯器的缺陷。七、實驗總結

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論