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

#1 楼

是的,概念不同。


模拟

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

示例

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


仿真

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

示例

M.A.M.E.系统就是围绕这个前提而建立的。那些早已被人们遗忘的旧街机系统,几乎全部用硬件或其硬件系统的固件实现,可以被模拟到原始的错误和崩溃,而这些错误和崩溃将在您达到最高评分时发生。 br />

评论


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

–埃米利奥·加拉瓦利亚(Emilio Garavaglia)
2012年2月13日在20:39

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

–布伦丹
15年7月1日在7:07

#2 楼

模拟是由其他事物构造的模型,该模型可复制该事物的某些特征而将其他特征排除在外-显然,您希望保留与查询相关的特征,而忽略不相关的特征。

例如,对早起的通勤者流量进行模拟,可以省去通勤者的名字,甚至可以忽略他们的身份(使用计数器变量而不是实际的Commuter对象集),但不能忽略他们的名字到达率。


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

#3 楼

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

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

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

,模拟发生在“并行世界”中,而模拟发生在“已替换世界”中。

评论


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

–S.Robins
2012年2月13日在12:01

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

–埃米利奥·加拉瓦利亚(Emilio Garavaglia)
2012年2月13日15:12

它与哪个应用程序在何处运行无关,也与做出有意识或无意识的决定无关。从根本上来说,区别在于系统是一般建模还是完全复制。

–S.Robins
2012年2月13日在20:26

@ S.Robins:我同意您的意思,但是有些微妙的东西并没有抓住:通常将“仿真器”设想为在顶部运行某些东西,以替换应用程序范围内的某些东西。通常认为“模拟器”是为自己而不是实际应用程序运行的。它们不在同一抽象级别。

–埃米利奥·加拉瓦利亚(Emilio Garavaglia)
2012年2月13日在20:34

#4 楼

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

从概念上讲,两者之间存在重要的区别。

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

仿真通常具有在安全环境中测试或预测某些现实过程的目的;因为模拟与现实世界断开连接,所以不会发生任何真正的坏事(坠毁的飞机模拟器永远不会杀死真实的人)。相比之下,仿真的目的是代替真实的东西:例如,如果您使用更复杂的可编程CPU来仿真简单的微控制器,则该CPU可以是用于代替原始微控制器;它会物理上连接到某台计算机,并且实际上将像微控制器一样控制该计算机。

仿真的目的是在原始模块不在时用功能等效的硬件或软件组件代替。无法使用(或者仅是为了维护而变得太昂贵)。仿真还可以达到更灵活地使用硬件的目的-同一可编程微控制器可以加倍用于几个更简单的控制器,并根据需要切换仿真模式。

评论


在技​​术上,它们完全不同。您描述的概念差异是这种差异的基础。

–S.Robins
2012年2月13日在11:55

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

– tdammers
2012年2月13日19:32

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

–S.Robins
2012年2月13日在20:19

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

– tdammers
2012年2月13日在20:47

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

–超级猫
2014年1月28日在18:02

#5 楼

尽管词源学并非严格准确,但请考虑一下同情“我可以想象必须感觉到的”和同情心“我知道要感觉到的”之间的区别。模拟可能包括问题的视觉表示,但可能没有。例如,它可能只打印出数字列,代表排队等候某人或总收入或平均速度的人数。它具有一些与现实相匹配的特征,而有些却与现实不符。因此,Windows Phone开发人员可以在模拟器中的Windows计算机上运行或调试其电话应用程序,该模拟器看起来像一部电话,其行为也类似。您也可以在模拟器中运行旧的Commodore 64游戏。

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

评论


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

–S.Robins
2012年2月13日14:31在

#6 楼

这两个术语在概念上非常相似-模拟。方法论)。另一方面,与目标系统相比,乳化剂更多地关注外部相似性。它对“如何”模仿功能的关注最小。与原始系统相比,通常在完全不同的环境(例如,不同的操作系统)中工作时使用仿真器。

评论


我想您将两个概念混为一谈。它是模拟,并不在乎确切的实现。仿真非常在乎内部。参见:M.A.M.E.

– Andres F.
15年7月1日在1:48