matlab、lingo程序代码22-随机模拟与系统仿真
§5随机模拟与系统仿真

§3.5 随机模拟与系统仿真一. 随机现象的模拟例: 超市出口有若干个收款台,两项服务:收款、装袋。
顾客的到达的时间间隔是随机的;因顾客购买的货物量不同,所以服务时间的长短也是随机的。
可以利用计算机产生服从一定的规律(概率分布)的(伪)随机数,用随机数确定时间间隔和服务时间。
1. 随机变量及其分布随机事件:在一定条件下有可能发生的事件, 其全体记为Ω 。
概率:随机事件A ∈ Ω发生的可能性的度量 P(A), 0 ≤P(A) ≤ 1.定义: 在Ω的σ-集合类F 上的实值函数,P: ω → P(ω), ω ∈ F , 满足:1. 非负性:P(ω)≥0,2. 规范性:P(Ω)=1,3. 可列可加性:对 ω =U A i ⊆Ω, {A i }是两两不相容的事件,则 P(ω)= ∑P(A i ) ,称P 为F 上的概率测度.随机变量: 称在Ω上定义的实值函数 ξ :A → ξ (A) 为随机变量。
离散型: ξ ∈{a k ;k=1,2,…(,n)},连续型: ξ ∈(a, b) .随机变量的分布函数:F(x):=P(ξ <x):=P(ξ-1 (- ∞, x)), 其中 ξ-1 (-∞,x)={A ∈ Ω; - ∞ <ξ (A)<x} ∈ F 离散型 若 则称a k a 1 a 2 … a nP(ξ=a k ) p 1 p 2 … p n为离散随机变量 ξ 的分布列, 称函数 F(x)=P(ξ <x)= ∑ak<x p k 为随机变量 ξ 的分布函数。
连续型 若则称 函数p(x) 为随机变量 ξ 的分布密度, 称F(x)= P(ξ∈(-∞, x))为随机变量 ξ的分布函数几类常见的随机分布● 两点分布 只有两种可能结果(成功、失败)的实验称为贝努里试验。
试验成功的概率为p● 二项分布 n 重贝努里试验成功的次数ξ 。
● 离散的均匀分布1,)(1===∑=n k k k k pp a P ξ⎰=∈b a dt t p b a P )(]),[(ξ1)(=⎰+∞∞-dt t p )1(,)1()(<-==-p p p C k P k n k k n ξnk n a P k ,,2,1,/1)(Λ===ξ⎩⎨⎧=失败成功01ξ⎩⎨⎧=-===011)(x p x p x P ξ● 泊松分布 在单位时间间隔内随机事件平均发生的次数ξ .● 正态分布 许多偶然因素作用结果的总和。
如何通过MATLAB进行模拟与仿真

如何通过MATLAB进行模拟与仿真MATLAB是一种用于科学计算、数据分析和可视化的强大工具,它也是进行模拟和仿真的理想选择。
通过MATLAB,用户可以编写脚本或函数来描述和模拟各种现象,并通过可视化结果来验证和分析模拟过程。
在本文中,我们将介绍如何使用MATLAB进行模拟和仿真,包括建模、求解、可视化和分析。
首先,建立一个模型是进行模拟和仿真的第一步。
在MATLAB中,可以使用符号计算工具箱或数值计算方法来建立模型。
符号计算工具箱提供了一种使用符号表达式而不是数值进行计算的方法,这对于一些复杂系统的建模非常有用。
数值计算方法则使用数值解来近似求解模型。
在MATLAB中,可以通过定义变量和方程来建立模型。
例如,假设我们要建立一个简单的弹簧振动系统的模型,可以使用如下的方程:m*x''+k*x=0其中,m是质量,x是位移,k是弹簧常数。
我们可以使用MATLAB的符号计算工具箱来定义这个方程:syms x(t) m keqn = m * diff(x, t, t) + k * x == 0这样,我们就建立了一个描述弹簧振动系统的方程。
接下来,我们需要求解这个方程。
在MATLAB中,可以使用ode45函数来求解常微分方程。
例如,使用ode45函数求解上面的方程,并绘制振动的位移随时间的变化曲线:tspan = [0 10]; % 时间范围x0=1;%初始位移v0=0;%初始速度parameters = {m, k}; % 参数figure;plot(t, x(:, 1))xlabel('时间')ylabel('位移')title('弹簧振动')function dxdt = spring_ode(t, x, m, k)dxdt = [x(2); -k/m * x(1)];end在上面的代码中,我们定义了一个名为spring_ode的函数来描述弹簧振动的常微分方程。
Matlab中的模拟与仿真方法与工具

Matlab中的模拟与仿真方法与工具Matlab是一种广泛应用于科学与工程领域的编程语言和开发环境。
它提供了丰富的工具集与函数库,用于数据处理、数值计算、绘图等应用。
而在模拟与仿真方面,Matlab也拥有强大的功能与灵活性。
本文将介绍Matlab中的模拟与仿真方法与工具,涵盖数学建模、动态系统仿真、计算机视觉等方面的应用。
一、数学建模与仿真数学建模是一种通过数学方法来描述现实问题的过程,而Matlab提供了丰富的数学工具与函数,方便用户进行建模与仿真。
例如,可以利用Matlab中的优化工具箱,通过数学模型寻找最佳解决方案。
在这个过程中,用户可以选择合适的模型,引入约束条件,并使用优化算法求解。
另一方面,Matlab还提供了符号计算功能,可以实现对数学公式的符号化处理。
这对于一些复杂的问题尤为重要,它可以帮助用户更好地理解数学模型,并更方便地进行模拟与仿真。
通过符号计算,用户可以进行符号求导、符号积分等操作,从而得到更清晰的数学表达式。
二、动态系统仿真动态系统仿真是指利用数学模型来模拟和分析现实世界中的动态系统,Matlab拥有丰富的工具与函数库,用于动态系统的建模与仿真。
例如,用户可以利用Matlab中的Simulink工具箱,通过图形界面搭建动态系统的模型。
Simulink提供了丰富的模块库,用户可以选择合适的组件,通过连接与参数设置,构建完整的系统模型。
在动态系统仿真过程中,Matlab还支持对系统进行参数优化与辨识。
用户可以通过改变系统参数,观察系统响应,并使用优化算法来寻找最佳参数组合。
这对于系统设计与优化非常重要,可以帮助用户在系统设计初期就得到全面的性能评估。
三、计算机视觉仿真计算机视觉是指通过计算机算法和技术来模拟和实现人类的视觉功能,Matlab拥有强大的计算机视觉工具箱,可以进行图像处理、模式识别、目标检测等应用。
用户可以利用Matlab中的图像处理函数,对图像进行滤波、边缘检测、特征提取等操作。
利用Matlab进行模拟和实时系统仿真的指南

利用Matlab进行模拟和实时系统仿真的指南引言Matlab是一种强大的数学计算和仿真软件,广泛应用于科学研究、工程设计、数据分析等领域。
本文将为大家介绍如何使用Matlab进行模拟和实时系统仿真,帮助读者快速上手并取得良好的仿真效果。
一、Matlab的基本介绍1. Matlab的特点和优势Matlab具有易学易用、功能强大、成熟稳定的特点,可以进行高效的数值计算、绘图和数据处理。
通过Matlab,用户可以快速实现各类算法和模型,并进行可视化演示。
2. Matlab的基本操作和界面介绍Matlab的界面分为命令窗口、编辑器窗口、变量窗口和绘图窗口等区域,用户可以在不同窗口之间切换,并通过命令行输入相关指令进行计算和操作。
Matlab的操作类似于一种交互式的编程语言,用户可以通过函数和脚本来实现相应的功能。
二、Matlab的模拟仿真工具1. Matlab的Simulink工具Simulink是Matlab中的一个重要模块,用于图形化建模和仿真系统。
通过Simulink,用户可以使用图形化界面拖拽各类模块,建立复杂的系统模型,并进行仿真分析。
2. Simulink的使用方法用户可以通过拖拽不同的模块进行系统的建模,如信号源、控制器、传感器等,并通过参数设置实现相应功能。
Simulink还提供了丰富的仿真工具,例如时域仿真、频域分析等,帮助用户更好地理解系统性能。
三、Matlab的实时仿真工具1. Matlab的Real-Time Workshop工具Real-Time Workshop是Matlab中用于生成实时代码的工具,这使得用户可以将建立的仿真模型直接部署到硬件平台上进行实时控制。
2. Real-Time Workshop的使用方法用户可以通过将Simulink中的模型进行编译和配置,生成适用于不同硬件平台的实时代码。
通过这种方式,用户可以在硬件平台上实现实时控制,进行闭环仿真等应用。
四、案例分析1. 汽车倒车雷达系统仿真以汽车倒车雷达系统为例,介绍如何使用Matlab进行仿真。
利用Matlab进行模拟与仿真实验的基本方法

利用Matlab进行模拟与仿真实验的基本方法研究物理现象和工程问题时,我们常常需要进行模拟与仿真实验。
模拟与仿真实验是一种方便、经济且高效的方法,可以帮助我们更好地理解和预测系统的行为。
在模拟与仿真实验中,Matlab是一个功能强大且广泛使用的工具。
它不仅具有丰富的数学和工程计算功能,还提供了直观的用户界面和易于使用的命令语法。
本文将介绍利用Matlab进行模拟与仿真实验的基本方法。
一、了解问题在进行模拟与仿真实验之前,我们首先需要深入了解所研究问题的背景和相关理论知识。
只有充分理解问题,我们才能准确地建立数学模型和选择合适的仿真算法。
因此,在进行模拟与仿真实验之前,我们应该阅读相关的文献和教材,并与领域内的专家进行交流。
二、建立数学模型建立数学模型是模拟与仿真实验的关键步骤。
一个好的数学模型能够准确地描述模拟对象的行为,并能够反映出实际系统的特点。
在Matlab中,我们可以使用符号计算工具箱来建立数学模型。
符号计算工具箱可以帮助我们定义符号变量、运算符号表达式和求解方程等。
在建立数学模型时,我们需要注意选择合适的变量和参数,并使用正确的物理单位对其进行定义。
三、选择仿真算法选择合适的仿真算法是模拟与仿真实验的关键决策。
不同的问题可能需要使用不同的仿真算法。
在Matlab中,我们可以使用内置的仿真工具箱来选择和应用不同的仿真算法。
仿真工具箱提供了丰富的仿真算法库,如欧拉法、龙格-库塔法和有限元法等。
在选择仿真算法时,我们应该评估算法的精确性、速度和稳定性,并根据实际情况进行权衡取舍。
四、编写仿真程序在建立数学模型和选择仿真算法之后,我们需要使用Matlab编写仿真程序。
仿真程序是实现模拟与仿真实验的关键工具。
在编写仿真程序时,我们应该遵循一些基本的编程原则,如模块化设计、代码复用和错误处理等。
同时,我们应该充分利用Matlab的各种功能和工具,如图形界面设计、符号计算和并行计算等,以提高仿真程序的性能和可靠性。
如何使用Matlab技术进行模拟仿真

如何使用Matlab技术进行模拟仿真引言在科学研究和工程设计中,模拟仿真是一种重要的工具。
它可以帮助研究人员和工程师预测和评估系统的性能、优化设计方案、解决问题等。
近年来,Matlab成为了广泛使用的科学计算软件,具有强大的数值计算和仿真功能。
本文将介绍如何使用Matlab技术进行模拟仿真,以及一些常见的应用案例。
一、Matlab的基本介绍Matlab是由美国MathWorks公司开发的一种科学计算软件。
它具有丰富的数学函数库和各种工具箱,可以进行数值计算、数据可视化、统计分析、信号处理、控制系统设计等。
Matlab是一种解释性的编程语言,用户可以通过编写脚本文件或使用命令行进行交互式计算。
二、Matlab的仿真建模工具Matlab提供了Simulink这一强大的仿真建模工具。
Simulink使用图形化界面,可以直观地构建系统模型。
可以将系统抽象成各种不同的模块,通过连接这些模块来描述系统的结构和行为。
Simulink支持常见的连续时间仿真、离散时间仿真和混合仿真,并提供了丰富的仿真调试工具。
三、Matlab的数值计算和优化在模拟仿真过程中,通常需要进行数值计算和参数优化。
Matlab提供了强大的数值计算功能,可以进行矩阵运算、数值积分、微分方程求解、优化等。
用户可以通过编写自定义函数和调用内置函数来实现数值计算和优化任务。
Matlab还提供了各种优化算法,如遗传算法、模拟退火算法、粒子群优化算法等,可以解决复杂的优化问题。
四、Matlab在控制系统设计中的应用控制系统是一种常见的工程系统,如何设计合适的控制策略是一个重要的问题。
Matlab提供了专门的控制系统工具箱,包括系统建模、控制器设计、仿真测试等功能。
用户可以使用Matlab进行控制系统建模,通过调整控制器参数来达到所需的性能指标,并使用Simulink进行仿真测试。
Matlab还提供了自适应控制、最优控制、模糊控制等高级控制方法,可以满足不同的控制需求。
数学建模比赛前准备的Matlab和lingo代码

Matlab和lingo代码Matlab 0基础知识 .............................................................. 错误!未定义书签。
Polyval (2)Polyfit (3)interrep1 (3)回归分析 (4)牛顿迭代法求解非线性方程组 (5)建模课上的代码 (11)lingo求解部分 (20)目标规划 (24)第10章数据的统计描述和分析 (29)!7个工人,7个工作的分配问题; (30)案例分析 (31)差分方程 (34)!三阶段面试模型; (36)装配线平衡模型 (38)露天矿生产的车辆安排(CMCM2003B) (40)Matlab基础知识相关系数矩阵的方式,通过Matlab 软件进行相关性分析,得到主成分种类与重要指标的线性组合:4321375.0395.0398.0375.01x x x x z +++= (10)prod 连乘积for k=1:100p(k)=1-prod(365-k+1:365)/365^k;endfplot('f(x)',[xmin,xmax,ymin,ymax]) syms xint(f(x), x,a,b)Polyval 计算对多项式p(x)=1+2*x+3*x^2,计算在x=5,7,9的值。
>> p = [3 2 1];>> x=[5,7,9];>> polyval(p,[5 7 9])%结果为ans =86 162 262Polyfit 拟合曲线x=[1,2,4,7,9,12,13,15,17]';F=[1.5,3.9,6.6,11.7,15.6,18.8,19.6,20.6,21.1]';plot(x,F,'.')%从图像上我们发现:前5个数据应与直线拟合,后5个数据应与二次曲线拟合。
于是键入 : a=polyfit(x(1:5),F(1:5),1); a=polyfit(x(5:9),F(5:9),2)生日概率模型for n=1:100p(n)=1-prod(365-n+1:365)/365^n;endplot(p)c5=polyfit(n,p,5)c5 =-0.0000 0.0000 -0.0001 0.0023 -0.0046 -0.0020该多项式即为:0020.00046.00023.00001.00023456524334251--+-+=+++++x x x x x c x c x c x c x c x c 在Matlab 环境下继续键入下列指令:>> p5=polyval(c5,n); ////////用多项式近似计算100个概率值>> plot(n,p,n,p5,'.') ////////画出拟合多项式的图象与概率曲线作比较interrep1x0=[0,3,5,7,9,11,12,13,14,15]';y0=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]'plot(x0,y0) %完成第一步工作x=0:0.1:15;y=interp1(x0,y0,’x'); %用分段线性插值完成第二步工作plot(x,y)y=spline(x0,y0,’x');←plot(x,y) %用三次样条插值完成第二步工作指数模型t=1790:10:1980;x(t)=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 ];y=log(x(t));a=polyfit(t,y,1)r=a(1),x0=exp(a(2))x1=x0.*exp(r.*t);plot(t,x(t),'r',t,x1,'b')%%%%%%阻滞增长模型(或 Logistic 模型)%%%%%%%%%%建立函数文件curvefit_fun2.mfunction f=curvefit_fun2 (a,t)f=a(1)./(1+(a(1)/3.9-1)*exp(-a(2)*(t-1790)));在命令文件main.m中调用函数文件curvefit_fun2.m% 定义向量(数组)x=1790:10:1990;y=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76 ...92 106.5 123.2 131.7 150.7 179.3 204 226.5 251.4];plot(x,y,'*',x,y); % 画点,并且画一直线把各点连起来hold on;a0=[0.001,1]; % 初值% 最重要的函数,第1个参数是函数名(一个同名的m文件定义),第2个参数是初值,第3、4个参数是已知数据点a=lsqcurvefit('curvefit_fun2',a0,x,y);disp(['a=' num2str(a)]); % 显示结果% 画图检验结果xi=1790:5:2020;yi=curvefit_fun2(a,xi);plot(xi,yi,'r');% 预测2010年的数据x1=2010;y1=curvefit_fun2(a,x1)hold off回归分析←设回归模型为 y=β0+β1x,←在MATLAB命令窗口中键入下列命令进行回归分析(px_reg11.m)x=0.1:0.01:0.18;x=[x,0.2,0.21,0.23]';y=[42,41.5,45,45.5,45,47.5,49,55,50,55,55.5,60.5]';X=[ones(12,1),x]; %一元回归[b,bint,r,rint,stats]=regress(y,X,0.05);b,bint,stats,rcoplot(r,rint)←得结果和图←b =← 27.0269← 140.6194←bint =← 22.3226 31.7313← 111.7842 169.4546←stats =← 0.9219 118.0670 0.0000 3.1095←结果含义为←β0=27.0269 β1=140.6194←β0的置信区间是 [22.3226,31.7313]←β1的置信区间是 [111.7842,169.4546]←R2=0.9219 F=118.0670, p<10-4.←R是衡量y与x的相关程度的指标,称为相关系数。
在Matlab中进行模拟和仿真

在Matlab中进行模拟和仿真Matlab是一种功能强大的数学软件,广泛应用于科学研究、工程设计和数据分析等领域。
它不仅拥有丰富的数学函数库和绘图工具,还提供了一套强大的仿真和模拟功能,使用户能够更加方便地进行系统建模和性能评估。
本文将以Matlab中的模拟和仿真为主题,介绍其应用和原理,希望能为读者提供一些有用的参考和指导。
一、模拟与仿真的基本概念模拟和仿真是现代科学和工程中常用的研究方法,通过对实际系统进行数学建模和计算机模拟,可以在不进行实际试验的情况下,预测和评估系统的性能和行为。
模拟和仿真能够节省时间和成本,提高研究效率,使得科学家和工程师能够更快地了解和优化系统。
在Matlab中,模拟和仿真一般包括以下几个步骤:首先,确定系统的数学模型,即建立数学方程或差分方程描述系统的动态行为。
其次,选择仿真方法和算法,根据系统的特点和需求,确定合适的模拟算法,如欧拉法、龙格-库塔法等。
然后,设定仿真参数,包括仿真时间、步长等,这些参数将影响仿真结果的准确性和计算效率。
最后,执行仿真,并对仿真结果进行分析和评估。
二、Matlab中的模拟功能在Matlab中,模拟功能是通过内置的仿真工具和函数库来实现的。
Matlab提供了一系列用于数学建模和仿真分析的函数、工具箱和工具。
例如,Simulink是Matlab中最常用的仿真工具之一,它基于图形化仿真模型,可以快速搭建各种系统的模型,并进行仿真和分析。
Simulink提供了丰富的模块和工具箱,能够满足不同系统的建模和仿真需求。
用户可以通过拖放模块、连接信号线的方式,构建系统模型,并设置参数、仿真时间等。
Simulink还支持自定义模块和函数,用户可以根据具体需要,编写自己的模块和函数,以满足特定的仿真需求。
除了Simulink之外,Matlab还提供了其他一些实用的仿真函数和工具,如ode45函数用于解非刚性系统的常微分方程,ode15s函数用于解刚性系统的常微分方程等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随机模拟与系统仿真一. 随机现象的模拟例: 超市出口有若干个收款台,两项服务:收款、装袋。
顾客的到达的时间间隔是随机的;因顾客购买的货物量不同,所以服务时间的长短是随机的。
模拟这些随机现象,即利用计算机产生一系列数,每重复这一过程,产生的数列都不同,但是数列的构成服从一定的规律(概率分布),称这些数为随机数。
1. 随机变量及其分布随机事件:在一定条件下有可能发生的事件, 其全体记为Ω 。
概率:随机事件A ∈ Ω发生的可能性的度量 P(A), 0 ≤P(A) ≤ 1.定义: 在Ω的σ-集合类F 上的实值函数,P: ω → P(ω), ω ∈ F , 满足:1. 非负性:P(ω)≥0,2. 规范性:P(Ω)=1,3. 可列可加性:对 ω =U A i ⊆Ω, {A i }是两两不相容的事件,则 P(ω)= ∑P(A i ) ,称P 为F 上的概率测度.随机变量: 称在Ω上定义的实值函数 ξ :A → ξ (A) 为随机变量。
离散型: ξ ∈{a k ;k=1,2,…(,n)},连续型: ξ ∈(a, b) .随机变量的分布函数:F(x):=P(ξ <x):=P(ξ-1 (- ∞, x)), 其中 ξ-1 (-∞,x)={A ∈ Ω; - ∞ <ξ (A)<x} ∈ F离散型 若 则称a k a 1 a 2 … a nP(ξ=a k ) p 1 p 2 … p n为离散随机变量 ξ 的分布列, 称函数 F(x)=P(ξ <x)= ∑ak<x p k 为随机变量 ξ 的分布函数。
连续型 若则称 函数p(x) 为随机变量 ξ 的分布密度, 称F(x)= P(ξ∈(-∞, x))为随机变量 ξ 的分布函数 几类常见的随机分布两点分布 只有两种可能结果(成功、失败)的实验称为贝努里试验。
试验成功的概率为p 二项分布 n 重贝努里试验成功的次数ξ 。
离散的均匀分布连续的均匀分布1,)(1===∑=n k k k k pp a P ξ⎰=∈b a dt t p b a P )(]),[(ξ1)(=⎰+∞∞-dt t p )1(,)1()(<-==-p p p C a P k n k k n k ξnk n a P k ,,2,1,/1)( ===ξ⎩⎨⎧=失败成功01ξ⎩⎨⎧=-===011)(x p x p x P ξ泊松分布 在单位时间间隔内随机事件平均发生的次数ξ .N(μ,σ) 表示均值为μ,方差为 σ的正态分布。
1/λ2. 随机数和随机变量的模拟10. 随机数可由计算机产生均匀分布的(伪)随机数(rand) ,它在(0, 1) 中的分布是均匀的。
N(0,1)正态分布的(伪)随机数(randn),它满足均值为0, 方差为1的正态分布。
20.模拟离散随机变量设离散型随机变量 ξ 有分布列 {p i ;i=1,2,…,n}, 令则得到数组{p (k); k=1,2,…n.}. 以 p (k)为分点,将[0,1]分为 n 个小区间. 取服从[0, 1]区间上均匀分布的随机数R ∈[0, 1], 则容易证明: P( p (k-1) < R < p (k) ) = p k = P (ξ = a k ). 即随机事件 ― p (k-1) < R < p (k) ‖ 与 ―ξ =a k ‖ 有相同的概率分布。
因此取可以取在[0, 1]区间上均匀分布的随机数R=rand ,当p (k-1) < R < p (k)时,则认为事件 ξ =a k 发生。
例如,―顾客到达收款台的的规律是:40%的时间没有人来,30%的时间有1个人来,30%的时间有2个人来。
‖ 取随机数 y=rand, 记n 为新到的顾客数, 则当0≤y<0.4时, 令n=0; 当0.4 ≤ y<0.7时,令n=1;当0.7≤ y ≤ 1时,令n=2。
30.模拟连续随机变量设连续型随机变量ξ具有分布函数F(x), 记 η为[0, 1]上服从均匀分布的随机变量。
令γ=F -1(η), 则 P(γ∈(-∞, x))= P(F -1(η) ∈(-∞, x)) =P(η∈(-∞, F( x)))= F(x), 即γ与ξ 同分布。
因此可以取在[0, 1]区间上均匀分布的随机数y=rand , 令 x=F -1(y), 则x 为服从分布函数为F(x) 的随机数.例如, ― 顾客到达收款台的平均间隔时间是0.5 分钟‖, 即认为顾客到达的时间间隔服从1/λ=0.5 的指数分布,由随机数y=rand ,得到服从指数分布的随机数x= - ln y/ λ。
于是,后一位顾客到达时间-前一位顾客到达时间=x.特别,当y=randn 是服从N(0,1) 正态分布的随机数时, x=μ+σ1/2y 是服从N(μ, σ) 正态分布.二. 系统仿真(Simulation )1. 系统仿真:使用计算机对一个系统的结构和行为进行动态模拟,为决策提供必要的参考信息。
特点:对象真实、复杂,进行模仿。
2. 仿真模型:由计算机程序控制运行,从数值上模仿实际系统的动态行为。
3. 仿真过程1. 现实系统的分析:了解背景,明确目的,提出总体方案。
2. 组建模型:确定变量,明确关系,设计流程,编制程序。
3. 运行检验:确定初始状态,参量数值,运行程序,检验结果,改进模型。
4. 输出结果⎩⎨⎧<≥=-0,00,)(x x e x p x λλ0,)0(1)(==∑=p p p k i i k 1,)()1()(=<+n k k p p p三. 动态系统的仿真1. 时间步长法:把整个仿真过程分为许多相等的时间间隔,每个间隔为一个时间单位—时间步长。
在每个时间步长内模拟系统的动态。
用以控制时间步进(每一次进一个步长)的程序称为仿真时钟。
例池水含盐池中有水2000 m3,含盐 2 kg,以6m3 / 分的速率向池中注入浓度为0.5 kg / m3 的盐水,又以4 m3 / 分的速率从池中流出混合后的盐水。
问欲使池中盐水浓度达到0.2 kg / m3,需要多长时间?系统分析:池中有盐水,匀速注入浓盐水,匀速流出混合后的盐水,池中盐水的浓度变化。
目的:仿真池中盐水浓度的变化,给出达到给定浓度的时间。
变量、参量:时间t,体积V(t), 盐量S(t), 浓度p(t); 流入流速r I=6,流入浓度p I=0.5 , 流出流速r O=4, 流出浓度p(t), 给定浓度p*=0.2时间步长❒t=1 , 打印步长T=10.平衡关系:V( t+ ❒ t)=V(t)+ (r I– r O )❒ tS( t+ ❒ t)=S(t)+ (r I p I– r O p(t))❒ tP ( t+ ❒ t)=S( t+ ❒ t) /V( t+ ❒ t)初始状态:V(0)=2000, S(0)=2,p(0)=0.001Matlab程序clft=1; v=[2000];s=[2];p=[1/1000];V=[v(end)];S=[s(end)];P=[p(end)];x=[0];while p(end)<=0.2T=0;while T<10T=T+1; t=t+1;v=[v 1];s=[s 1];p=[p 0];v(t)=v(t-1)+2;s(t)=s(t-1)+3-4*p(t-1);p(end)=s(end)/v(end);if p(end)>0.2T=20;end;end;x=[x t-1];V=[V v(end)];S=[S s(end)];P=[P p(end)];end; V1=10^3.*V; a=[x',V1',S',P']例市场服务超市有两个出口的收款台,两项服务:收款、装袋。
两名职工在出口处工作。
有两种安排方案:开一个出口,一人收款、一人装袋;开两个出口,每个人既收款又装袋。
问商店经理应选择哪一种收款台的服务方案。
选择服务方案的标准:1. 顾客等待时间长短,2. 每分钟服务的顾客数量,3.服务的工作效率。
这里我们以第1个标准选择服务方案。
假设:1. 顾客的到达收款台是随机的,服从规律:40%的时间没有人来,30%的时间有1个人来,30%的时间有2个人来。
2. 收款装袋的时间是相同的。
3. 第一种方案中,收款与装袋同时进行。
参量,变量:n(t) 在时刻t 到达收款台人数, L(t) 在时刻t 在收款台等待人数,T1(t) 到时刻t为止所有排队顾客等待时间的总和。
T2(t) 到时刻t为止,所有已交款顾客接受服务的总时间,τ收款或装袋的时间。
平衡关系:当L(t)=0 且n(t)=0 时, L(t+❒ t)=L(t); T1(t+❒ t)=T1(t); T2(t+❒ t)=T2(t);否则L(t+❒ t))=L(t)+n(t)-1; T1(t+❒ t)=T1(t)+l(t); T2(t+❒ t)=T2(t)+ τ取时间步长❒t=1 ,收款或装袋的时间τ =1 。
在t时刻, 取随机数r=rand,当0≤r<0.4时, n(t)=0,当0.4≤ r<0.7时, n(t)=1,当0.7≤ r ≤1时, n(t)=2.仿真30分钟内收款台处的排队情况,Matlab程序clfL=zeros(1,31); %L 等待的顾客人数,T1=zeros(1,31); %T1等待时间的累加,T2=zeros(1,31); %T2服务时间的累加,L1=zeros(1,31);% L1到达顾客人数累加。
t=1; tau=1; x=0:30; r=rand(1,30);for i=1:30;t=t+1;if 0<=r(i) & r(i)<0.4n=0;elseif 0.4<=r(i) & r(i)<0.7n=1;else n=2;end;if L(t-1)==0 & n==0L(t)=L(t-1);T1(t)=T1(t-1);T2(t)=T2(t-1);L1(t)=L1(t-1);elseL(t)=L(t-1)+n-1;T1(t)=T1(t-1)+L(t);T2(t)=T2(t-1)+tau; L1(t)=L1(t-1)+n;end;end;r=[0 r]; a=[x',r',L',L1',T1',T2']eL=T2(end)/tau %已被服务的人数, L2=(find(L1>eL))L3=sum(L(L2))%未被服务的顾客等待时间总和g1=(T1(end)-L3)/eL %平均等待时间g2=g1+tau %平均逗留时间g3=eL/30 %平均每分钟服务的顾客人数.练习:编写设两个收款台时的仿真程序,根据两个模拟结果评价两个方案。