MM1排队系统仿真matlab实验报告
排队系统仿真matlab实验报告
M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即e t kk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO )4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。
三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。
四、采用的语言MatLab 语言源代码:clear;clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;Mu=0.9; %服务率Mu;t_Arrive=zeros(1,SimTotal);t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间t_Arrive(1)=Interval_Arrive(1);%顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;elseCusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[0,0,1000,700]);subplot(2,2,1);title('各顾客到达时间和离去时间');stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'y');legend('到达时间','离去时间');hold off;subplot(2,2,2);stairs(Timepoint,CusNum,'b')title('系统等待队长分布');xlabel('时间');ylabel('队长');subplot(2,2,3);title('各顾客在系统中的排队时间和等待时间');stairs([0 ArriveNum],[0 t_Queue],'b');hold on;stairs([0 LeaveNum],[0 t_Wait],'y');hold off;legend('排队时间','等待时间');%仿真值与理论值比较disp(['理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]);disp(['理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]);disp(['理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]);disp(['理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp(['仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)])disp(['仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)])disp(['仿真系统中平均顾客数=',num2str(CusNum_avg)]);disp(['仿真系统中平均等待队长=',num2str(QueLength_avg)]);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔t_Arrive(1)=Interval_Arrive(1);%顾客到达时间时间计算t_Wait=t_Leave-t_Arrive;%各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
基于matlab GUI的MG1排队系统的可视化仿真程序设计
基于matlab GUI的M/G/1排队系统的可视化仿真程序设计刘健鹭(云南民族大学电气与信息工程学院 10级信号与信息处理研究生邮编:650500)摘要:M/G/1排队系统是一个顾客到达是无记忆泊松过程,服务时间为相互独立的一般分布的、具有多种服务规则的排队系统。
利用matlab GUI的面向对象的可视化的开发环境,设计一个参数可调的,直观的动画仿真程序,用于不同参数的M/G/1排队系统;本程序的主要作用有:为研究M/G/1排队系统提供一个简单的可视化仿真环境;为课堂教学提供一个直观的演示平台。
关键词:M/G/1排队系统 matlab GUIM/G/1 queuing system of visual simulation programming basedon Matlab GUIJianLuLiu(Y unnan national university)Abstrac t: M/G/1 queuing system is a customer arrives is no memory Poisson process, service time is independent of the general distribution, with a variety of services, rules of queuing systems. Using matlab GUI object-oriented visual development environment, design an adjustable parameter, intuitive animation simulation program for different parameters of the M/G/1 queuing system; major role in this program are: to study the M/G/1 queuing system provides a simple visual simulation environment; for the classroom to provide a visual presentation platform;key word:M/G/1 queuing system Matlab GUI引言:排队论是研究系统由于随机因素的干扰而出现排队现象的一门学科。
(最新版)MATLAB实验报告
(最新版)MATLAB实验报告实验一典型环节的MATLAB仿真一、实验目的1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。
2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。
3.定性了解各参数变化对典型环节动态特性的影响。
二、SIMULINK的使用MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。
利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。
1.运行MATLAB软件,在命令窗口栏“>>”提示符下键入simulink命令,按Enter 键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK仿真环境下。
2.选择File菜单下New下的Model命令,新建一个simulink 仿真环境常规模板。
3.在simulink仿真环境下,创建所需要的系统。
以图1-2所示的系统为例,说明基本设计步骤如下:1)进入线性系统模块库,构建传递函数。
点击simulink下的“Continuous”,再将右边窗口中“Transfer Fen”的图标用左键拖至新建的“untitled”窗口。
2)改变模块参数。
在simulink仿真环境“untitled”窗口中双击该图标,即可改变传递函数。
其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;设置完成后,选择OK,即完成该模块的设置。
3)建立其它传递函数模块。
按照上述方法,在不同的simulink 的模块库中,建立系统所需的传递函数模块。
例:比例环节用“Math”右边窗口“Gain”的图标。
4)选取阶跃信号输入函数。
用鼠标点击simulink下的“Source”,将右边窗口中“Step”图标用左键拖至新建的“untitled”窗口,形成一个阶跃函数输入模块。
5)选择输出方式。
用鼠标点击simulink下的“Sinks”,就进入输出方式模块库,通常选用“Scope”的示波器图标,将其用左键拖至新建的“untitled”窗口。
实验三 MM1队列模型实验
建立一个M/M/1排队模型一、实验目的1、了解M/M/1排队模型的主要结构和特点。
2、掌握OPNET节点编辑器的基本使用方法。
3、掌握使用工程编辑器来收集和观察不同统计类型的方法。
4、掌握从仿真结果中数学分析统计数据的方法。
二、实验设备和环境PC、Windows XP、Opnet14.5A等;三、准备知识M/M/1排队模型:M/M/1排队模型由一个数据包到达过程为泊松过程的单入单出(FIFO)缓冲器和一台从缓冲区以特定速度接受分组数据包的服务器(server)组成。
M/M/1队列系统的性能取决于以下几个因素:(1)数据包到达速度(2)数据包大小(3)服务器服务容量如果平均数据包到达速度和平均数据包大小的综合影响超过了服务器所能提供的服务容量,队列长度将会无限增长。
M/M/1队列模型如图1所示:图1. M/M/1队列模型1, 和C分别表示到达速度、数据包大小和服务容量。
其中λ, μ在本次实验中,我们会建立一个M/M/1队列模型,通过设定特定的到达速度、数据包大小和服务容量来使队列达到稳定。
四、实验内容和步骤实验内容:创建一个M/M/1队列模型,需要在节点编辑器中选择对象,包括一个queue和两个过程processors。
source节点(用processor module表示)负责产生数据包,sink节点(用processor module表示)负责处理无用的数据包,queue module表示无限的缓冲器和服务器。
packet streams用来连接每个模块。
模型如图2.图2. M/M/1队列模型实验步骤:1)打开OPNET,并新建project和scenario。
分别命名为mm1net和mm1。
如图3所示:图3. 新建工程和场景2)打开Startup Wizard后,点击Quit,会在节点模型创建之后再进行场景的设置。
3)选择File\New...并在弹出的窗口下拉菜单中选择Node Model,点击ok。
Matlab仿真实验报告_发布
2、实验目的
通过本次实验,应该掌握: (1) 用傅立叶变换进行信号分析时基本参数的选择。 (2) 经过离散时间傅立叶变换(DTFT)和有限长度离散傅立叶变换(DFT) 后信号频 谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都 是离散的。 (3) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基 2 时间抽选法) ,体 会快速算法的效率。 (4) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨 率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (5) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念 的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和 MPEG Audio。
~4~
MATLAB 仿真实验报告
N=4000; % N>1/TΔf=1/357*T
n=0:1:N-1; f=fs*n/N;
%DTMF 信号编码 dtmf(1,:)=sin(2*pi*row(1)*T*n)+sin(2*pi*col(1)*T*n); dtmf(2,:)=sin(2*pi*row(1)*T*n)+sin(2*pi*col(2)*T*n); dtmf(3,:)=sin(2*pi*row(1)*T*n)+sin(2*pi*col(3)*T*n); dtmf(4,:)=sin(2*pi*row(2)*T*n)+sin(2*pi*col(1)*T*n); dtmf(5,:)=sin(2*pi*row(2)*T*n)+sin(2*pi*col(2)*T*n); dtmf(6,:)=sin(2*pi*row(2)*T*n)+sin(2*pi*col(3)*T*n); dtmf(7,:)=sin(2*pi*row(3)*T*n)+sin(2*pi*col(1)*T*n); dtmf(8,:)=sin(2*pi*row(3)*T*n)+sin(2*pi*col(2)*T*n); dtmf(9,:)=sin(2*pi*row(3)*T*n)+sin(2*pi*col(3)*T*n); dtmf(10,:)=sin(2*pi*row(4)*T*n)+sin(2*pi*col(2)*T*n); %1 %2 %3 %4 %5 %6 %7 %8 %9 %0
matlab仿真实验报告
matlab仿真实验报告Matlab仿真实验报告引言:Matlab是一种广泛应用于科学和工程领域的数值计算软件,它提供了强大的数学和图形处理功能,可用于解决各种实际问题。
本文将通过一个具体的Matlab 仿真实验来展示其在工程领域中的应用。
实验背景:本次实验的目标是通过Matlab仿真分析一个电路的性能。
该电路是一个简单的放大器电路,由一个输入电阻、一个输出电阻和一个放大倍数组成。
我们将通过Matlab对该电路进行仿真,以了解其放大性能。
实验步骤:1. 定义电路参数:首先,我们需要定义电路的各个参数,包括输入电阻、输出电阻和放大倍数。
这些参数将作为Matlab仿真的输入。
2. 构建电路模型:接下来,我们需要在Matlab中构建电路模型。
可以使用电路元件的模型来表示电路的行为,并使用Matlab的电路分析工具进行仿真。
3. 仿真分析:在电路模型构建完成后,我们可以通过Matlab进行仿真分析。
可以通过输入不同的信号波形,观察电路的输出响应,并计算放大倍数。
4. 结果可视化:为了更直观地观察仿真结果,我们可以使用Matlab的图形处理功能将仿真结果可视化。
可以绘制输入信号波形、输出信号波形和放大倍数的变化曲线图。
实验结果:通过仿真分析,我们得到了以下实验结果:1. 输入信号波形与输出信号波形的对比图:通过绘制输入信号波形和输出信号波形的变化曲线,我们可以观察到电路的放大效果。
可以看到输出信号的幅度大于输入信号,说明电路具有放大功能。
2. 放大倍数的计算结果:通过对输出信号和输入信号的幅度进行计算,我们可以得到电路的放大倍数。
通过比较不同输入信号幅度下的输出信号幅度,可以得到放大倍数的变化情况。
讨论与分析:通过对实验结果的讨论和分析,我们可以得出以下结论:1. 电路的放大性能:根据实验结果,我们可以评估电路的放大性能。
通过观察输出信号的幅度和输入信号的幅度之间的比值,可以判断电路的放大效果是否符合设计要求。
MM1排队系统仿真matlab实验报告
M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即etkk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO ) 4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。
三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。
四、采用的语言MatLab 语言源代码:clear; clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;Mu=0.9; %服务率Mu;t_Arrive=zeros(1,SimTotal);t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间t_Arrive(1)=Interval_Arrive(1);%顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;CusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[0,0,1000,700]);subplot(2,2,1);title('各顾客到达时间和离去时间');stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'y');legend('到达时间','离去时间');hold off;subplot(2,2,2);stairs(Timepoint,CusNum,'b')title('系统等待队长分布');xlabel('时间');ylabel('队长');subplot(2,2,3);title('各顾客在系统中的排队时间和等待时间');stairs([0 ArriveNum],[0 t_Queue],'b');stairs([0 LeaveNum],[0 t_Wait],'y');hold off;legend('排队时间','等待时间');%仿真值与理论值比较disp(['理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]);disp(['理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]);disp(['理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]);disp(['理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp(['仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)])disp(['仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)])disp(['仿真系统中平均顾客数=',num2str(CusNum_avg)]);disp(['仿真系统中平均等待队长=',num2str(QueLength_avg)]);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔t_Arrive(1)=Interval_Arrive(1);%顾客到达时间时间计算t_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
matlab仿真实验总结
matlab仿真实验总结摘要:本文旨在介绍基于Matlab的仿真实验,从基本的Matlab 代码编写开始,到分析参数变化的影响,再到定量分析实验结果。
实验结果表明,通过Matlab的仿真实验,可以很容易地理解模型的参数变化对模型性能的影响,并对模型调整做出科学决策。
关键词:Matlab;仿真实验;参数变化;定量分析Matlab仿真实验总结一、实验目标1、掌握Matlab基本的语法、操作和使用;2、掌握利用Matlab进行模型仿真及参数调优的基本方法;3、熟悉Matlab程序运行过程,熟悉Matlab调试程序的基本方法;4、通过程序仿真实验,了解系统及模型的基本特性,定性分析及定量分析系统特性;二、实验内容1、基于Matlab的程序编写:(1)建立Matlab编辑器环境,熟悉编辑环境基本操作;(2)了解Matlab程序编写的基本方法,熟悉调试Matlab程序的基本方法;(3)编写模型仿真程序。
2、Matlab仿真实验:(1)分析仿真实验结果,收集数据;(2)定性分析实验结果,观察参数变化对结果的影响;(3)计算参数变化后的结果,定量分析实验结果;(4)将实验结果以图形的形式展示,完成Matlab仿真实验报告。
三、实验结果通过本次Matlab仿真实验,可以得出:1、通过Matlab的仿真实验,可以很容易地理解模型的参数变化对模型性能的影响,从而有效地进行模型调整;2、可以定量分析实验结果,从而更好地进行科学决策;3、Matlab操作安全,程序编写简单实用,可以有效地减少实验工时。
四、实验总结本次Matlab仿真实验对于掌握Matlab程序编写及仿真实验的基本方法,了解实验结果的定性及定量分析等方面有着很大的帮助,为今后更深入的Matlab程序及仿真研究打下了基础。
MATLAB仿真实验报告
MATLAB仿真实验报告MATLAB仿真实验报告实验三PID控制仿真实验一、实验目的1.掌握MATLAB6.5软件的使用方法。
2.完成直流伺服电机PID典型控制系统结构图设计及调试。
二、实验内容1.熟悉MATLAB6.5软件各菜单作用。
2.完成直流伺服电机PID典型系统结构图设计并调试成功。
三、实验设备微型计算机1台四、实验步骤1.双击桌面MATLAB6.5快捷图标,进入MATLAB仿真环境。
2.单击菜单simulink选项,进入其界面。
单击filenew--model进入新建文件界面。
3.在新建文件界面中,通过simulink选项的下拉菜单中选择仿真需要的函数及器件,组成仿真系统结构图。
4.仿真调试:鼠标单击“黑三角”图标,再双击“SCOPE”示波器,即可显示仿真结果。
5.改变参数,观察调试结果。
五、实验报告要求1.写出实验具体过程。
2.画出仿真结果图和仿真系统结构图。
实验四直流电机双闭环系统仿真实验一、实验目的1.掌握MATLAB6.5软件的使用方法。
2.完成双闭环典型系统结构图设计及调试。
二、实验内容1.熟悉MATLAB6.5软件各菜单作用。
2.完成PID典型系统结构图设计并调试成功。
三、实验设备微型计算机1台四、实验步骤1.双击桌面MATLAB6.5快捷图标,进入MATLAB仿真环境。
2.单击菜单simulink选项,进入其界面。
单击filenewmodel进入新建文件界面。
3.在新建文件界面中,通过simulink选项的下拉菜单中选择仿真需要的函数及器件,组成仿真系统结构图。
4.仿真调试:鼠标单击“黑三角”图标,再双击“SCOPE”示波器,即可显示仿真结果。
5.改变参数,观察调试结果。
五、实验报告要求1.写出实验具体过程。
2.画出仿真结果图和仿真系统结构图。
实验五直流电机控制模型仿真实验一、实验目的1.掌握MATLAB6.5软件的使用方法。
2.完成直流电机仿真系统结构图设计及调试。
二、实验内容1.熟悉MATLAB6.5软件各菜单作用。
matlab仿真实验报告,Matlab仿真及其应用实验报告.doc
matlab仿真实验报告,Matlab仿真及其应⽤实验报告.doc Matlab仿真及其应⽤ 实验报告温州⼤学物理与电⼦信息⼯程学院Matlab仿真及其应⽤ 实验报告课程名称:Matlab仿真及其应⽤班 级:10电信姓名:吴** 学号:1011000****实验地点:5B305⽇期:12.25实验⼆ Matlab 基本编程基础[实验⽬的和要求]熟悉MATLAB环境与⼯作空间熟悉变量与矩阵的输⼊、矩阵的运算熟悉M⽂件与M函数的编写与应⽤熟悉MATLAB控制语句与逻辑运算掌握if语句、switch语句、try语句的使⽤。
掌握利⽤for语句、while语句实现循环结构的⽅法。
[实验内容]1⾏100列的Fibonacc 数组a,a(1)=a(2)=1,a(i)=a(i-1)+a(i-2),⽤for循环指令来寻求该数组中第⼀个⼤于10000的元素,并之处其位置i。
编写M函数表⽰曲线以及它的包络线,并从命令窗⼝输⼊命令语句绘制曲线。
t的取值范围是[0,4π]。
设,编写⼀个M函数⽂件,使得调⽤f(x)时,x可⽤矩阵代⼊,得出的f(x)为同阶矩阵。
根据,求时的最⼤n值;与(1)的n值对应的y值。
已知求中,最⼤值、最⼩值、各数之和,以及正数、零、负数的个数。
输⼊⼀个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中,90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
求分段函数的值。
⽤if语句实现输出x=-5.0, -3.0, 1.0, 2.0, 2.5, 3.0, 5.0时的y值。
编写⼀M函数,实现近似计算指数,其中x为函数参数输⼊,当n+1步与n步的结果误差⼩于0.00001时停⽌。
编写⼀M函数,a和x作为M函数参数输⼊,函数⾥⾯分别⽤if结构实现函数表⽰实验结果及分析:1.a=ones(1,100); %定义数组for i=3:100a(i)=a(i-1)+a(i-2);if(a(i)>10000)a(i),break;endend ,i2.function y=ff(t)y1=exp(-t/3);y2=exp(-t/3).*sin(3*t); y=[y1;y2]3.function y=f(x);a=input('输⼊a值:');x=input('输⼊x值:');if(x<=-a)y=-1;elseif(x-a)y=x/a;elsey=1;endend4.for n=1:100f(n)=1./(2*n-1);y=sum(f)if y>=3my=y-f(n)breakendendmy5.f(1)=1,f(2)=0,f(3)=1; for n=4:100f(n)=f(n-1)-2*f(n-2)+f(n-3);enda=sum(f);b=max(f);c=min(f);p=f==0,d=sum(p);%p等于f为0的个数p1=f>0,e=sum(p1);p2=f<0,f=sum(p2);a,b,c,d,e,f6.clear;n=input('输⼊成绩:');m=floor(n/10);%取整switch mcase num2cell(9:10)disp('A'); %显⽰在控制框case 8disp('B');case 7disp('C');case 6disp('D');case num2cell(0:5)disp('E');otherwisedisp('error')end7.function y=ex3_4(x)for i=1:length(x)if (x(i)<0)&(x(i)~=-3)y(i)=x(i)^2+x(i)-6elseif (x(i)>=0)&(x(i)<5)&(x(i)~=2)&(x(i)~=3) y(i)=x(i)^2-5*x(i)+6else y(i)=x(i)^2-x(i)-1 endendy8.function t=ex3_4(x) n=0;t=1;y=1;x=input(‘’);while y>=0.00001n=n+1;y=x^n/factorial(n);t=t+y;endn9.function y=f(x);a=input('输⼊a值:'); x=input('输⼊x值:'); if。
MM1队列仿真
实验一 M/M/1队列仿真1、实验目的(1)了解什么是M/M/1队列(2)利用节点编辑器,创建一个类似的M/M/1队列(3)在仿真过程中将过滤器应用于数据收集,以及对后期仿真数据的数学研究。
2、实验环境Windows XP系统OPNET Modeler 10.0仿真软件3、实验原理M/M/1队列是由先进先出(FIFO)的缓冲区组成,数据包到达服从柏松分布。
M/M/1队列的性能优以下几个参数决定:●数据包到达速率●数据包大小●服务容量下图就是M/M/1队列的模型图1:图1 M/M/1队列的节点模型图4、实验步骤<一> M/ M/1队列节点创建新建一个工程名为ch04_mm1,场景名MM1的工程,单击“Quit”后退出,以后再设置此网络场景。
在项目编辑器出创建一个node model的场景:执行File >New命令,创建即可。
1 定义数据源模块(1)在工具栏中单击“Create Processer”按钮,设置一个处理机模块放在工作区中。
(2)编辑其属性,右击选择“Edit Attributes”进行编辑。
设置各个属性如图2:图2 源模块属性图其中,设置数据包生成的间隔时间为指数分布;设置Mean Outcome为0.1(数据包到达的平均时间0.1s);改变Packet Size 的属性,Mean time 为9000。
(3)单击“ok”关闭属性对话框,完成属性设置。
2 建立队列模型(1)创建一个队列(按“Create Queue”按钮即可),再放一个处理及模块在它的左边。
(2)右击队列模块,编辑属性如图3:图3 队列属性图模块改名为“queue”,“process model”为acb_fifo;确认service_rate为9600(3)单击“ok”按钮,完成属性设置,关闭对话框。
3 定义是数据池模块(1)在创建一个处理及模块放置于队列模块的右边,如图4:图4 数据池模型的三个节点(2)右击该模块,编辑其属性,name为sink,“process model”也为“sink”。
完整版MM1排队系统仿真matlab实验报告
M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度 法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值, 以与理论分析结果进行对比。
二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模 式、服务模式、服务员数量以及服务规则等因素决定的。
1、 顾客到达模式设到达过程是一个参数为的Poisson 过程,则长度为t 的时间内到达k 个呼常数,表示了平均到达率或Poisson 呼叫流的强度。
2、 服务模式设每个呼叫的持续时间为「,服从参数为的负指数分布,即其分布函数为P{X t} 1 e t ,t 03、 服务规则 先进先服务的规则(FIFO4、理论分析结果Q -在该M/M/1系统中,设,则稳态时的平均等待队长为1,顾客T --------的平均等待时间为 。
三、 实验内容M/M/ 1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按 FIFO (先入先出队列)方式服务。
四、 采用的语言MatLab 语言源代码:clear; clc;叫的概率 服从Poisson 分布,即Pk ⑴(t)k t k! e k 0,1,2,,其中 >0为一%M/M/1排队系统仿真SimTotal=input(' 请输入仿真顾客总数SimTotal='); % 仿真顾客总数;Lambda=0.4; % 到达率Lambda;Mu=0.9; % 服务率Mu;t_Arrive=zeros(1,SimTotal);t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;% 到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;% 服务时间t_Arrive(1)=Interval_Arrive(1);% 顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);% 顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; % 各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;% 各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];% 系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));% 到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp))CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;elseCusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum) if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);% 长系统平均等待队%仿真图figure(1); set(1,'position',[0,0,1000,700]);subplot(2,2,1);title(' 各顾客到达时间和离去时间'); stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'y'); legend(' 到达时间',' 离去时间'); hold off;subplot(2,2,2); stairs(Timepoint,CusNum,'b') title(' 系统等待队长分布');xlabel(' 时间');ylabel(' 队长');subplot(2,2,3);title(' 各顾客在系统中的排队时间和等待时间'); stairs([0 ArriveNum],[0 t_Queue],'b');hold on;stairs([0 LeaveNum],[0 t_Wait],'y');hold off; legend(' 排队时间',' 等待时间');%仿真值与理论值比较disp([' 理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]);disp([' 理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]); disp([' 理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]);disp([' 理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp([' 仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)])disp([' 仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)]) disp([' 仿真系统中平均顾客数=',num2str(CusNum_avg)]);disp([' 仿真系统中平均等待队长=',num2str(QueLength_avg)]);五、数据结构1. 仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda; %到达时间间隔,结果与调用exprnd(1/Lambda, m)函数产生的结果相同In terval_Serve=-log(ra nd(1,SimTotal))/Mu; %服务时间间隔t_Arrive(1)=Interval_Arrive(1); %顾客到达时间时间计算t_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
matlab 仿真实验报告
matlab 仿真实验报告Matlab 仿真实验报告引言:在科学研究和工程应用中,仿真实验是一种非常重要的手段。
通过在计算机上建立数学模型和进行仿真实验,我们可以更好地理解和预测现实世界中的各种现象和问题。
Matlab作为一种强大的科学计算软件,被广泛应用于各个领域的仿真实验中。
本文将介绍我进行的一次基于Matlab的仿真实验,并对实验结果进行分析和讨论。
实验背景:在电子通信领域中,信号的传输和接收是一个重要的研究方向。
而在进行信号传输时,会受到各种信道的影响,如噪声、衰落等。
为了更好地理解信道的特性和优化信号传输方案,我进行了一次关于信道传输的仿真实验。
实验目的:本次实验的目的是通过Matlab仿真,研究不同信道条件下信号传输的性能,并对比分析不同传输方案的优劣。
实验步骤:1. 信道建模:首先,我需要建立信道的数学模型。
根据实际情况,我选择了常见的高斯信道模型作为仿真对象。
通过Matlab提供的函数,我可以很方便地生成高斯噪声,并将其加入到信号中。
2. 信号传输方案设计:接下来,我需要设计不同的信号传输方案。
在实验中,我选择了两种常见的调制方式:频移键控(FSK)和相移键控(PSK)。
通过调整不同的调制参数,我可以模拟不同的传输效果。
3. 信号传输仿真:在信道模型和传输方案设计完成后,我开始进行信号传输的仿真实验。
通过Matlab提供的信号处理函数,我可以很方便地生成调制后的信号,并将其传输到信道中。
4. 信号接收和解调:在信号传输完成后,我需要进行信号接收和解调。
通过Matlab提供的信号处理函数,我可以很方便地对接收到的信号进行解调,并还原出原始的信息信号。
5. 仿真结果分析:最后,我对仿真结果进行分析和讨论。
通过对比不同信道条件下的传输性能,我可以评估不同传输方案的优劣,并得出一些有价值的结论。
实验结果与讨论:通过对不同信道条件下的信号传输仿真实验,我得到了一些有价值的结果。
首先,我观察到在高斯噪声较大的信道条件下,PSK调制比FSK调制具有更好的抗干扰性能。
北邮信息工程通信网理论基础实验2报告——M 排队系统
信息与通信工程学院通信网理论基础实验报告班级:姓名:学号:序号:日期:通信网理论基础实验报告实验二M/M/1 排队系统一、实验目的M/M/1 是最简单的排队系统,其假设到达过程是一个参数为的Poisson 过程,服务时间是参数为的负指数分布,只有一个服务窗口,等待的位置有无穷多个,排队的方式是FIFO。
M/M/1 排队系统的稳态分布、平均队列长度,等待时间的分布以及平均等待时间,可通过泊松过程、负指数分布、生灭过程以及Little 公式等进行理论上的分析与求解。
本次实验要求实现M/M/1 单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验内容根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、顾客到达模式设到达过程是一个参数为的Poisson 过程,则长度为的时间内到达k 个呼叫的概率服从Poisson 分布,即,其中λ0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
2、服务模式设每个呼叫的持续时间为,服从参数的负指数分布,即其分布函数为。
3、服务规则先进先服务的规则(FIFO)4、理论分析结果在该M/M/1 系统中,设,则稳态时的平均等待队长为(不是,顾客的平均等待时间为。
第1页通信网理论基础实验报告三、实验内容1、仿真时序图示例本实验中的排队系统为当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO 方式服务为M/M/1 排队系统。
理论上,我们定义服务员结束一次服务或者有顾客到达系统均为一次事件。
为第i 个任何一类事件发生的时间,其时序关系如下图所示。
S1 S2 S3 S4 D2 D3 D4 D5 b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 t1 t2 c1 t3 c2 t4 c3 t5 150 t t0 A3 A4 A5 A1 A2 bi第i 个任何一类事件发生的时间ti第i 个顾客到达类事件发生的时间ci第i 个顾客离开类事件发生的时间Ai为第i-1 个与第i 个顾客到达时间间隔Di第i 个顾客排队等待的时间长度Si第i 个顾客服务的时间长度顾客平均等待队长及平均排队等待时间的定义为1 T 1 n Qt dt Ri T 0 Q n Q n T i 1 其中,为在时间区间上排队人数乘以该区间长度。
MATLAB系统仿真实验报告一
MATLAB系统仿真实验报告(一实验一、MATLAB语言环境与基本运算一、实验目的及要求1.学习了解MATLAB语言环境2.练习MATLAB命令的基本操作3.练习MATLAB数值运算相关内容4.练习MATLAB符号运算相关内容5.撰写实验报告二、实验内容1.熟悉Matlab语言环境1).学习了解MATLAB语言环境MATLAB语言操作界面(主界面的各个窗口)主界面:工具栏:状态栏:命令窗口:文件窗口:工作空间窗口:历史命令窗口:变量查询命令who, whosWho:列出当前存储器中的所有变量Whos:列出当前工作空间中的所有变量,包括与他们的维数、字节、类型有关的变量目录与目录结构目录,文件夹,文件搜索路径联机帮助2).MATLAB基本操作命令demos,clc,clf,clear,contro-c(^c),diary Demos:Clc:命令窗口清屏。
Clf:清楚当前图形。
清楚工作空间。
Control+c:复制选定区域到粘贴板。
Diary:用于记录MATLAB窗口的输入的命令和响应输出,diary off关闭记录,diary on打开记录。
2.Matlab数值运算与符号运算1).MATLAB数值运算相关内容MATLAB变量及变量赋值变量名以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。
变量名区分大小写,不可使用保留字。
变量赋值:变量名=表达式。
初等矩阵函数ones, zeros, eye, rand, randn, sizeOnes:生成常熟1构成的数组。
Zeros:零数组。
Eye:生成单位矩阵。
Rand:生成随机数和矩阵。
产生标准正态分布的随机数或矩阵的函数。
Size:求矩阵的维数。
矩阵的基本运算+ 加- 减* 乘^ 乘方‘共轭转置/或\ 矩阵相除./或.\ 数组相除矩阵的特征运算det, eig, rank, svdDet:求行列式。
Eig:求特征值和特征向量。
Rank:计算矩阵的秩。
通信网络实验一MM 排队系统
通信网络实验一MM 排队系统通信网络实验一MM 排队系统一、引言通信网络是现代社会中至关重要的基础设施之一。
而在通信网络中,排队系统的性能对于网络的稳定运行和性能优化起着至关重要的作用。
本文将介绍通信网络实验一中的MM排队系统,并对其性能进行评估和优化。
二、MM排队系统的基本原理MM排队系统是一种基础的排队系统模型,其模拟了网络中的排队情况。
在MM排队系统中,顾客以一定的速率到达服务系统,然后按照先来先服务的原则排队等待服务。
每个顾客的服务时间是独立且满足指数分布的随机变量。
当一个顾客的服务完成后,下一个顾客就可以开始服务。
三、实验流程1. 确定实验参数在进行MM排队系统实验前,需要确定实验所需的参数。
包括到达率λ和服务率μ。
到达率表示单位时间内顾客到达的平均速率,服务率表示单位时间内一个服务通道的处理能力。
2. 生成顾客到达时间和服务时间根据确定的到达率λ和服务率μ,可以使用随机数生成算法来生成每个顾客的到达时间和服...(以上为文章的开头部分)(以下为文章的中间部分)四、实验结果分析根据实验数据,我们进行了如下分析和评估。
1. 平均等待时间通过实验记录的数据,我们计算了实验系统中顾客的平均等待时间。
根据MM排队系统的理论模型,可以得出等待时间的公式为:W = (ρ / (μ - λ)) * S其中,ρ为实际服务强度,计算公式为ρ = λ / μ,S为平均服务时间。
通过实验数据的计算,我们得出了不同到达率和服务率条件下的平均等待时间。
2. 系统资源利用率系统资源利用率可以评估系统运行的效率和资源利用率。
根据MM排队系统的理论模型,可以得出系统资源利用率的公式为:U = ρ = λ / μ通过实验数据的计算,我们得出了不同到达率和服务率条件下的系统资源利用率。
(以上为文章中间部分的一部分内容)(以下为文章的结尾部分)五、优化方案根据实验结果的分析,我们可以得出如下的优化方案。
1. 调整服务率根据系统资源利用率的计算结果,如果系统资源利用率过高,可以考虑增加服务率,提高系统的处理能力,以减少顾客的等待时间。
MM1排队系统仿真matlab实验报告
M/M/1排队系统实验报告一、实验目的本次实验要求实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、 顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率 服从Poisson 分布,即etkk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
2、 服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、 服务规则先进先服务的规则(FIFO ) 4、 理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。
三、实验内容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO (先入先出队列)方式服务。
四、采用的语言MatLab 语言 源代码:clear; clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;Mu=0.9; %服务率Mu;t_Arrive=zeros(1,SimTotal);t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间t_Arrive(1)=Interval_Arrive(1);%顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp)) CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;CusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[0,0,1000,700]);subplot(2,2,1);title('各顾客到达时间和离去时间');stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'y');legend('到达时间','离去时间');hold off;subplot(2,2,2);stairs(Timepoint,CusNum,'b')title('系统等待队长分布');xlabel('时间');ylabel('队长');subplot(2,2,3);title('各顾客在系统中的排队时间和等待时间');stairs([0 ArriveNum],[0 t_Queue],'b');stairs([0 LeaveNum],[0 t_Wait],'y');hold off;legend('排队时间','等待时间');%仿真值与理论值比较disp(['理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]);disp(['理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]);disp(['理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]);disp(['理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp(['仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)])disp(['仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)])disp(['仿真系统中平均顾客数=',num2str(CusNum_avg)]);disp(['仿真系统中平均等待队长=',num2str(QueLength_avg)]);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔t_Arrive(1)=Interval_Arrive(1);%顾客到达时间时间计算t_Wait=t_Leave-t_Arrive;%各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
计算机仿真排队系统实验报告(附代码)
计算机仿真实验报告第一题1. 作业内容应用排队系统流程图,用C语言编制仿真程序,求解以下问题。
修理店只有一个修理工,来修理的顾客到达次数服从泊松分布,平均4人/h;修理时间服从指数分布,平均需6min。
试求(随机数发生器采用float lcgrand(int stream) ,种子stream 为自己学号的最后两位。
):①修理店空闲的概率;②店内有三个顾客的概率;③店内至少有一个顾客的概率;④在店内顾客的平均数;⑤顾客在店内的平均逗留时间;⑥顾客必须在店内消耗15分钟以上的概率。
统计量实现算法:①修理店空闲的概率;p1=1-area_server_status/sim_timearea_server_status:总服务时间(即修理工在这段仿真时间里非空闲时间)sim_time:总仿真时间用1减去非空闲概率,即为空闲概率。
②店内有三个顾客的概率;p2=Three_people_time/sim_time增加变量Three_people_time,即有三个顾客在店内的时间。
三个顾客在店里,也就是说一个顾客在理发,两个人在排队,此时,无论是来一个新的客人或者离开一个客人,都会破坏这种三个人的状态,所以我们每次要统计的,就是这种三个人的状态持续的时间。
因此,用到的是time_since_last_event这个变量,该变量用于统计两种状态(事件,包括离开和到来)之间的事件。
因此,在每次计算完time_since_last_event之后,考察队伍中的人数是否为2,若为2,则把该段time_since_last_event加到Three_people_time中。
仿真结束时,用Three_people_time/总仿真时间,即为店内有三个顾客的概率。
③店内至少有一个顾客的概率;p3=p3=1-idle_time/sim_time增加变量idle_time,即店里空闲的概率(没有顾客),用1减去一个顾客都没有的概率,就是至少有一个顾客的概率。
北邮mm1级联通信网实验报告
通信网理论基础实验报告实验一:二次排队问题——M/M/1排队系统的级联 27班项明钧201321073127班唐睿2013210742一、实验目的M/M/1是最简单的排队系统,其假设到达过程是一个参数为λ的Poisson 过程,服务时间是参数为μ的负指数分布,只有一个服务窗口,等待的位置有无穷多个,排队的方式是FIFO 。
M/M/1排队系统的稳态分布、平均队列长度,等待时间的分布以及平均等待时间,可通过泊松过程、负指数分布、生灭过程以及Little 公式等进行理论上的分析与求解。
本次实验的目标有两个:实现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
仿真两个M/M/1级联所组成的排队网络,统计各个队列的平均队列长度与平均系统时间等值,验证Kleinrock 有关数据包在从一个交换机出来后,进入下一个交换机时,随机按负指数分布取一个新的长度的假设的正确性。
二、实验原理 1、 M/M/1排队系统根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间内到达k 个呼叫的概率)(t P k 服从Poisson 分布,即()()!ktk t P t k eλλ-=,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥.服务规则采用先进先服务的规则(FIFO )。
在该M/M/1系统中,设λρμ=,则稳态时的平均队长为[]1E N ρρ=-,顾客的平均等待时间为1T μλ=-。
2、 二次排队网络A B λ1μ2μ由两个M/M/1排队系统所组成的级联网络,顾客以参数为λ的泊松过程到达第一个排队系统A ,服务时间为参数为1μ的负指数分布;从A 出来后直接进入第二个排队系统B ,B 的服务时间为参数为2μ的负指数分布,且与A 的服务时间相互独立。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
M/M/1排队系统实验报告一、实验目的本次实验要现M/M/1单窗口无限排队系统的系统仿真,利用事件调度法实现离散事件系统仿真,并统计平均队列长度以及平均等待时间等值,以与理论分析结果进行对比。
二、实验原理根据排队论的知识我们知道,排队系统的分类是根据该系统中的顾客到达模式、服务模式、服务员数量以及服务规则等因素决定的。
1、顾客到达模式设到达过程是一个参数为λ的Poisson 过程,则长度为t 的时间到达k 个呼叫的概率 服从Poisson 分布,即etkk k t t p λλ-=!)()(,⋅⋅⋅⋅⋅⋅⋅⋅⋅=,2,1,0k ,其中λ>0为一常数,表示了平均到达率或Poisson 呼叫流的强度。
2、服务模式设每个呼叫的持续时间为i τ,服从参数为μ的负指数分布,即其分布函数为{}1,0t P X t e t μ-<=-≥3、服务规则先进先服务的规则(FIFO ) 4、理论分析结果在该M/M/1系统中,设λρμ=,则稳态时的平均等待队长为1Q ρλρ=-,顾客的平均等待时间为T ρμλ=-。
三、实验容M/M/1排队系统:实现了当顾客到达分布服从负指数分布,系统服务时间也服从负指数分布,单服务台系统,单队排队,按FIFO(先入先出队列)方式服务。
四、采用的语言MatLab语言源代码:clear;clc;%M/M/1排队系统仿真SimTotal=input('请输入仿真顾客总数SimTotal='); %仿真顾客总数;Lambda=0.4; %到达率Lambda;Mu=0.9; %服务率Mu;t_Arrive=zeros(1,SimTotal);t_Leave=zeros(1,SimTotal);ArriveNum=zeros(1,SimTotal);LeaveNum=zeros(1,SimTotal);Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间t_Arrive(1)=Interval_Arrive(1);%顾客到达时间ArriveNum(1)=1;for i=2:SimTotalt_Arrive(i)=t_Arrive(i-1)+Interval_Arrive(i);ArriveNum(i)=i;endt_Leave(1)=t_Arrive(1)+Interval_Serve(1);%顾客离开时间LeaveNum(1)=1;for i=2:SimTotalif t_Leave(i-1)<t_Arrive(i)t_Leave(i)=t_Arrive(i)+Interval_Serve(i);elset_Leave(i)=t_Leave(i-1)+Interval_Serve(i);endLeaveNum(i)=i;endt_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Wait_avg=mean(t_Wait);t_Queue=t_Wait-Interval_Serve;%各顾客在系统中的排队时间t_Queue_avg=mean(t_Queue);Timepoint=[t_Arrive,t_Leave];%系统中顾客数随时间的变化Timepoint=sort(Timepoint);ArriveFlag=zeros(size(Timepoint));%到达时间标志CusNum=zeros(size(Timepoint));temp=2;CusNum(1)=1;for i=2:length(Timepoint)if (temp<=length(t_Arrive))&&(Timepoint(i)==t_Arrive(temp))CusNum(i)=CusNum(i-1)+1;temp=temp+1;ArriveFlag(i)=1;elseCusNum(i)=CusNum(i-1)-1;endend%系统中平均顾客数计算Time_interval=zeros(size(Timepoint));Time_interval(1)=t_Arrive(1);for i=2:length(Timepoint)Time_interval(i)=Timepoint(i)-Timepoint(i-1);endCusNum_fromStart=[0 CusNum];CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);QueLength=zeros(size(CusNum));for i=1:length(CusNum)if CusNum(i)>=2QueLength(i)=CusNum(i)-1;elseQueLength(i)=0;endendQueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end);%系统平均等待队长%仿真图figure(1);set(1,'position',[0,0,1000,700]);subplot(2,2,1);title('各顾客到达时间和离去时间');stairs([0 ArriveNum],[0 t_Arrive],'b');hold on;stairs([0 LeaveNum],[0 t_Leave],'y');legend('到达时间','离去时间');hold off;subplot(2,2,2);stairs(Timepoint,CusNum,'b')title('系统等待队长分布');xlabel('时间');ylabel('队长');subplot(2,2,3);title('各顾客在系统中的排队时间和等待时间');stairs([0 ArriveNum],[0 t_Queue],'b');hold on;stairs([0 LeaveNum],[0 t_Wait],'y');hold off;legend('排队时间','等待时间');%仿真值与理论值比较disp(['理论平均等待时间t_Wait_avg=',num2str(1/(Mu-Lambda))]);disp(['理论平均排队时间t_Wait_avg=',num2str(Lambda/(Mu*(Mu-Lambda)))]);disp(['理论系统中平均顾客数=',num2str(Lambda/(Mu-Lambda))]);disp(['理论系统中平均等待队长=',num2str(Lambda*Lambda/(Mu*(Mu-Lambda)))]);disp(['仿真平均等待时间t_Wait_avg=',num2str(t_Wait_avg)])disp(['仿真平均排队时间t_Queue_avg=',num2str(t_Queue_avg)])disp(['仿真系统中平均顾客数=',num2str(CusNum_avg)]);disp(['仿真系统中平均等待队长=',num2str(QueLength_avg)]);五、数据结构1.仿真设计算法(主要函数)利用负指数分布与泊松过程的关系,产生符合泊松过程的顾客流,产生符合负指数分布的随机变量作为每个顾客的服务时间:Interval_Arrive=-log(rand(1,SimTotal))/Lambda;%到达时间间隔,结果与调用exprnd(1/Lambda,m)函数产生的结果相同Interval_Serve=-log(rand(1,SimTotal))/Mu;%服务时间间隔t_Arrive(1)=Interval_Arrive(1);%顾客到达时间时间计算t_Wait=t_Leave-t_Arrive; %各顾客在系统中的等待时间t_Queue=t_Wait-Interval_Serve; %各顾客在系统中的排队时间由事件来触发仿真时钟的不断推进。
每发生一次事件,记录下两次事件间隔的时间以及在该时间段排队的人数:Timepoint=[t_Arrive,t_Leave]; %系统中顾客数变化CusNum=zeros(size(Timepoint));CusNum_avg=sum(CusNum_fromStart.*[Time_interval 0] )/Timepoint(end);%系统中平均顾客数计算QueLength_avg=sum([0 QueLength].*[Time_interval 0] )/Timepoint(end); %系统平均等待队长2.算法的流程图六、仿真结果分析顾客的平均等待时间与顾客的平均等待队长,计算其方差如下:从上表可以看出,通过这种模型和方法仿真的结果和理论值十分接近,增加仿真顾客数时,可以得到更理想的结果。
但由于变量定义的限制,在仿真时顾客总数超过1,500,000时会溢出。
证明使此静态仿真的思想对排队系统进行仿真是切实可行的。
实验结果截图如下(SimTotal分别为100、1000、10000、100000):(仿真顾客总数为100000和1000000时,其图像与10000的区别很小)七、遇到的问题及解决方法1.在算法设计阶段对计算平均队长时对应的时间段不够清楚,重新画出状态转移图后,引入变量Timepoint用来返回按时间排序的到达和离开的时间点,从而得到正确的时间间隔的CusNum,并由此计算出平均队长。
2.在刚开始进行仿真时仿真顾客数设置较小,得到的仿真结果与理论值相差巨大,进行改进后,得到的结果与理论值相差不大。
3.刚开始使用exprnd(Mu,m)产生负指数分布,但运行时报错,上网查找资料后找到替代方法:改成Interval_Serve=-log(rand(1,SimTotal))/Mu;方法生成负指数分布,运行正常。
八、实验心得通过本次实验我对M/M/1单窗口无限排队系统有了更深的认识,同时对MatLab编程语言更加熟悉,并了解到仿真在通信网中的重要作用。
此次实验我受益匪浅。