仿真和仿真有什么区别


97

我经常在计算机科学中看到 仿真仿真。这两个术语似乎是同义词。仿真仿真之间有什么区别吗?

Answers:


108

是的,概念不同。


模拟

A simulation是一个行为其他类似的系统,但是以完全不同的方式实现。它提供了系统的基本行为,但不一定必须遵守要模拟的系统的所有规则。它可以让您了解某些事物的工作原理。

以飞行模拟器为例。外观和感觉就像您正在驾驶飞机,但是您完全脱离了驾驶飞机的现实,并且可以根据自己的意愿弯曲或破坏这些规则。例如,将一架空中客车A380倒挂在伦敦和悉尼之间,而不会损坏它。


仿真

An emulation是一个行为完全一样的系统,并且遵守要模拟的系统的所有规则。它实际上是对另一个系统的完整复制,它与模拟系统的输入和输出二进制兼容,但在与原始模拟系统环境不同的环境中运行。规则是固定的,不能更改,否则系统将失败。

MAME系统是围绕这个非常前提建造的。那些早已被人们遗忘,几乎完全在硬件或硬件系统固件中实现的旧街机系统,都可以被模拟到原始的错误和崩溃,而当它们达到最高评分时就会发生崩溃。


18
可能没有必要表现得像……。重要的是,就使用它而言,它“再现了相同的确切外部行为”。
Emilio Garavaglia

请注意,这取决于要模拟/仿真的内容。例如,模拟PC兼容计算机的内容可能比模拟PC兼容计算机的数字电路的准确性要差得多,而现实性则要差得多。在这种情况下,仿真器的行为可能“完全像”真实的PC,而仿真器却没有(因为仿真器在更低的级别上进行仿真)。
布伦丹

16

一个模拟是别的东西抄录一些的那个东西的功能和树叶等构建出一个模型-显然要保留您的查询相关的特征,并留下了不相关的。

例如,对早起的通勤者交通进行的模拟将通勤者的名字,甚至他们的身份都排除在外(使用计数器变量而不是实际的Commuter对象集),但是它不能忽略他们的到达率。


仿真是在平台B上运行为平台A创建的软件X,而无需更改软件本身。这需要建立一个在B上运行的A模型,并且显然必须对涉及代码执行的有关A的所有模型进行建模。(从理论上讲,您可以省略对已知不会使用此特定软件的操作码的支持,但这是很少见的-做一个仿真器是一项艰苦的工作,而做一个透彻的工作和拥有可重复使用的东西比浪费时间更值得。仅适用于S。)


7

两者都意味着某事在做其他事情。

不同之处在于,“模拟”发生在有意识的水平上(相对于用户),并且通常在不触碰现实本身的情况下最终确定该结果以预期现实的结果。

“仿真”发生在无意识的水平上,其目的是用另一种不同的组件替换基础组件,该组件相对于用户而言就像旧组件一样。

换句话说,仿真发生在“并行世界”中,而仿真发生在“已替换世界”中。


3
这如何回答OP的计算机科学问题?关于它们,没有任何有意识或无意识的。仿真是真实的,仿真也是真实的。但是,它们各自的目的在概念上有很大的不同。
S.Robins '02

@ S.Robins:有意识/无意识!=真实/虚幻。有意识的=您明确决定的事情,无意识的您未明确决定的事情。在“模拟”系统上运行的应用程序不了解该模拟。在“模拟”系统上运行的应用必须对此有所了解,因为它不一定具有相同的行为。
Emilio Garavaglia'2

1
它与哪个应用程序在哪里运行无关,也与做出有意识或无意识的决定无关。根本上的区别在于系统是一般建模还是完全复制。
S.Robins '02

@ S.Robins:我同意你的意思的概念,但有一些细微的不赶:一个“仿真”通常设想运行在上面的东西,代替的东西的应用范围。通常认为“模拟器”是为自己而不是实际应用程序运行的。它们不在同一抽象级别。
Emilio Garavaglia'2

6

从技术上讲,它们都做同样的事情:在看起来像真实事物的环境中做某事。

但是,从概念上讲,存在重要区别。

