我目前正在寻找为C ++编写的离散事件模拟器。我在网上找不到很多以OO风格写的东西;有一些,但过时了。其他一些东西,比如Opnet,Omnet和ns3,对于我需要做的事情来说太复杂了。此外,我需要模拟基于代理的算法,能够模拟数千个节点的系统。
有人知道任何适合我需要的东西吗?
答案 0 :(得分:4)
其他人有很好的直接答案,但我会提出一个替代方案。如果我理解你的话,你需要一个C ++系统,或者你可以发布将来激活的事件,并在这些事件触发时运行代码。
我有一个项目要这样做,我开始尝试用C ++编写这样的事件系统,然后很快意识到我有一个更好的解决方案。
您是否考虑过在行为Verilog中编写您的程序?用硬件描述语言编写软件可能看起来很奇怪,但Verilog模拟器是一个基于事件的系统,而行为Verilog是一种表达事件,时间,触发器等非常方便的方式。有一个免费的Verilog模拟器(这就是我所说的Icarus Verilog。如果你没有在一个包中使用Ubuntu或一些带有Icarus的Linux发行版,那么从源代码构建是很简单的。
答案 1 :(得分:3)
我建议再看看OmNet ++。乍一看,它可能看起来很复杂,但如果你仔细研究一下,你会发现大多数复杂性都在网络附加组件(INET框架)中。除非你打算进行详细的网络模拟,否则你不需要INET。
使用OmNet ++核心并不是特别困难,它可能比其他类似工具更简单。
您可能需要查看an intro。
使OmNet ++对我有吸引力的一点是它的可扩展性。可以在桌面上运行大型模拟。此外,可以在不重写代码的情况下将相同的模拟扩展到集群。
答案 2 :(得分:3)
你应该考虑SystemC,虽然我也建议你再看看OmNet ++。
答案 3 :(得分:1)
来自Mesquite Software的CSIM支持使用C,C ++和Java开发模型。但是,它是付费商业的,AFAIK。
答案 4 :(得分:1)
我们在学校使用SIMLIB。它非常快速,易于理解,面向对象,离散和连续模拟器。它可能看起来过时但仍然保持不变。
答案 5 :(得分:0)
看看GBL library。它是用现代C ++编写的,甚至支持C ++ 0x功能,如移动语义和lambda函数。它提供了几种建模机制:同步和异步事件处理程序,抢占线程和光纤。您可以创建纯粹的行为,周期准确和实时模型,或任何混合模型。