背景:
1. 业务背景:我司对仿真系统的需求日渐增加,比如道路交通的仿真、船舶港口仿真、车联网(ad hoc)仿真、以及运营商承载网的仿真等;
2. 回顾“什么是仿真时钟”:用于描述仿真时间的变化。在连续系统中,仿真时间的变化基于仿真时钟步长的确定,比如CPU按固定的步长持续推进时间。在离散事件系统中,引起系统状态变化的事件是随机发生的,因而仿真时钟的步长也是随机的,从一个事件发生时刻推进到另一个事件发生时刻具有跳跃性和随机性(比如短信协议的解析,不同的网络环境、不同运营商、不同的设备解析同一条短信息的耗时是不同的,且具有随机性);
目的:
基于事件调度法,设计一个仿真事件(仿真任务的基本模型单元)的调度和运行平台(简称“平台”),以支撑上层仿真任务的开发。
目标用户:
基于该“平台”,开发仿真任务的开发者。
“平台”需要具备的能力:
1. 提供仿真内核的基本能力:仿真事件的调度和执行能力、仿真时钟(区别于CPU时钟和实际时间)、仿真时钟的推进能力(每次仿真事件的执行消耗一定长的仿真时间);
2. 支持目标用户使用原生java语言编码,不改变用户编程习惯(面向对象),对用户编程基本无约束,运行于标准JVM上;
3. 客户程序中,用户设计的java对象(代表了真实世界中的某个待仿真的实际存在)即为仿真实体。仿真实体间的每一次方法调用对应着“平台”内一个待处理的仿真事件。“平台”需要具备将“客户程序的方法调用”转换为平台内“仿真事件”的能力,且用户程序可以设置该方法调用(事件执行)需要消耗的时间(这里的时间是仿真时间,不是实际时间);
4. 16U32G配置下,支持百万节点仿真,百万节点单个步长推进(即百万个事件处理)耗时不超过1s;
5. 当前版本不支持单个仿真任务拆分执行,后续考虑单个仿真任务分布式在多个仿真平台上拆分执行,提高执行效率;
6. 后续版本待完善:随机事件发生器,用于模拟真实世界的随机事件(比如网络仿真中的丢