一个模拟是应该从现实世界到一定程度的分离; 模拟的输出未直接连接到模拟的事物。例如,飞机模拟器实际上并不飞行,并且飞行员实际上并未与真实的空中交通管制员进行通信。

一个模拟通常有目标的检测或预测在一个安全的环境中的一些现实生活的过程; 因为模拟与现实世界断开连接,所以不会发生任何真正的坏事(坠毁的飞机模拟器永远不会杀死真实的人)。


一个仿真,相比之下,具有取真实的东西的地方目标:例如,如果你使用模拟一个更复杂的可编程CPU一个简单的单片机,该CPU可以代替原来的微控制器的使用; 它将物理连接到某台计算机,并且实际上将像微控制器一样控制该计算机。

目标的的仿真与功能性等价物来替换硬件或软件组件时,原来的模块不可用(或已变得过于昂贵,如果只是保持)。仿真还可以达到更灵活地使用硬件的目的-同一可编程微控制器可以加倍用于几个更简单的控制器,并根据需要切换仿真模式。


3
"technically",它们是完全不同的。您描述的概念差异是这种差异的基础。
S.Robins '02

@ S.Robins:“技术上”是指技术实现通常相似或等效;区别主要在于您使用它们的目的。
tdammers

它与用例无关。目的的根本区别定义了两个非常不同的概念。该仿真试图精确地替换一个复杂的功能系统,以使其与原始系统没有区别,而仿真则是对系统的极大简化,并通过模型在一般意义上表示了功能。因此,技术实施方式必须有很大的不同。
S.Robins '02

@ S.Robins-我不同意。无论是仿真还是仿真给定的微处理器,对实现都没有太大的影响,但是对它的处理却可以。
tdammers

1
@tdammers:通常,仿真器的主要设计目标是充当被仿真事物的“实时”替代品,而仿真器的主要设计目标是允许不必要地实时分析,并可能与基础流程进行交互。一些仿真器可能很快,而某些仿真器可能提供分析和/或与基础过程交互的实质能力,但工程优先级却有所不同。
2014年

1

尽管词源不是严格准确的,但请考虑同情“我可以想象必须感觉到的”和同情心“我知道要感觉到的”之间的区别。模拟可能包括问题的视觉表示,但可能没有。例如,它可能只打印出数字列,代表排队等候某人或总收入或平均速度的人数。它具有与现实相符的某些特征,而与现实不符。

仿真(通常在一个平台假装为另一个平台的上下文中使用)更加完善。因此,Windows Phone开发人员可以在模拟器中的Windows计算机上运行或调试其电话应用程序,该模拟器看起来像一部电话,其行为也类似。您也可以在模拟器中运行旧的Commodore 64游戏。

这些单词不准确。在我看来,大多数飞行模拟器都更像模拟器,但是这个名字从一个不太沉浸的时代开始就停滞不前了。某些人在跨平台的情况下保留单词模拟器,而在其他情况下则拒绝它。如果您在说话时做同样的事情,您可能永远也不会认为这是错的,但要明白,有些人可能将两个词之间的界限稍有不同,并且当有人说“这是一个模拟”时,会留出一些余地,以达到真正准确和完整的模拟。


1
似乎常见的误解是仿真和仿真实际上是相同的。这可能是因为“模仿”一词的意思是反映他人的行为(例如:一个孩子模仿其父亲)。从计算机科学的角度来讲,这在技术上是不准确的。飞行模拟器不是仿真,因为所有输入/输出都是通过专用程序(模拟器)进行管理的,该程序不会完全复制其建模飞机的行为,因为它没有实现完全相同的计算机对飞机进行编程。如果这样做,那么它将是一个模拟器。
S.Robins '02

0

这两个术语在概念上非常相似-模仿。

仿真或仿真器利用软件来产生一个复制系统,该复制系统的基本核心功能(特别是其基本方法)与目标模型非常相似。

另一方面,与目标系统相比,仿真器更多地关注外部相似性。它对“如何”模仿功能的关注最小。与原始系统相比,仿真器通常在完全不同的环境(例如,不同的操作系统)中工作时使用。


1
我想您将两个概念混为一谈。它是模拟,并不在乎确切的实现。仿真非常在乎内部。参见:MAME
Andres F.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.