坚持传统的模拟结构,至少一开始
你的目标是编写一个异步系统作为练习吗?如果是这样的话,那么我想你至少要实现一个多线程的,如果不是多进程或网络系统的话。在
但是如果这真的是一个模拟,你想要的是分析结果,实现一个实际的分布式模型将是一个非常复杂的方法,它产生的数据可能比抽象的仿真要少得多,也就是说,仿真本身不必是一个由异步参与者通信的网络。这将是一个很好的方法,使问题变得如此困难,以至于无法解决。在
我说,坚持传统的仿真架构。在
经典离散事件仿真
其工作方式是,作为一个中心数据结构,您有一个已排序的未决事件集合。事件自然地按时间的增加进行排序。在
程序有一个主循环,它从集合中取出下一个(即,值最低的)事件,将模拟时钟提前到该事件的时间,然后调用与该事件相关联的任何特定于任务的处理。在
但是,你会问,如果在模拟器刚刚跳过的时间差里发生了什么事呢?好吧,根据定义,什么都没有。如果模拟的单个元素需要在该时间间隔内发生某些事情,则它负责分配事件并将其插入(已排序)集合中。在
虽然有很多软件包和程序都是面向模拟的,但是模拟的核心并不是那么难,用你最喜欢的语言从头开始编写是完全合理的。在
玩得开心!在