仿真系统概述

简介: 介绍仿真系统的概念,和设计一个仿真系统的大致步骤

什么是系统

讨论仿真系统之前我们需要明确什么是系统,这个概念可以帮助我们理解边界和范围。

那么什么是系统?

德谟克利特的著作《世界大系统》有一段关于系统的阐述:

任何事物都是在联系中显现出来的,都是在系统中存在的,系统联系规定了每一个事物,而每一个事物又能反映系统的联系的总貌。

中国著名学者钱学森的观点是:

系统是由相互作用相互依赖的若干组成部分结合而成的,具有特定功能的有机整体,而且这个有机整体又是它从属的更大系统的组成部分。

词典对于系统的解释是:

组成一个复杂整体的一组互相作用、互相联系或者依存的事物。

用一个汽车总装线来举例,各种零部件通过传送设备(履带或者其他设备),再有工人(或者是机械手臂)按照顺序组装。在这个系统中,工人,机械手臂,零部件相互作用。履带的速度影响零部件的到达,进而影响装配,流水线自身的划分和设计又影响了整体效率。

从上面这个例子可以感受到我们看系统的时候有两个重要的点:

一是边界,即确认需要研究事物范围,比如货币的供应量从某种程度上也可能对流水线有影响,但是我们并不会考虑它。

二是抽象,针对研究内容的不同,需要考虑的事物的详细程度也是不同的,比如机械手臂的出产公司虽然也是一种外部输入,但是会被统一抽象为机械手臂,对于其的特征建模也可以按照平均来计算。

还有一种更通用的描述系统的方式,即三要素,分别为实体,属性和活动。实体确定了系统构成,属性描述了实体特征,而活动描述了系统内部的相互作用。

什么是仿真

仿真一般是指对现实中的系统进行模仿,观测并产生人造过程记录的过程。

仿真最早用于水利研究,逐渐用于航空、航天和原子能技术等领域。后来随着计算机技术的大力发展,扩展到各行各业。

针对互联网公司,特别是线上线下融合较深的业务,由于线上试错成本高,反馈周期慢,通过仿真可以很好服务以下几点:

  • 业务形式新,基本没有可以参考的模型或者参数,加上缺少学术上的积累,仿真可以加速研究一个业务场景中复杂系统间的相互影响。

  • 仿真由于是对真实系统的模仿,所以速度和外部参数是可以调整,且对真实系统无影响,可以快速安全进行实验或者验证,加深对于系统行为的理解。

  • 仿真模型和实验的产出可能成为新知识的来源,用于优化业务。

仿真系统的构建方法

构建仿真系统流程如下:

系统建模

离散or连续

系统可以是离散,也可以是连续的。当然对于现实中的大多数系统,这两种变化都是共存的,一般我们取其中占多数的为准。

大部分自然系统都是连续系统,比如湖面的水位,由于降雨,自然蒸发等处于一个时刻变化的状态,而离散系统一般只在离散时间点发生变化的系统,绝对部分人造系统都属于离散系统。

除了特别的需要以外,大部分系统设计上都会做成离散系统,因为连续系统可以通过引入采样装置转为离散系统,比如上面提到的湖泊系统,就可以通过引入定时采样水质,水位等的装置让系统变成离散系统以方便处理。

确定核心要素

需要明确系统中的实体(包括属性),事件,活动。

我们以外卖配送来看,实体即骑手,顾客,商家,属性可能包括骑手速度,顾客位置,商家位置等,属性可以是从真实系统中获得,也可以是统计上的数据。

事件主要是对于整个配送有重要影响的,点外卖的时候有一些外卖APP会有进度提示,比如商家接单,商家出餐,骑手抢单,骑手送餐,送达顾客处等,当然这些只是展示出来的事件,系统内部可能更复杂,还有更多事件,确认核心要素的时候一般需要业务专家或者领域专家。

订单关键事件-1

订单关键事件-2

大部分系统单单靠事件就可以驱动了,但是有时候还需要明确活动。一般两个相邻且有先后顺序的事件,如果从逻辑上导致了状态的转移,那可以化为一个活动。比如外卖配送中从待取餐状态转移配送中状态,其实暗含了到店和取餐两个事件。活动并不是必须的,如果研究目的不涉及可以不关注。

确定仿真算法

目前有四种成熟仿真算法:

  • 事件调度

  • 活动扫描法

  • 进程交互法

  • 三阶段法

一个仿真系统可以采用一种算法,也可以混合多种使用。

仿真系统的时间由仿真钟控制,算法决定了仿真钟的推进方式。比如事件调度算法,就是每次推进一个固定的仿真钟步长,然后获取当前仿真钟上需要触发的事件,如果多个事件则按照优先级触发。

diagram-10459649492078318512.png

仿真钟的结束一般有两种,一种是终态仿真,即仿真钟在规定时间内停止,比如仿真一个小时的运行情况。另外一种是稳态仿真,这种仿真的仿真钟是无限的,停止条件由其他方式确定,比如某种特定的置信度达到一个阈值,则由外部停止仿真钟。

