一种智能决策算法与仿真平台的联合互锁调用方法
文献发布时间:2023-06-19 19:33:46
技术领域
本申请涉及联合仿真技术领域,尤其涉及一种智能决策算法与仿真平台的联合互锁调用方法。
背景技术
智能决策算法通过从样本中学习自我进化,在复杂非线性系统的控制、智能体在复杂环境下的决策等场景中已取得一系列突出成果。依据其特点,其适用性要求能够同仿真平台进行交互。
现有智能决策算法对主动控制仿真平台、进行交互有较高要求,即需要算法能够决定仿真平台何时进行一步仿真或重置状态。而大量用于工业控制、自动驾驶等领域的仿真平台要求算法作为一个部件嵌入,由仿真平台进行调度。两者均要求主导程序执行流程的控制权,导致结合两者、在仿真平台上进行智能决策算法开发受到阻碍,难以通用地将智能决策算法应用于仿真平台进行联合仿真。
发明内容
针对上述问题,提出了提出一种智能决策算法与仿真平台的联合互锁调用方法,用于解决智能决策算法与仿真平台交互时存在的控制权冲突问题。
本申请第一方面提出一种智能决策算法与仿真平台的联合互锁调用方法,包括:
在智能决策算法处创建算法侧模块,在仿真平台处创建平台侧模块,并进行总初始化操作,其中,所述算法侧模块与所述平台测模块在同一个进程的两个线程内分别运行;
分别对所述算法侧模块和所述平台侧模块进行重置操作,并重置共享上下文状态;
分别对所述算法侧模块和平台侧模块进行步进操作,并借助所述共享上下文进行数据交换;
在所述智能决策算法要求重置称为一个采样循环时,停止步进操作;
反复执行所述采样循环直至所述智能决策算法运行结束。
可选的,所述在智能决策算法处创建算法侧模块,在仿真平台处创建平台侧模块,并进行总初始化操作,包括:
创建所述共享上下文,其中,所述共享上下文包括待订阅消息、待发布消息、初次重置的状态和同步屏障;
传入所述共享上下文作为所述算法侧模块的字段,并在第一线程上运行;
传入所述共享上下文作为所述平台侧模块的字段,向所述仿真平台注册需要订阅和需要发布的消息名称,并在第二线程上运行。
可选的,所述算法侧模块与所述平台侧模块均采用重置与步进接口,其中,
所述算法侧模块的重置接口由所述智能决策算法调用,用于要求仿真平台重置;
所述平台侧模块的重置接口由所述仿真平台在状态重置时调用,用于通知所述智能决策算法重置状态准备新一轮仿真;
所述算法侧模块的步进接口由所述智能决策算法调用,用于输入一个控制信号给所述仿真平台,要求所述仿真平台进行一步仿真,并返回新的观测信息用于后续决策;
所述平台侧模块的步进接口由所述仿真平台调用,用于通知所述智能决策算法进行一步仿真。
可选的,所述同步屏障,用于:
执行等待操作,使到达所述同步屏障处的线程进行等待,直至所有线程都到达此点才可继续执行下文;
执行破坏操作,使所述同步屏障进入破坏状态,所有正在所述同步屏障上等待的线程将被唤醒并抛出异常;
执行复位操作,使所述同步屏障恢复至正常状态,可以再次接受线程等待。
可选的,所述同步屏障,包括:
根据功能将所述同步屏障分为重置发起锁、重置完成锁、消息订阅锁和消息读取锁。
可选的,所述对所述算法侧模块进行重置操作,包括:
若所述初次重置的状态为假,对所述重置完成锁等待,等待结束后,将所述重置发起锁复位;
对所述重置完成锁等待,等待结束后,将所述重置完成锁复位,所述算法侧模块重置完成。
可选的,所述对平台侧模块进行重置操作,包括
对所述重置发起锁等待,等待结束后,清空所述待发布消息和所述待订阅消息;
对所述重置完成锁等待,等待结束后,所述平台侧模块重置完成。
可选的,所述对所述算法侧模块进行步进操作,包括:
将传入的控制信号存入所述共享上下文的待发布消息中,对所述消息订阅锁等待,等待结束后,将所述消息订阅锁复位;
从所述共享上下文的待订阅消息中读取观测信息,存入待返回的临时变量中;
对所述消息读取锁等待,等待结束后,将所述消息读取锁复位;
将位于所述临时变量中的观测信息返回给所述智能决策算法,所述算法侧模块步进完成。
可选的,所述对平台侧模块进行步进操作,包括:
从所述仿真平台读取观测信息,存入所述共享上下文的待订阅消息字段中;
在异常处理作用域内对所述消息订阅锁等待,若等待抛出异常,将所述消息订阅锁复位,并通知所述仿真平台重置仿真,结束平台侧模块步进;
根据所述共享上下文获取待发布消息,并向所述仿真平台发布;
对所述消息读取锁等待,等待结束后,算法侧模块步进完成
可选的,所述方法还包括:
在所述消息订阅锁等待时,若所述第一线程调用步进,则仿真继续进行;
在所述消息订阅锁等待时,若所述第一线程调用重置,在所述第二线程结束处于所述消息订阅锁等待的挂起状态后,再继续进行仿真。
本申请的实施例提供的技术方案至少带来以下有益效果:
在智能决策算法侧和仿真平台侧各部署一个功能模块,通过线程同步原语实现协调,以解决智能决策算法与仿真平台交互时存在的控制权冲突问题,由于智能决策算法侧和仿真平台侧模块均只需被动接受调用,只需在本发明基础上按需对接仿真平台与智能决策算法所需的数据接口,对既有算法框架影响低,且依赖于少量线程同步原语,在同一进程内解决控制权冲突,保证了高通信效率,性能损失小。
本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1是本申请示例性实施例示出的一种智能决策算法与仿真平台的联合互锁调用方法的流程图;
图2是本申请示例性实施例示出的一种智能决策算法与仿真平台的联合互锁调用方法的流程图;
图3是本申请示例性实施例示出的一种智能决策算法与仿真平台的联合互锁调用方法的架构图;
图4是本申请示例性实施例示出的算法侧模块调用时序图;
图5是本申请示例性实施例示出的平台侧模块调用时序图。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。
图1是本申请示例性实施例示出的一种智能决策算法与仿真平台的联合互锁调用方法的流程图,包括:
步骤101,在智能决策算法处创建算法侧模块,在仿真平台处创建平台侧模块,并进行总初始化操作,其中,算法侧模块与平台测模块在同一个进程的两个线程内分别运行。
本申请实施例子,各模块的建立与数据交流如图3所示。
如图2所示,步骤101还包括:
步骤201,创建共享上下文,其中,共享上下文包括待订阅消息、待发布消息、初次重置的状态和同步屏障。
本申请实施例中,同步屏障用于:
执行等待操作,使到达同步屏障处的线程进行等待,直至所有线程都到达此点才可继续执行下文;
执行破坏操作,使同步屏障进入破坏状态,所有正在同步屏障上等待的线程将被唤醒并抛出异常;
执行复位操作,使同步屏障恢复至正常状态,可以再次接受线程等待。
另外,根据功能将同步屏障分为重置发起锁、重置完成锁、消息订阅锁和消息读取。
步骤202,传入共享上下文作为算法侧模块的字段,并在第一线程上运行。
本申请实施例中,传入共享上下文作为其字段,将其运行在第一线程A上。
步骤203,传入共享上下文作为平台侧模块的字段,向仿真平台注册需要订阅和需要发布的消息名称,并在第二线程上运行。
本申请实施例中,传入共享上下文作为其字段,向仿真平台注册需要订阅和需要发布的消息名称,将其运行在第二线程B上。
在进行步骤102之前,首先对算法侧模块与平台侧模块进行进一步说明。
本申请实施例中,算法侧模块与平台侧模块均采用重置与步进接口,其中,
算法侧模块的重置接口由智能决策算法调用,用于要求仿真平台重置;
平台侧模块的重置接口由仿真平台在状态重置时调用,用于通知智能决策算法重置状态准备新一轮仿真;
算法侧模块的步进接口由智能决策算法调用,用于输入一个控制信号给仿真平台,要求仿真平台进行一步仿真,并返回新的观测信息用于后续决策;
平台侧模块的步进接口由仿真平台调用,用于通知智能决策算法进行一步仿真。
另外,平台侧模块在步进被调用时,即可根据仿真平台接口进行观测信息的订阅收取和控制信号的发布,后续的详细说明也基于此调用模式。
步骤102,分别对算法侧模块和平台侧模块进行重置操作,并重置共享上下文状态。
本步骤中,分别由运行于线程A的算法侧模块和运行于线程B的平台侧模块执行,因而两者不分先后,是并行执行的,两者之间的相对关系由同步屏障实现对齐。
如图4所示,首先对线程A的算法侧模块重置进行说明:若初次重置的状态为假,对重置完成锁等待,等待结束后,将重置发起锁复位;
对重置完成锁等待,等待结束后,将重置完成锁复位,算法侧模块重置完成。
本申请实施例中,若上下文初次重置状态为假,即并非初次调用重置,此时平台侧模块应处于则破坏消息订阅锁,否则为初次调用。
其次,如图5所示,再对线程B的平台侧模块重置进行说明:对重置发起锁等待,等待结束后,清空待发布消息和待订阅消息;
对重置完成锁等待,等待结束后,平台侧模块重置完成。
其中,待发布消息即为控制信号,待订阅消息即为观测信息。
步骤103,分别对算法侧模块和平台侧模块进行步进操作,并借助共享上下文进行数据交换。
本步骤中,分别由运行于线程A的算法侧模块和运行于线程B的平台侧模块执行,因而两者不分先后,是并行执行的,两者之间的相对关系由同步屏障实现对齐。
如图4所示,首先对线程A的算法侧模块步进进行说明:将传入的控制信号存入共享上下文的待发布消息中,对消息订阅锁等待,等待结束后,将消息订阅锁复位;
从共享上下文的待订阅消息中读取观测信息,存入待返回的临时变量中;
对消息读取锁等待,等待结束后,将消息读取锁复位;
将位于临时变量中的观测信息返回给智能决策算法,算法侧模块步进完成。
其次,如图5所示,对线程B的平台侧模块步进进行说明:从仿真平台读取观测信息,存入共享上下文的待订阅消息字段中;
在异常处理作用域内对消息订阅锁等待,若等待抛出异常,将消息订阅锁复位,并通知仿真平台重置仿真,结束平台侧模块步进;
根据共享上下文获取待发布消息,并向仿真平台发布;
对消息读取锁等待,等待结束后,算法侧模块步进完成。
步骤104,在智能决策算法要求重置称为一个采样循环时,停止步进操作;
步骤105,反复执行采样循环直至智能决策算法运行结束。
本申请实施例中,关于线程A的算法侧模块重置方法使用破坏消息订阅锁的方式通知线程B的平台侧模块步进方法进行额外说明。
一个等待同步屏障的线程只能由达到等待条件(即等待该同步屏障的线程数达到指定数量)或同步屏障被破坏而结束挂起。而平台侧模块无法主动得知何时需要重置,在不断被仿真平台调用步进时,周期性地总会处于消息订阅锁等待的阶段。
因此,在消息订阅锁等待时,若线程A调用步进,则仿真继续进行;
在消息订阅锁等待时,若线程A调用重置,需要设法使线程B结束处于消息订阅锁等待的挂起状态,再继续进行仿真。
本申请实施例中,在智能决策算法侧和仿真平台侧各部署一个功能模块,通过线程同步原语实现协调,以解决智能决策算法与仿真平台交互时存在的控制权冲突问题,由于智能决策算法侧和仿真平台侧模块均只需被动接受调用,只需在本发明基础上按需对接仿真平台与智能决策算法所需的数据接口,对既有算法框架影响低,且依赖于少量线程同步原语,在同一进程内解决控制权冲突,保证了高通信效率,性能损失小。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。