• 仿真1. 什么是仿真系统


    背景:2019年,在我司某部门某承载网相关项目任开发SE。有兄弟项目组,专做通信网络仿真,每年投资数亿美元,虽然产品性能极差(只能仿真6000节点),且消耗资源甚巨(多台32U128G物理机部署),却自以为是,目中无人。遂决心,自己搞一套仿真平台和相关应用出来,一则丰富学识,一则羞辱众人。

      仿真指的是利用模型模仿实际行为进行实验研究。而仿真软件,就是用代码对现实世界中的事物进行建模,并模仿其行为的软件系统。

      仿真软件的应用范围广泛,小到对银行排队叫号的模拟,大到对城市交通、城市通信网络的研究,甚至在军事、航空航天等科技领域也都有仿真软件的身影。

      一个仿真系统,通常由“实体(Entity)”、“事件(Event)”、“活动(Activity)”、“进程(Process)”、“仿真时钟(Simulation Clock)”、“统计计数器(Statistic Counter)”组成,这也叫做仿真系统的基本要素。

      “实体(Entity)”一般包含“临时实体”和“永久实体”。“临时实体”只存在一段时间,由系统外部到达和进入系统。而“永久实体”则是永久驻留在系统内的实体。仿真系统的状态变化就是由实体的状态变化引起的。

      比如在一个通信基站的仿真中,手机等移动终端就是“临时实体”,它们只在基站信号覆盖范围内短暂的停留,而通信基站则是“永久实体”,它不可移动,永久存在于系统中的固定位置。还比如道路交通仿真,车辆和行人是“临时实体”,道路和红绿灯是“永久实体”,等等。

      “事件(Event)”指的是引起系统状态变化的行为。“手机进入基站覆盖范围事件”会引起系统状态的变化:基站由“空闲”,变成了“使用”;“红灯变成绿灯事件”也会引起系统状态变化:车辆由“停止”,变成了“前进”,等等。

      一个系统中往往有许多种事件,事件的发生与某一实体相联系,并可能引起其他事件的发生。仿真模型中必须建立事件表,记录已经发生或者将要发生的事件的类型、时间、关联的实体等属性。

      事件又常分为“离散事件”和“连续事件”,对于二者的区别我们将在下一篇文章详述。

      “活动(Activity)”通常用于表示两个可以区分的事件之间的过程,是实体在两个事件之间保持某一状态的持续过程,它标志着系统状态之间的转移。一般两个相邻且有先后顺序和逻辑关系的事件可以看做一个活动。

      大部分系统靠事件即可驱动,但有时还是需要明确活动,活动并不是必须的。

      比如“红灯变成绿灯事件”和“绿灯变成红灯事件”可以组合成“红绿灯的变化活动”。

      “进程(Process)”由若干个事件和活动组成,它描述了事件和活动之间的逻辑和时序关系。进程是对事件和活动的更高层次抽象,通常代表更粗粒度的现实行为。

      比如“车辆通过红绿灯进程”可以看成是车辆和红绿灯的事件和活动的组合。

      “仿真时钟(Simulation Clock)”用于描述仿真时间的变化。在连续系统中,仿真时间的变化基于仿真时钟步长的确定,比如CPU按固定的步长持续推进时间。在离散事件系统中,引起系统状态变化的事件是随机发生的,因而仿真时钟的步长也是随机的,从一个事件发生时刻推进到另一个事件发生时刻具有跳跃性和随机性。

      “统计计数器(Statistic Counter)”用来记录实体的每一次事件或活动,并对所有的记录进行分析,使得所有的仿真具有相关的统计意义,进而指导现实决策。

      通过以上了解,我们熟悉了仿真的概念和意义,以及仿真系统的基本要素。在我们日后仿真系统的开发设计过程中,将作为重要的参考。

  • 相关阅读:
    【Unity学习笔记】基础游戏单位GameObject中常用的属性和API
    SQL进阶语法
    树莓派移植FFmepg记录(x264、硬件编码支持)
    潜在风险如何规避?可燃气体报警器定期校准是关键
    纯 Qml 实现仿画图3D的颜色选择器(更强更易用)
    网站为什么需要https证书以及如何申请
    学习-Java输入输出之File类之文件创建删除
    2020年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
    合合信息大模型加速器亮相WAIC大会:文档解析与文本识别新突破
    如何在虚幻引擎中渲染动画?
  • 原文地址:https://blog.csdn.net/liuqiker/article/details/127826717