建立仿真模型

根据确定的仿真算法,梳理系统内部的状态变量和流转方式。再针对不同的事件确定事件对状态和实体属性的影响,明确事件间的相互影响。

用加油站来举例,车量入站,车辆等待加油,车辆加油完成,车辆离开就是一系列事件,期间可能的影响包括加油站内的车辆数量,可用加油枪的数量,剩余油量,收入等。

比如车辆开始加油事件发生时会在未来生成车辆加油完成这个事件,具体的完成时间需要通过统计学或者其他建模方式给出。

实现仿真系统

实现仿真系统主要有两个流派:

  • 基于高级语言自研
  • 基于仿真语言开发

还有一种就是从专业的支持公司购买仿真系统,并直接使用,比如anylogic,flexsim等。

自研就不用多说了,多用于新兴系统,且开发资源充足的公司。

仿真语言更适合成熟的系统,或者科研院校,比如Modelica (https://openmodelica.org)。

分析仿真结果

这个和仿真研究目的强关联,一般都是从仿真过程记录中加工获得结果数据。唯一需要注意的有随机性的仿真系统一次仿真只是一次抽象,要注意置信度。

仿真上云

仿真系统和普通的业务系统不同,它对于冷启动不敏感,资源需求大但是不均衡,同时仿真单个任务运行时间长。

一般仿真系统上云可以考虑的就是执行节点的动态伸缩,根据仿真任务的情况适当缩减或者扩容节点,按量付费。

另外还有一个可能的方向就是基于serverless,因为仿真系统本身可以基于事件驱动,搭配MQ可以通过事件来驱动function进行过程流转,中间过程可以落库,也可以写文件。由于没有具体操作过,效果还有费用上的对比没有数据,但是至少基于serverless的话伸缩性会很好。

参考

这里有一些公开的仿真应用:

另外补充阅读:

相关文章
|
7月前
|
JavaScript 数据安全/隐私保护 芯片
学校实训密码锁设计(基于STC51单片机)报告
学校实训密码锁设计(基于STC51单片机)报告
|
人机交互 iOS开发 MacOS
计算机系统概述
操作系统的概念、功能和目标 熟悉的操作系统 计算机系统的层次结构 操作系统的概念 操作系统的功能和目标 作为系统资源的管理者 作为用户和计算机之间的接口 用户接口 举一个例子: 联机命令接口 脱机命令接口 程序接口:可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。 注意; 系统调用=系统调用命令=广义指令 GUI 总结一下: 作为最接近硬件的层次 本章总结: 操作系统的四个特征 并发 注意: 操作系统的并发性和并发这两个概念注意区别 并行指同一时刻有多个处理器在执行任务,真正意义上同
63 0
|
6月前
|
机器学习/深度学习 传感器 人工智能
飞行器设计与仿真
飞行器设计与仿真
71 0
|
7月前
Trent电源设计那些事儿教学
Trent电源设计那些事儿教学
97 7
Trent电源设计那些事儿教学
|
传感器 芯片
【单片机课程设计】环境监测控制系统
【单片机课程设计】环境监测控制系统
149 0
基于51单片机的智能电子秤设计课程设计毕业设计
具体功能: 1、数码管显示当前的重量,单位是g; 2、有去皮和清零功能,可以通过三个按键微调校准重量; 3、最大称重9.999kg,超过最大量程声光报警。
221 0
|
7月前
|
传感器
毕业设计 基于51单片机自动智能浇花系统设计
毕业设计 基于51单片机自动智能浇花系统设计
【微机原理资料分享】基于8086简易洗衣机控制仿真设计
描述:带烘干机的自动洗衣机。 洗衣机可以处理三种不同类型的负载:轻型、中型和重型。 洗衣机有三个不同的循环:漂洗、洗涤和烘干。
238 0
 【微机原理资料分享】基于8086简易洗衣机控制仿真设计
|
安全 数据安全/隐私保护
【微机原理资料分享】基于8086家具门安全控制系统设计(仿真、程序、报告)
安全人员使用主密码更新当天的密码。按M按钮激活此模式。系统闪烁输入密码LED,要求人员输入密码。主密码是16位数的值。只给管理员一次输入密码的机会。如果经过验证,重试/更新LED发光。如果身份验证失败,则发出警报。当重试/更新LED发光时,用户必须输入当天的密码。这是12位数的值。一旦这个值已被系统接受,密码更新的LED发光。 ●用户进入房间时必须按O键,输入密码LED提示用户输入密码。用户也可以使用C/AC选项。如果第一次尝试失败,RETRY LED发光。允许用户重新输入密码,在身份验证门打开一段时间后1分钟。失败时发出警报。 ●要关闭警报,必须按下A按钮。输入密码LED发光提示用户输入
151 0
【微机原理资料分享】基于8086家具门安全控制系统设计(仿真、程序、报告)
|
传感器 存储 芯片
基于单片机的多功能出租车计价器设计资料
基于单片机的多功能出租车计价器设计资料
253 0
基于单片机的多功能出租车计价器设计资料