【技术实现步骤摘要】
一种基于混合推进的多线程并行作战仿真方法和系统
[0001]本专利技术属于作战仿真
,具体涉及一种基于混合推进的多线程并行作战仿真方法和系统。
技术介绍
[0002]仿真是随时间演化实现模型的方法和过程。仿真技术的应用已有很久的历史,计算机的出现极大促进了仿真技术的发展。当前,仿真技术的应用日益广泛,在军事、科研、生产、娱乐等各个领域,正发挥着越来越重要的作用。关于仿真的分类,可以有多种方法。如按照模型的类型,可分为连续仿真、离散时间仿真和离散事件仿真;按逻辑时间与墙钟时间的关系可分为实时仿真、比例实时仿真和尽可能快的仿真;按仿真系统的运行方式可分为串行仿真和并行/分布仿真等。串行仿真是以一个线程或进程,逐个模拟事件链表内各行动过程,计算行动效能和结果,生成态势信息。根据并行的方式不同,并行仿真可以分为分布式并行仿真和共享内存式并行仿真。分布式并行仿真依靠分布式交互技术,在网络内多台计算机上,同时模拟事件队列内各行动过程,计算行动效能和结果,生成态势信息。共享内存式仿真依赖于计算机多核处理器,利用多线程技术,在同一台计算机内实施模拟。
[0003]离散事件仿真(Discrete Event Simulation, DES)是随时间演化实现离散事件系统模型的仿真。离散事件系统的状态改变都是由事件的发生引起的。事件的发生没有持续性,而是在一个时间点,瞬间完成。从仿真推进机制上,可分为时间驱动和事件驱动。在时间驱动的离散事件仿真中,仿真时间分为一串等长的时间步,仿真时间从一个时间步向下一个时间步推进。在事件驱 ...
【技术保护点】
【技术特征摘要】
1.一种基于混合推进的多线程并行作战仿真方法,其特征在于,所述多线程并行作战仿真方法包括如下步骤:步骤一、创建一个引擎服务主线程;步骤二、所述引擎服务主线程获取作战方案中的实体数量;步骤三、所述引擎服务主线程根据仿真主机核心数和实体数量,创建一个第一分线程池;步骤四、所述第一分线程池中各个第一分线程并行执行加载各个实体信息和仿真作战任务,并将所述各个实体的实体信息和仿真作战任务分别存储于实体队列和事件队列;步骤五、所述引擎服务主线程销毁所述第一分线程池,以释放所述各个第一分线程;步骤六、所述引擎服务主线程获取所述事件队列中各个仿真作战任务的作战时间,以获取时钟跳变时段集;其中,所述时钟跳变时段集中各个时钟跳变时段为在对应的时钟跳变时段内没有仿真作战任务;步骤七、所述引擎服务主线程根据所述仿真主机核心数和事件队列的大小,创建一个第二分线程池;步骤八、所述引擎服务主线程将所述事件队列中各个仿真作战任务分配给所述第二分线程池中各个第二分线程,得到所述各个第二分线程的分事件队列;步骤九、所述引擎服务主线程设置仿真参数;并根据所述仿真参数和时钟跳变时段集,确定当前仿真时刻;其中,所述仿真参数包括仿真时刻和仿真步长;步骤十、所述各个第二分线程根据所述当前仿真时刻,对所述各个第二分线程对应的分事件队列中各个仿真作战任务并行执行仿真,直至所述各个第二分线程执行完对应的分事件队列中各个仿真作战任务为止;步骤十一、所述引擎服务主线程销毁所述第二分线程池,以释放所述各个第二分线程。2.根据权利要求1所述的多线程并行作战仿真方法,其特征在于,步骤三中,所述第一分线程池中的第一分线程数量为:N
thr1
=min(N
ent
,2N
cpu
‑
1);其中,N
thr1
为第一分线程数量;N
ent
为实体数量;N
cpu
为仿真主机核心数。3.根据权利要求2所述的多线程并行作战仿真方法,其特征在于,步骤七中,所述第二分线程池中的第二分线程池数量为:N
thr2
=min(N
even
,N
cpu
‑
1);其中,N
thr2
为第二分线程数量;N
even
为实体数量;N
cpu
为仿真主机核心数。4.根据权利要求1~3中任意一项所述的多线程并行作战仿真方法,其特征在于,所述步骤十的具体实现过程包括:步骤1001、所述引擎服务主线程设置历史事件队列初始为空;步骤1002、所述引擎服务主线程判断所述当前仿真时刻是否处于所述时钟跳变时段集内,如是,则获取所述当前仿真时刻对应的时钟跳变时段,进入步骤1003;如否,则所述各个第二分线程并行从各自的分事件队列中逐个获取各自在所述当前仿真时刻对应的当前仿真作战任务,进入步骤1004;
步骤1003、所述引擎服务主线程将所述当前仿真时刻对应的时钟跳变时段的结束时间设置为当前仿真时刻,返回步骤1002;步骤1004、所述各个第二分线程判断所述当前仿真时刻是否小于所述当前仿真作战任务的结束时刻,如是,则进入步骤1005;如否,则将所述当前仿真作战任务移动到所述历史事件队列中,进入步骤1006;步骤1005、所述各个第二分线程依次并行调用仿真程序和并行执行仿真,并将并行执行仿真过程和结果缓存;步骤1006、所述各个第二分线程判断各自的分事件队列中所有仿真作战任务是否均已执行仿真,如是,则挂起对应的所述第二分线程,进入步骤1007;如否,则所述各个第二分线程从各自的分事件队列中读取下一个仿真作战任务,返回步骤1005;步骤1007、所述引擎服务主线程判断所有第二分线程是否均为挂起状态,如是,则所述引擎服务主线程根据预先设定的仿真步长,计算下一步仿真时刻并赋给所述当前仿真时刻,返回步骤1002;如否,则所述引擎服务主线程等待。5.根据权利要求4所述的多线程并行作战仿真方法,其特征在于,所述步骤1005还包括:当在并行执行仿真过程中出现提前完成的仿真作战任务时,则将所述仿真作战任务移动到历史事件队列中。6.根据权利要求5所述的多线程并行作战仿真方法,其特征在于,所述步骤1005还包括:当在并行执行仿真作战任务时,所述各个第二分线程判断是否产生新实体,并在判断为是时,...
【专利技术属性】
技术研发人员:陈怀进,齐锋,金玮,柯明星,殷何卿,龚燕,陈皖玉,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。