建模是表示模型的过程,包括模型的构建和运行。该模型与真实系统相似,有助于开发与验证等人员预测系统变化的影响。换句话说,建模就是创建一个代表系统(包括其属性)的模型。这是一种建立模型的行为。
系统仿真是在时间或空间方面对模型的操作,有助于分析现有或拟议系统的性能。换句话说,模拟是使用模型研究系统性能的过程。它是一种使用模型进行模拟的行为。
仿真的历史
仿真的历史沿革按时间顺序排列。
1940 年--研究人员(约翰-冯-诺依曼、斯坦尼斯瓦夫-乌兰、爱德华-特勒、赫尔曼-卡恩)和物理学家开发出一种名为 "蒙特卡罗 "的方法,用于研究曼哈顿中子散射项目。
1960 年--兰德公司(RAND Corporation)的哈里-马科维茨(Harry Markowitz)开发出第一种专用模拟语言,如 SIMSCRIPT。
1970 年--在此期间,开始研究模拟的数学基础。
1980 年--在此期间,开发了基于 PC 的仿真软件、图形用户界面和面向对象编程。
1990 年--在此期间,开发了基于网络的仿真、花哨的动画图形、基于仿真的优化、马尔可夫链蒙特卡罗方法。
开发仿真模型
仿真模型由以下部分组成:系统实体、输入变量、性能指标和功能关系。以下是开发仿真模型的步骤:
第 1 步 - 确定现有系统的问题或设定拟议系统的要求。
第 2 步 - 设计问题,同时考虑现有系统的因素和限制。
第 3 步 - 收集并开始处理系统数据,观察其性能和结果。
第 4 步 - 使用网络图开发模型,并使用各种验证技术进行验证。
第 5 步 - 将模型在各种条件下的性能与实际系统进行比较,从而验证模型。
第 6 步 - 创建一份模型文档,供将来使用,其中包括目标、假设、输入变量和性能的详细信息。
第 7 步 - 根据要求选择适当的实验设计。
第 8 步 - 在模型上引入实验条件并观察结果。
执行仿真分析
以下是进行仿真分析的步骤:
第 1 步 - 编写问题陈述。
第 2 步 - 为仿真过程选择输入变量并创建实体。变量分为两类--决策变量和不可控变量。决策变量由程序员控制,而不可控变量是随机变量。
第 3 步 - 将决策变量分配给模拟流程,从而为其创建约束条件。
第 4 步 - 确定输出变量。
第 5 步 - 从现实系统中收集数据,输入模拟程序。
第 6 步 - 绘制显示模拟过程进度的流程图。
第 7 步 - 选择合适的仿真软件运行模型。
第 8 步 - 将仿真结果与实时系统进行比较,验证仿真模型。
第 9 步 - 通过改变变量值对模型进行实验,以找到最佳解决方案。
第 10 步 - 最后,将这些结果应用到实时系统中。
建模与仿真 - 优势
使用建模与仿真的优势如下:
易于理解 - 无需使用实时系统,即可了解系统的实际运行情况。
易于测试 - 无需在实时系统上工作,即可对系统进行更改,并了解更改对输出的影响。
易于升级 - 可以通过应用不同的配置来确定系统需求。
易于识别限制因素 - 可以对造成工作流程、信息等延迟的瓶颈进行分析。
易于诊断问题--某些系统非常复杂,不容易同时理解它们之间的相互作用。然而,建模与仿真可以了解所有的相互作用并分析其影响。此外,还可以在不影响实际系统的情况下探索新的政策、操作和程序。
建模与仿真 - 缺点:
使用建模与仿真的缺点如下
设计模型是一门艺术,需要领域知识、培训和经验。
使用随机数对系统进行操作,因此很难预测结果。
模拟需要人力,是一个耗时的过程。
模拟结果难以转化。需要专家才能理解。
仿真过程费用昂贵。
建模与仿真 - 应用领域
建模与仿真可应用于以下领域 - 军事应用、培训与支持、半导体设计、电信、土木工程设计与演示以及电子商务模型。
此外,它还可用于研究生物系统等复杂系统的内部结构。它还可用于优化系统设计,如路由算法、装配线等。用于测试新的设计和策略。用于验证分析解决方案。
模型与事件
以下是建模与仿真的基本概念:对象是存在于现实世界中的实体,用于研究模型的行为。基础模型是对对象属性及其行为的假设性解释,在整个模型中有效。系统是现实世界中存在的、在确定条件下的可衔接对象。实验框架用于研究现实世界中的系统,如实验条件、方面、目标等。基本实验框架由两组变量组成--框架输入变量和框架输出变量,它们与系统或模型终端相匹配。框架输入变量负责匹配应用于系统或模型的输入。框架输出变量负责匹配系统或模型的输出值。集成模型是对系统的精确解释,它遵循给定实验框架的指定条件。Verification验证是比较两个或多个项目以确保其准确性的过程。在建模与仿真中,验证可以通过比较仿真程序和集成模型的一致性来完成,以确保它们的性能。执行验证过程有多种方法,我们将在后面介绍。Validation确认是比较两个结果的过程。在建模与仿真中,确认是通过比较实验测量结果和实验框架内的仿真结果来进行的。如果结果不匹配,则模型无效。确认过程有多种方法,我们将在后续介绍。
系统状态变量
系统状态变量是一组数据,用于定义给定时间点上系统的内部过程。在离散事件模型中,系统状态变量在时间间隔内保持不变,其值在称为事件时间的定义点发生变化。在连续事件模型中,系统状态变量由微分方程结果定义,其值随时间不断变化。以下是一些系统状态变量:实体和属性 - 实体代表一个对象,其值可以是静态的,也可以是动态的,这取决于与其他实体的过程。属性是实体使用的本地值。资源 - 资源是同时为一个或多个动态实体提供服务的实体。动态实体可以请求一个或多个资源单位;如果被接受,实体就可以使用该资源,并在使用完毕后释放。如果被拒绝,实体可加入队列。队列--队列用于表示实体和资源使用的队列。队列有多种可能,如后进先出、先进先出等,具体取决于流程。延迟 - 由系统条件的某些组合造成的不确定持续时间。
模型分类
系统可分为以下几类:离散事件仿真模型 - 在该模型中,状态变量值仅在事件发生的某些离散时间点发生变化。事件只会在规定的活动时间和延迟时间发生。随机系统与确定系统 - 随机系统不受随机性影响,其输出也不是随机变量,而确定系统受随机性影响,其输出是随机变量。静态仿真与动态仿真 - 静态仿真包括不受时间影响的模型。例如Monte Carlo模型。动态仿真包括受时间影响的模型。离散系统与连续系统 - 离散系统受离散时间点上状态变量变化的影响。其行为如下图所示。
连续系统受状态变量的影响,状态变量作为函数随时间连续变化。其行为如下图所示。
建模过程建模过程包括以下步骤:
第 1 步 - 研究问题。在这一阶段,我们必须了解问题,并选择相应的分类,如确定性或随机性。第 2 步 - 设计模型。在这一阶段,我们必须执行以下简单任务,以帮助我们设计模型:
根据系统行为和未来需求收集数据;分析系统特征、假设以及为使模型成功而需采取的必要行动;确定模型中使用的变量名、函数、单位、关系及其应用;使用合适的技术求解模型,并使用验证方法验证结果。然后,验证结果;编写一份报告,其中包括结果、解释、结论和建议。第 3 步 - 在完成与模型相关的整个流程后提出建议。包括投资、资源、算法、技术等。
验证和确认 Validation&Verification
仿真工程师面临的真正问题之一是验证模型。只有当仿真模型准确地再现了实际系统时,仿真模型才是有效的,否则就是无效的。
验证和确认是任何仿真项目中验证模型的两个步骤:
Validation验证是比较两个结果的过程。在这个过程中,我们需要将概念模型的表示与实际系统进行比较。如果比较结果为真,则模型有效,否则无效。
Verification确认是比较两个或多个结果以确保其准确性的过程。在这个过程中,我们必须将模型的实现及其相关数据与开发人员的概念描述和规格说明进行比较。
验证和确认技术
仿真模型的验证和确认有多种技术。以下是一些常见的技术:
以下是对仿真模型进行验证的方法:
使用编程技巧编写和调试子程序;
使用 "结构化演练 "策略,由多人阅读程序;
跟踪中间结果,并与观察到的结果进行比较;
使用各种输入组合检查仿真模型输出;
将最终仿真结果与分析结果进行比较。
验证仿真模型的技术
步骤 1 - 设计一个高度有效的模型。可通过以下步骤实现:
设计模型时必须与系统专家进行讨论;
模型必须在整个过程中与客户互动;
输出结果必须由系统专家监督。
第 2 步 - 根据假设数据测试模型。这可以通过将假设数据应用到模型中并对其进行定量测试来实现。还可以进行敏感性分析,以观察输入数据发生重大变化时结果变化的影响。
第 3 步 - 确定模拟模型的代表性输出。可通过以下步骤实现:
确定模拟输出与真实系统输出的接近程度;
可以使用图灵测试进行比较。它以系统格式呈现数据,只有专家才能解释;
统计方法可用于比较模型输出与真实系统输出。
模型数据与真实数据的比较
模型开发完成后,我们必须将其输出数据与真实系统数据进行比较。以下是进行比较的两种方法。
验证现有系统:
在这种方法中,我们使用模型的真实输入,将其输出与真实系统的真实输入进行比较。这一验证过程简单明了,但在执行时可能会遇到一些困难,例如,如果要将输出与平均时长、等待时间、空闲时间等进行比较,可以使用统计检验和假设检验进行比较。统计检验包括卡方检验、Kolmogorov-Smirnov 检验、Cramer-von Mises 检验和矩量检验。
验证首次模型:
考虑到我们必须描述一个目前不存在、过去也不存在的拟议系统。因此,没有可用的历史数据来比较其性能。因此,我们必须使用一个基于假设的假定系统。以下有用的要点将有助于提高其效率。
子系统有效性 - 模型本身可能没有任何现有系统可与之比较,但它可能由已知的子系统组成。可以分别测试每个子系统的有效性。
内部有效性--一个内部差异较大的模型将被拒绝,因为一个内部过程差异较大的随机系统会掩盖输入变化带来的输出变化。
敏感性分析 - 它提供了系统中敏感参数的信息,我们需要对这些参数给予更多关注。
表面有效性 - 当模型的表现与逻辑相反时,即使它的表现与真实系统相似,也应予以否定。
离散模型仿真
在离散系统中,系统状态的变化是不连续的,系统状态的每次变化都称为一个事件。离散系统仿真中使用的模型有一组数字来表示系统状态,称为状态描述符。在本文中还将介绍队列仿真,这是离散事件仿真和分时系统仿真中非常重要的一个方面。
以下是离散系统仿真的行为图示:
离散事件仿真 - 主要特点
离散事件仿真通常由使用高级编程语言(如 Pascal、C++ 或其他专门的仿真语言)设计的软件来执行。以下是五个主要特征:
实体 - 表示机器部件等真实元素。
关系 - 指将实体联系在一起。
仿真执行器 - 它负责控制提前时间和执行离散事件。
随机数生成器 - 它有助于模拟进入仿真模型的不同数据。
结果和统计 - 它验证模型并提供其性能指标。
时间图表示法
每个系统都取决于时间参数。在图形表示法中,它被称为时钟时间或时间计数器,初始时设置为零。时间的更新基于以下两个因素:
时间切分 - 这是模型为每个事件定义的时间,直到没有任何事件发生。
下一个事件 - 模型为下一个要执行的事件定义的事件,而不是时间间隔。它比时间片更有效。
队列系统仿真
队列是系统中正在接受服务的所有实体和等待轮到他们的实体的组合。
参数:
以下是队列系统中使用的参数列表。
符号 说明
λ 表示到达率,即每秒到达的人数
Ts 表示每次到达的平均服务时间,不包括队列中的等待时间
σTs 表示服务时间的标准偏差
ρ 表示服务器空闲和繁忙时的时间利用率
u 表示流量强度
r 表示系统中项目的平均值
R 表示系统中的项目总数
Tr 表示系统中项目的平均时间
TR 表示系统中项目的总时间
σr 表示 r 的标准偏差
σTr 表示 Tr 的标准偏差
w 表示队列中等待物品的平均数量
σw 表示 w 的标准差
Tw 表示所有项目的平均等待时间
Td 表示在队列中等待的项目的平均等待时间
N 表示系统中服务器的数量
mx(y) 表示第 y 个百分位数,即低于该百分位数的 y 值在 x 出现的时间中占 y%。
单服务器队列
这是最简单的队列系统,如下图所示。系统的中心元素是服务器,它为连接的设备或项目提供服务。如果服务器处于空闲状态,则项目请求系统提供服务。那么它就会立即得到服务,否则就会加入等待队列。服务器完成任务后,项目离开。
多服务器队列
顾名思义,该系统由多个服务器和一个用于所有项目的共同队列组成。当任何项目请求服务器时,如果至少有一台服务器可用,就会分配给它。否则,队列开始启动,直到服务器空闲为止。在这个系统中,我们假设所有服务器都是相同的,即哪个项目选择哪个服务器没有区别。
但利用率是个例外。假设 N 是相同的服务器,那么 ρ 就是每个服务器的利用率。设 Nρ 为整个系统的利用率,则最大利用率为 N*100%,最大输入率为:
$λmax = frac{{text{N}}{text{T}s}$
队列关系
下表显示了一些基本队列关系:
一般术语 单服务器 多服务器
r = λTr 利特尔公式 ρ = λTs ρ = λTs/N
w = λTw利特尔公式 r = w + ρ u = λTs = ρN
Tr = Tw + Ts r = w + Nρ
分时系统仿真
时间共享系统的设计方式是,每个用户只使用系统上共享时间的一小部分,从而导致多个用户同时共享系统。每个用户的切换如此迅速,以至于每个用户都感觉在使用自己的系统。它基于 CPU 调度和多程序设计的概念,通过在一个系统上同时执行多个任务,可以有效地利用多个资源。
连续系统仿真连续系统是指系统的重要活动在没有任何延迟的情况下顺利完成的系统,即没有事件排队、没有时间仿真排序等。在对连续系统进行数学建模时,其代表属性的变量由连续函数控制。什么是连续仿真?连续仿真是一种状态变量随时间连续变化的仿真类型。以下是其行为的图形表示。
为什么使用连续仿真?
我们必须使用连续仿真,因为它取决于与系统相关的各种参数的微分方程以及我们已知的估计结果。应用领域连续模拟用于以下领域。土木工程中的堤坝建设和隧道建设。在军事领域,用于导弹弹道模拟、战斗机训练模拟以及水下航行器智能控制器的设计和测试。在物流领域,用于收费广场设计、机场航站楼客流分析和航班时刻主动评估。在业务开发方面,用于产品开发规划、员工管理规划和市场研究分析。
蒙特卡罗仿真蒙特卡罗仿真是一种计算机化的数学技术,可根据某些已知分布生成随机样本数据,用于数值实验。这种方法适用于风险定量分析和决策问题。金融、项目管理、能源、制造、工程、研发、保险、石油天然气、交通等各行各业的专业人士都在使用这种方法。1940 年,研究原子弹的科学家首次使用这种方法。这种方法可用于我们需要做出估计和不确定决策的情况,如天气预报预测。
蒙特卡罗仿真 - 重要特征以下是蒙特卡洛法的三个重要特征 - 它的输出必须产生随机样本:其输出必须产生随机样本;其输入分布必须已知;在进行实验时必须知道实验结果;
蒙特卡罗仿真 - 优点易于实施;利用计算机为数值实验提供统计采样;提供数学问题的近似解;既可用于随机问题,也可用于确定性问题。
蒙特卡罗模仿真- 缺点耗费时间,因为需要生成大量抽样才能获得所需的输出;这种方法的结果只是真实值的近似值,而不是精确值。
蒙特卡罗模拟法 - 流程图下图是蒙特卡罗模拟的一般流程图。
建模与仿真 - 数据库
建模与仿真中的数据库旨在为分析和测试目的提供数据表示及其关系。第一个数据模型由 Edgar Codd 于 1980 年提出。该模型的突出特点如下:数据库是定义信息及其关系的不同数据对象的集合;规则用于定义对象中数据的约束条件;操作可应用于对象以检索信息。
最初,数据建模基于实体和关系的概念,其中实体是数据信息的类型,关系代表实体之间的关联。数据建模的最新概念是面向对象设计,其中实体被表示为类,在计算机编程中用作模板。一个类有自己的名称、属性、约束以及与其他类对象的关系。其基本表示法如下
数据表示事件的数据表示:仿真事件具有事件名称和相关时间信息等属性。它表示使用与输入文件参数相关联的一组输入数据执行所提供的模拟,并以一组输出数据的形式提供结果,这些数据存储在与数据文件相关联的多个文件中。
输入文件的数据表示:每个仿真过程都需要一组不同的输入数据及其相关参数值,这些数据在输入数据文件中表示。输入文件与处理模拟的软件相关联。数据模型通过与数据文件的关联来表示引用文件。
输出文件的数据表示:模拟过程结束后,会产生各种输出文件,每个输出文件都表示为一个数据文件。每个文件都有其名称、描述和通用因子。一个数据文件分为两个文件。第一个文件包含数值,第二个文件包含数值文件内容的描述信息。
建模与仿真中的神经网络
神经网络是人工智能的一个分支。神经网络是由许多被称为单元的处理器组成的网络,每个单元都有自己的小型本地存储器。每个单元通过单向通信通道连接起来,这些通道被称为 "连接",用于传输数字数据。每个单元只对其本地数据和从连接处接收的输入数据进行处理。
历史
仿真的历史按时间顺序排列:第一个神经模型由 McCulloch 和 Pitts 于 1940 年开发;1949 年,唐纳德-赫伯撰写了《行为的组织》一书,指出了神经元的概念;1950 年,随着计算机的发展,建立这些理论的模型成为可能。这项工作由 IBM 研究实验室完成。然而,这项工作失败了,后来的尝试取得了成功;1959 年,伯纳德-维德罗(Bernard Widrow)和马西安-霍夫(Marcian Hoff)开发了名为 "ADALINE "和 "MADALINE "的模型。这些模型具有多重 ADAptive LINear 元件。MADALINE 是第一个应用于实际问题的神经网络;1962 年,罗森布拉特(Rosenblatt)开发了感知器模型,该模型具有解决简单模式分类问题的能力;1969 年,明斯基和帕帕特从数学角度证明了感知器模型在计算中的局限性。据说,感知器模型无法解决X-OR问题。这些缺陷导致了神经网络的暂时衰落;1982 年,加州理工学院的约翰-霍普菲尔德(John Hopfield)向美国国家科学院提交了他的论文,提出了利用双向线制造机器的想法。在此之前,人们使用的是单向线;当涉及符号方法的传统人工智能技术失败后,人们开始需要使用神经网络。神经网络具有大规模并行技术,可提供解决此类问题所需的计算能力。。。。。。。
应用领域
神经网络可用于语音合成机、模式识别、检测诊断问题、机器人控制板、智能驾驶视觉识别和医疗设备等。
建模与仿真中的模糊集
如前所述,连续仿真的每个过程都取决于微分方程及其参数,如 a、b、c、d > 0。但是,有时这些估计值是不确定的,因此我们需要微分方程中的模糊数来提供未知参数的估计值。
什么是模糊集?
在经典集合中,一个元素要么是集合的成员,要么不是。模糊集是用经典集 X 来定义的,即:A = {(x,μA(x))| x∈X}情况 1 - 函数 μA(x) 具有以下性质∀x ∈ X μA(x) ≥ 0sup x ∈ X {μA(x)} = 1
情况 2 - 假设模糊集 B 定义为 A = {(3, 0.3), (4, 0.7), (5, 1), (6, 0.4)}, 那么它的标准模糊符号为 A = {0.3/3, 0.7/4, 1/5, 0.4/6} 。
任何成员等级为零的值都不会出现在集合的表达式中。
情况 3 - 模糊集合与经典清晰集合的关系。
下图描述了模糊集与经典脆集之间的关系:
(欢迎申请加入智能驾驶交流学习群,加小编微信号zhijiashexiaoming)