11

我目前正在寻找为 C++ 编写的离散事件模拟器。我在网上没有找到很多专门用 OO 风格编写的;有一些,但是已经过时了。其他一些,例如 Opnet、Omnet 和 ns3 对于我需要做的事情来说太复杂了。此外,我需要模拟能够模拟数千个节点的系统的基于代理的算法。

有人知道适合我需要的东西吗?

4

6 回答 6

4

其他人有很好的直接答案,但我会建议一个替代方案。如果我理解正确,您需要一个 C++ 系统或类似的系统,您可以在其中发布将来触发的事件,并在这些事件触发时运行代码。

我有一个项目要做这样的事情,我开始尝试用 C++ 编写这样的事件系统,然后很快意识到我有一个更好的解决方案。

您是否考虑过用行为 Verilog 编写程序?用硬件描述语言编写软件可能看起来很奇怪,但是 Verilog 模拟器是一个基于事件的系统,而行为 Verilog 是一种非常方便的方式来表达事件、时序、触发器等。有一个免费的 Verilog 模拟器(这是我使用的)称为Icarus Verilog。如果您没有在包中使用 Ubuntu 或某些带有 Icarus 的 Linux 发行版,那么从源代码构建非常简单。

于 2012-02-19T15:07:46.943 回答
3

我建议再看看 OmNet++。乍一看,它可能看起来很复杂,但如果您仔细研究一下,您会发现大部分复杂性在于网络附加组件(INET 框架)。除非您要进行详细的网络模拟,否则您不需要 INET。

使用 OmNet++ 内核并不是特别困难,它可能比其他类似工具更简单。

您可能想看一下介绍

让 OmNet++ 对我有吸引力的一件事是它的可扩展性。可以在桌面上运行大型模拟。此外,可以在不重写代码的情况下将相同的模拟扩展到一个集群。

于 2012-02-20T10:32:12.513 回答
3

您应该考虑SystemC,尽管我也建议您再看看 OmNet++。

于 2012-02-20T10:41:22.640 回答
2

我们在我的学校使用SIMLIB。它是非常快速、易于理解、面向对象、离散和连续的模拟器。它可能看起来已经过时,但仍然保持不变。

于 2012-02-23T12:30:03.600 回答
1

Mesquite Software的 CSIM支持使用 C、C++ 和 Java 开发模型。但是,它是付费商业的,AFAIK。

于 2011-07-12T00:44:46.753 回答
0

看看GBL 库。它是用现代 C++ 编写的,甚至支持移动语义和 lambda 函数等 C++0x 特性。它提供了几种建模机制:同步和异步事件处理程序、抢占式线程和纤程。您可以创建纯粹的行为、周期精确和实时模型,或这些模型的任何混合。

于 2011-02-16T15:09:10.067 回答