版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验1:Erlang B公式计算器实验报告 学院: 信息与通信工程学院 班级: 姓名: 学号: 一、实验目的Erlang B公式通信网理论基础这门课程的学习重点之一,其表达了电话交换系统的时间阻塞率B(s,a)与到达的呼叫量a以及中继线的数目s之间的关系,为电话网络的规划和中继线容量配置奠定了基础。 本次实验要求用计算机语言编写ErlangB公式计算器,实现给定任意两个变量求解第三个变量的功能,使学生掌握ErlangB公式的计算方法,培养数值分析计算与算法设计能力。二、实验原理Erlang即时拒绝系统用于建模电话交换系统,设电话呼叫流的到来服从Poisson过程,为呼叫的到达率,呼叫的持续时间
2、服从参数的负指数分布。系统有s条中继线,呼叫到来时,如系统中有空闲的中继线,则呼叫可到达任意一个空闲的中继线,如果没有空闲的中继线,就拒绝该呼叫。在这样的情况下,该交换系统的排队系统模型为。利用生灭过程稳态分布的结论,可求解M/M/s(s)系统的时间阻塞率为 Bs,a=ass!r=0sarr!,该公式给出了a,s,与B之间的关系。本次实验要求编写Erlang B公式的计算器,实现给定任意两个变量求解第三个变量的功能:(1) 给定到达的呼叫量a和中继线的数目s,求解系统的时间阻塞率B;(2) 给定系统的时间阻塞率的要求B和到达的呼叫量a,求解中继线的数目s,以实现网络规划;(3) 给定系统的时间
3、阻塞率要求B以及中继线的数目s,判断该系统能支持的最大的呼叫量a。三、实验内容1. 设计语言及开发工具:(1)计算器:界面生成采用C+语言(MFC),函数采用C语言在vs2013编译(2)作图程序:C语言和MATLAB语言,采用MATLAB开发。2. 计算器主要功能函数以下三个函数共同使用如下三个变量,但它们的使用方式不同,可能作为输出也可能是输入:a. 到达呼叫量(a,非负双精度浮点数);b. 时间阻塞率(b,浮点数,取值范围01);c. 中继线数(s,非负整数)。(1) double calculate_b(double a,int s)功能:已知到达的呼叫量a和中继线的数目s,求时间阻塞
4、率eB;算法原理:计算时间阻塞率可以用爱尔兰B公式本身实现,但这种算法不仅麻烦,还可能产生数据溢出。有一个更为简便的迭代算法。这个算法可表示为ebm,A=AeB(m-1,A)m+AeB(m-1,A) (m=0,1,2,n;P0,A=1)其中PB表示阻塞率,m表示中继线数,A表示到达呼叫量。这个算法表明在到达呼叫量一定时,s条中继线的阻塞率可以用(s-1)条中继线的阻塞率表示。若要求s条中继线的阻塞率,使用这个算法只需s次迭代就可以实现,大大减少了运算次数,而且也不会出现溢出问题。算法流程图:开始输入中继线数S、到达呼叫量aEb初值为1,迭代次数为0迭代次数为s?Y输出阻塞率b结束N做运算:(a
5、*b)/(m+a*b)结果付为新b值S值加1(2)double calculate_a(int s,double b)功能:已知中继线数s、时间阻塞率b,求到达呼叫量a算法原理:首先输入s、b,设a的初值为0,以a此时值与s做calculate_b运算,得到的值与输入值b作差,当差值小于精确值时则此时a值为运算结果,否则a以0.001为间隔递增循环计算,直到满足条件,输出此时a值。算法流程图:开始输入阻塞率b、中继线数s置到达呼叫量a为0利用calculate_b计算当前a与s对应阻塞率与输入量b之差差值是否小于精确度0.001输出此时a值为到达呼叫量结束a加0.01NY(3)int calc
6、ulate_s(double b double a)函数功能:已知到达呼叫量a、时间阻塞率eb和精确度ec,求中继线数s。算法原理:与求解到达呼叫量a相同,采用穷举法逐次逼近结果首先设s值为1,计算此时s与输入值a对应eb减去输入值eb结果是否小于精度,是则输出s,否则s加1循环运算知道符合精确度。算法流程图:开始输入阻塞率b、到达呼叫量a设置s为1利用calculate_b计算此时s与a对应b减去输入值b之差差值小于0.001输出此时s作为中继线数结束YS加1N(4)函数具体代码/ ErlangBDlg.cpp : 实现文件/#include stdafx.h#include ErlangB
7、.h#include ErlangBDlg.h#include afxdialogex.hchar A, B, C, D;char lll = A;#ifdef _DEBUG#define new DEBUG_NEW#endif/ 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogExpublic:CAboutDlg();/ 对话框数据enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持
8、/ 实现protected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialogEx(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)END_MESSAGE_MAP()/ CErlangBDlg 对话框CErlangBDlg:CErlangBDlg(CWnd* pParent /*=NULL*/): CDialogEx(CErl
9、angBDlg:IDD, pParent), bbb(0), aaa(0), sss(0)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CErlangBDlg:DoDataExchange(CDataExchange* pDX)CDialogEx:DoDataExchange(pDX);DDX_Text(pDX, IDC_EDIT1, bbb);DDX_Text(pDX, IDC_EDIT2, aaa);DDX_Text(pDX, IDC_EDIT3, sss);BEGIN_MESSAGE_MAP(CErlangBDlg, CDialog
10、Ex)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_EN_CHANGE(IDC_EDIT1, &CErlangBDlg:OnEnChangeEdit1)ON_EN_CHANGE(IDC_EDIT2, &CErlangBDlg:OnEnChangeEdit2)ON_EN_CHANGE(IDC_EDIT3, &CErlangBDlg:OnEnChangeEdit3)ON_BN_CLICKED(IDOK, &CErlangBDlg:OnBnClickedOk)ON_BN_CLICKED(IDC_BUTTON4, &CErlangBDlg
11、:OnBnClickedButton4)ON_BN_CLICKED(IDC_RADIO1, &CErlangBDlg:OnBnClickedRadio1)ON_BN_CLICKED(IDC_RADIO2, &CErlangBDlg:OnBnClickedRadio2)ON_BN_CLICKED(IDC_RADIO3, &CErlangBDlg:OnBnClickedRadio3)END_MESSAGE_MAP()/ CErlangBDlg 消息处理程序BOOL CErlangBDlg:OnInitDialog()CDialogEx:OnInitDialog();/ 将“关于.”菜单项添加到系统
12、菜单中。/ IDM_ABOUTBOX 必须在系统命令范围内。ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE);/ 设置大图标SetIcon(m_hIcon, FALSE);/ 设置小图标/ TODO: 在此添加额外的初始化代
13、码return TRUE; / 除非将焦点设置到控件,否则返回 TRUEvoid CErlangBDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialogEx:OnSysCommand(nID, lParam);/ 如果向对话框添加最小化按钮,则需要下面的代码/ 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,/ 这将由框架自动完成。void CErlangBDlg:OnPaint()if (I
14、sIconic()CPaintDC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() -
15、 cyIcon + 1) / 2;/ 绘制图标dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/当用户拖动最小化窗口时系统调用此函数取得光标/显示。HCURSOR CErlangBDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CErlangBDlg:OnEnChangeEdit1()/ TODO: 如果该控件是 RICHEDIT 控件,它将不/ 发送此通知,除非重写 CDialogEx:OnInitDialog()/ 函数并调用 CRichEditCtrl().SetEventM
16、ask(),/ 同时将 ENM_CHANGE 标志“或”运算到掩码中。/ TODO: 在此添加控件通知处理程序代码void CErlangBDlg:OnEnChangeEdit2()/ TODO: 如果该控件是 RICHEDIT 控件,它将不/ 发送此通知,除非重写 CDialogEx:OnInitDialog()/ 函数并调用 CRichEditCtrl().SetEventMask(),/ 同时将 ENM_CHANGE 标志“或”运算到掩码中。/ TODO: 在此添加控件通知处理程序代码void CErlangBDlg:OnEnChangeEdit3()/ TODO: 如果该控件是 RIC
17、HEDIT 控件,它将不/ 发送此通知,除非重写 CDialogEx:OnInitDialog()/ 函数并调用 CRichEditCtrl().SetEventMask(),/ 同时将 ENM_CHANGE 标志“或”运算到掩码中。/ TODO: 在此添加控件通知处理程序代码/*double calculate_b(double a, int s)/知a、s,计算bdouble eb;double temp1, temp2, temp3;int i, j;temp1 = temp2 = 1;for (i = 1; i = s; i+)temp1 *= a;temp2 = temp2*i;eb
18、 = temp1 / temp2;temp3 = 1;for (i = 1; i = s; i+)temp1 = temp2 = 1;for (j = 1; j = i; j+)temp1 *= a;temp2 = temp2*j;temp3 += temp1 / temp2;eb = eb / temp3;return eb;*/double calculate_b(double a, int s)double temp1, temp2, temp3;double i;temp3 = 1;for (i = 1; i = ec | temp4 - b = ec; s+)temp4 = calc
19、ulate_b(a, s);return s;void CErlangBDlg:OnBnClickedButton4()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);bbb = 0;aaa = 0;sss = 0;UpdateData(FALSE);void CErlangBDlg:OnBnClickedRadio1()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);lll = B;UpdateData(FALSE);void CErlangBDlg:OnBnClickedRadio2()/ TODO: 在此添加控件通知处理程序代码
20、UpdateData(TRUE);lll = C;UpdateData(FALSE);void CErlangBDlg:OnBnClickedRadio3()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);lll = D;UpdateData(FALSE);void CErlangBDlg:OnBnClickedOk()/ TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);switch (lll)case A:bbb = 3; UpdateData(FALSE); break;case B:bbb = calculate_b(aaa, ss
21、s); UpdateData(FALSE); break;case C:aaa = calculate_a(sss, bbb); UpdateData(FALSE); break;case D:sss = calculate_s(bbb, aaa); UpdateData(FALSE); break;default:break;/CDialogEx:OnOK();3. MATLAB作图程序函数说明:aAndB.m是计算到达率与阻塞率的关系aAndn.m是计算到达率与中继线条数的关系erlangb.m是通过a与n计算阻塞率findrhob.m是通过阻塞率与中继线条数计算到达率的关系nANDb.m
22、是计算n与b之间的关系test3d.m是画出到达率阻塞率中继线条数的三维关系图(1) function B=erlangb(n,rho)利用循环:for k=1:n, B=(rho*B)/k)/(1+rho*B/k); end;通过固定到达率与中继线条数计算出来阻塞率函数具体代码:function B=erlangb(n,rho) if (floor(n) = n) | (n 1) warning(n is not a positive integer); B=NaN; return; end; if (rho 0.0) warning(rho is negative!); B=NaN; re
23、turn; end;B=1;for k=1:n, B=(rho*B)/k)/(1+rho*B/k); end;(2)function rho=findrhob(n,p)固定中继线条数与阻塞率,采用逐渐逼近的原理,计算出到达率函数具体代码:function rho=findrhob(n,p) if (floor(n) = n) | (n 1) warning(n is not a positive integer); rho=NaN; return; end; if (p1.0) warning(Invalid p value!); rho=NaN; return; end;a=1.0;test
24、p=erlangb(n,a);while (testp 0.0001*max(1 left), if (midp p), left=mid; mid=(left+right)/2; midp=erlangb(n,mid); else right=mid; mid=(left+right)/2; midp=erlangb(n,mid); end;end;rho=left;四、程序运行结果及分析1、ErlangB计算器运行结果分析:(1)程序主界面及使用说明:该界面的设计基本采用了上的计算器界面。以radiol按钮确定计算对象,另外添加了各自清除按钮与总清除按钮,弥补了网页计算器的不足,且添加了自主设置精确度的功能。本程序对阻塞率要求输入01之间的实数,中继线数要求输入非负整数,到达呼叫量要求输入非负实数。后两者支持的输入范围非常大,而网上的计算器则要求信道数和到达呼叫量都要小于180,当然输入数据越大所需要的计算时间也越长。另外计算到达呼叫量和中继线数时,可以实现任意给定精度的运算(2)为验证准确性,分别给出三个功能计算结果与网页计算器对比:1 已知s和a,计算到阻塞率eb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年华中科技大学同济医学院附属同济医院医护人员招聘笔试备考试题及答案详解
- 2026年丽水市人民医院医护人员招聘考试参考题库及答案详解
- 2026年南京大学医学院附属鼓楼医院医护人员招聘考试备考试题及答案详解
- 2026年中国人民解放军169医院医护人员招聘笔试参考试题及答案详解
- 2026年芜湖市中医医院医护人员招聘笔试参考题库及答案详解
- 2026年宿迁市中医院医护人员招聘笔试备考题库及答案详解
- 2026年首都医科大学附属北京朝阳医院医护人员招聘考试参考试题及答案详解
- 2026年永州市中医院医护人员招聘考试参考题库及答案详解
- 2026年衢州市第三医院医护人员招聘考试参考试题及答案详解
- 2026年秦皇岛市第一医院医护人员招聘笔试备考题库及答案详解
- 销售员安全试题及答案
- 血液透析不同抗凝剂的应用及护理
- 高压电危险及安全防护课件
- 语文教师书写《识字写字教学》教育教研讲座教学培训课件
- 数字经济时代的营业性构造演进与商主体体系创新研究-记录
- 《铁路信号与通信设备》课件
- 儿童绘本故事《蚂蚁搬家》
- 建筑工程英语英汉对照工程词汇
- 2015-2024年十年高考化学真题分类汇编专题77 实验设计与评价-装置图型(解析版)
- DB43T 876.2-2014 高标准农田建设 第2部分:土地平整
- 2024年咨询服务协议书范文
评论
0/150
提交评论