基于Multi-Agent的股票市场分布式仿真方法

文档序号:6549482阅读:209来源:国知局
基于Multi-Agent的股票市场分布式仿真方法
【专利摘要】本发明涉及分布式仿真技术,为提供一种分布式环境中基于Multi-Agent思想的股票市场仿真方法,仿真方法中包括仿真方法模块组成、仿真调度和同步策略、仿真通信策略、交易中心运行逻辑以及主体Agent运行逻辑。该方法专用于股票市场仿真,具有易用性、高并发性、运行稳定性。本发明采取的技术方案是,基于Multi-Agent的股票市场分布式仿真方法,包括交易中心、消息分发中心、主体Agent;交易中心单独部署在一个节点,消息分发中心单独部署在一个节点,Agent均匀部署在剩余节点。本发明主要应用于分布式仿真。
【专利说明】基于Mult1-Agent的股票市场分布式仿真方法
【技术领域】
[0001]本发明涉及分布式仿真技术,具体讲,涉及基于Mult1-Agent (多主体)的股票市场分布式仿真方法。
技术背景
[0002]随着SF1-ASM的问世以及复杂系统理论的发展,行为经济学成为研究经济和金融问题的一种新型手段,行为金融学依赖于计算机仿真,需要计算机仿真方法的支持,SF1-ASM,全称为 The Santa Fe Institute Artificial Stock Market,是一个被公认的多主体仿真平台,由圣达菲研究所开发维护的人工股票市场,采用了 Mult1-Agent的思想仿真复杂适应系统,SF1-ASM之后又出现了如SWARM、Repast, MASON、Ascape、StarLogo等复杂系统仿真平台,SWARM是由圣达菲研究所开发维护的另一个人工股票市场,使用Object-c编写,Repast是一个开源的复杂系统仿真平台,MASON的全称是Mult1-Agent Simulator OfNeighborhoods,由美国乔治梅森大学的演化计算实验室和乔治梅森大学的社会复杂性研究中心共同开发和维护的多主体仿真平台,Ascape是用于开发和分析主体仿真模型的开源软件框架,StarLogo是由麻省理工学院的媒体实验室和教育工程共同维护开发的多主体仿真平台。这些平台所采用的仿真方法大抵都是基于Mult1-Agent思想,不同之处在于其架构不同,Agent调度方法不同,Agent之间的关系定义不同,Π设计不同,相同之处在于他们都运行在单机上,并且适用于一般性的复杂系统,系统中没有明显的交易中心模块,由于它们的通用性,金融研究者在使用的时候需要进行大量的编码才能使用这些通用的复杂系统仿真平台改造成适用于金融市场的仿真平台,其次,随着仿真规模的增大,单机平台的仿真时间很长,而且,在单机上仿真时,不能真实模拟出现实社会中投资者之间的完全并发关系,于是,金融研究者开始寻求分布式金融系统仿真平台。现阶段分布式复杂系统仿真平台屈指可数,主要有R印astHPC、D-MASON、ATOM等,其中ItepastHPC和D-MASON分别是Repast和MASON的集群版本,RepastHPC的仿真方法是对Itepast的仿真方法的扩展,即在原本的仿真方法中加入了集群通信以及集群节点之间的同步策略,在Agent的调度时,以节点为单位进行调度,节点内部的调度策略采用的是与Repast相同的方法,节点之间的通信采用的是MPI,即消息传递接口。D-MASON在节点内部的调度、仿真等都与MASON无异,同R印astHPC—样在节点之间加入了通信和同步,通信策略采用的是JMS协议,即Java消息服务。R印astHPC和D-MASON的问题在于这两中仿真方法都是一种通用型的复杂适应系统仿真,股票市场同普通的复杂适应系统的差别在于股票市场存在一个或者多个交易中心,其与普通Agent的功能、适应性、通信压力等差别较大,无法直接适用于股票市场。ATOM的全称是ArTificial Open Market,是一个开源的专用于股票市场的分布式仿真平台,ATOM中的分布式主要用于将一个Agent的计算开销以及交易中心的计算开销分布到多个节点上运行,其仿真方法中避免使用多线程或多进程实现Agent的并发运行,Agent行为由主程序按公平方式轮询执行,这种方式受限于单机平台中“Round”的概念,并没有真正实现Agent之间的并发性。
【发明内容】

[0003]为克服现有仿真技术的不足,本发明旨在提供一种分布式环境中基于Mult1-Agent思想的股票市场仿真方法,仿真方法中包括仿真方法模块组成、仿真调度和同步策略、仿真通信策略、交易中心运行逻辑以及主体Agent运行逻辑。该方法专用于股票市场仿真,具有易用性、高并发性、运行稳定性。本发明采取的技术方案是,基于Mult1-Agent的股票市场分布式仿真方法,包括交易中心、消息分发中心、主体Agent ;交易中心单独部署在一个节点,消息分发中心单独部署在一个节点,Agent均勻部署在剩余节点;
[0004]所述Agent是具有适应能力、学习能力、主动性等特性的独立个体;
[0005]所述交易中心接收所有Agent提交的股票订单,并对这些订单做撮合处理,同时将订单撮合结果以及市场行情告知Agent ;Agent通过向交易中心提交订单或者发送消息而影响交易中心的市场行情;所述交易中心还需要维护A-N表,以及控制轮次(Round)同
I K
少;
[0006]所述消息分发中心用于转发计算机节点之间的通信消息。
[0007]所述Agent和Agent之间以及Agent和交易中心的交互采用集中式,并且所有的通信都是异步的;所述Agent部署在不同的节点之上,每一个用于部署Agent的节点都有
一个控制线程-控制器(Controller) ,Controller需要负责调度Agent的运行以及控制
Agent之间的信息传输,同时每个节点上的Controller都需要存储一份Agent和节点之间的对应表,简称:A-N表,A-N表用于记录每个Agent被部署在哪个节点上,并且不同节点上的A-N表需要保证实时一致性,由所有节点上的Controller负责同步A-N表;
[0008]所述Agent都是一个单独的线程独立运行,所述Agent的调度是指Agent线程的调度,所有的Agent都受到其所在节点上的Controller的调度;每个节点上的Controller维持一个线程池;所述的调度共分两种情形可供用户选择,一种调度策略是所有Agent按步运行,此处的“步”称为Round,—个或者多个Round组成一个时间段(Tick),记一个Tick中共有X个Round,X为一个定制的参数,Agent在运行结束第X个Round之后,需要阻塞等待其他Agent的第X个Round结束,即Agent之间的Round应该同步;Agent的Round同步,需要保证I):每个节点运行的Round—致;2)节点内部所有Agent运行的Round—致;仿真过程的全局Round由交易中心节点记录和维护,每个节点所有的Agent运行完第X个Round之后,由Controller线程通知交易中心节点,并且此节点阻塞,当所有节点的Controller都运行完X个Round之后,仿真进入下一个运行周期。
[0009]所述交易中心的作用是对所有接收到的订单进行撮合处理,交易中心接收来自Agent的订单消息,根据撮合机制对订单进行撮合处理,如果买或者卖订单队列中没有能够与其匹配的订单,则依据撮合机制将订单插入买或者卖订单队列;如果撮合成功,则根据买卖订单的Agent ID将撮合价格、撮合数量、撮合时间等信息发送给相应的Agent。
[0010]与已有技术相比,本发明的技术特点与效果:
[0011]本发明与现有仿真技术相比,是一个专用于股票市场的仿真方法,对于金融研究人员而言具有易用性;同时具有独立的交易中心模块,能够承受大量Agent的并发访问;仿真方法的调度和同步策略以Tick为同步单位,以Round为运行单位,仿真粒度较细,适用于更一般的仿真需求;仿真的通信策略具有异步性,仿真中的消息传递无需阻塞,与现实社会更相符,同时在一定程度上减少了系统仿真时间;结点内部线程池的使用,使得节点负载减小。
【专利附图】

【附图说明】
[0012]图1模块和部署图。
[0013]图2通信结构图。
[0014]图3节点内部Agent的通信过程。
[0015]图4节点之间Agent的通信过程。
[0016]图5从Agent到交易中心的通信过程。
[0017]图6从交易中心到Agent的通信过程。
[0018]图7交易中心运行逻辑图。
[0019]图8Agent运行逻辑图。
【具体实施方式】
[0020]本发明提出的分布式股票市场仿真方法,基于Mult1-Agent建模,包括交易中心、异步消息分发中心和Agent三大模块,通过Agent和Agent之间、Agent和交易中心之间的相互通信和相互作用仿真股票市场,其中涉及到了 Agent的调度方法,Agent之间以及Agent和交易中心的同步方法,分布式系统中Agent之间的通信方法。
[0021 ] 所述仿真方法可分为三大模块——Agent、交易中心、消息分发中心。
[0022]所述Agent是具有适应能力、学习能力、主动性等特性的独立个体,Agent能够在不断的与环境的交互作用和学习中变得智能化,所述Agent具有自治性、社会能力和反应能力。所述自治性是指Agent在运行时不直接由人或者第三方控制,它对自己的行为和内部状态有一定的控制权;所述社会能力即通信能力,即Agent能够通过某种Agent通信语言或者通信方式,与其它Agent进行信息交换;所述反应能力,是指Agent对环境具有感知能力,并且能够通过自己的行为对环境做出反应,股票市场中某一个Agent所在的环境是指交易中心和其他Agent组成的整体,Agent通过向其他Agent发送消息以及向交易中心提交订单来影响环境。股票市场中,所有的投资者都可以看成是一个单独的Agent,如果研究者希望在市场中添加券商、银行等角色,这些也可以当作Agent对待,不同的是这些不同类型的Agent的行为不同,自治性不同。
[0023]所述交易中心相当于现实股票市场中的交易所,交易中心需要接收所有Agent提交的股票订单,并对这些订单做撮合处理,同时将订单撮合结果以及市场行情告知Agent。所述撮合机制包括常用的连续竞价撮合机制、集合竞价撮合机制、瓦尔拉斯双向拍卖机制等,在实际仿真中采用哪种交易机制取决于仿真方法的使用者。所述交易中心相当于所有Agent存在的环境,Agent通过向交易中心提交订单或者发送消息而影响交易中心的市场行情。所述交易中心还需要维护A-N表,以及控制仿真过程的Round同步等。
[0024]所述异步消息分发中心用于转发计算机节点之间的通信消息。“异步”是指:消息的源线程将消息发送给异步消息分发中心之后不用阻塞等待消息的目标线程接收,因为消息的源线程无法预知目标线程何时接收消息,异步消息分发中心能够保证消息的可靠传输。[0025]所述仿真方法,在部署时,交易中心单独部署在一个节点,消息分发中心单独部署在一个节点,Agent均勻部署在剩余节点。
[0026]所述Agent和Agent之间以及Agent和交易中心的交互采用集中式,并且所有的通信都是异步的。所述Agent部署在不同的节点之上,每一个用于部署Agent的节点都有
一个控制线程-ControIler, Controller需要负责调度Agent的运行以及控制Agent之
间的信息传输,同时每个节点上的Controller都需要存储一份Agent和节点之间的对应表(简称:A-N表),A-N表用于记录每个Agent被部署在哪个节点上,并且不同节点上的A-N表需要保证实时一致性,由所有节点上的Controller负责同步A-N表,交易中心节点没有额外的Controller,交易中心自己就是一个Controller,消息分发中心节点无需保存A-N表,且不需要ContiOller。所述节点之间的消息通信都需要经过分发中心进行转发。所述消息传递可分为三种状况:同一个节点内Agent之间的消息传递;不同的节点之间Agent的消息传递;Agent和交易中心的消息传递。对Agent而言,消息的格式为〈源Agent ID,消息内容,目标Agent ID>, Agent发出的所有消息都需要先转发给Agent所在节点的Controller,然后Controller根据A-N表判断源Agent和目标Agent是否处于同一个节点,若处于同一个节点,ControIIer直接将消息转发给目标Agent,如果源Agent和目标Agent不是处于同一个节点,则Controller首先根据A-N表查找到目标Agent所在的节点ID,接着将消息格式改变为〈源节点ID,源Agent ID,消息内容,目标Agent ID,目标节点ID>,然后将消息转发到消息分发中心,消息分发中心根据目标节点ID转发给相应节点的Controller,再由目标Controller转发给目标节点。Agent和交易中心之间的消息在添加源节点和目标节点信息之后经过消息分发中心转发给目标Agent或者交易中心。
[0027]所述Agent和Agent之间的通信并不是无规则的、随机的通信,所有的Agent组成一个通信网络,通信网络在每个Agent节点都存储一份,由每个节点上的Controller负责维护和保持同步和更新,以保证各个节点上的网络实时一致性。所述通信网络亦是一个社交网络,表现出Agent之间的社会关系,所述的网络可以是规则网络也可以是随机网络、小世界网络、无标度网络或其他类型的复杂网络。
[0028]所述Agent都是一个单独的线程独立运行,所述Agent的调度是指Agent线程的调度,所有的Agent都受到其所在节点上的Controller的调度。每个节点上的Controller维持一个线程池。所述的调度共分两种情形可供用户选择,一种调度策略是所有Agent按步运行,此处的“步”称为Round,一个或者多个Round组成一个Tick,即一个Tick可以只有I个Round,也可以有多个Round,记一个Tick中共有X个Round,X为一个可以定制的参数,Agent在运行结束第X个Round之后,需要阻塞等待其他Agent的第X个Round结束,即Agent之间的Tick应该同步。Agent的Tick同步,需要保证I):每个节点运行的Tick 一致;2)节点内部所有Agent运行的Tick 一致。仿真过程的全局Tick由交易中心节点记录和维护,每个节点所有的Agent运行完第X个Round之后,由ControIler线程通知交易中心节点,并且此节点阻塞,当所有节点的Controller都运行完X个Round之后,仿真进入下一个运行Tick。Agent在一个Round中可能买卖或者撤单,可能依据网络向其他Agent发送消息,亦可能不采取动作,具体是否采取动作可以由金融研究者根据金融模型定制。Round是Agent调度运行的最小单元,Tick是Agent同步的最小单元,一个Tick中可以只有一个Round,亦可以有多个Round。另一种调度策略不需要保证Agent之间的Tick具有同步关系,每个Agent各自运行自己的Tick,无需等待其他Agent,也无需Controller去同步Tick。
[0029]为使本发明技术方案和优点更加清楚,下面结合附图对本发明实施方式作进一步详细描述。
[0030]一、部署
[0031]参见图1。仿真方法共分为三大部分,Agent、消息分发中心和交易中心,部署时,交易中心和消息分发中心分别单独部署在一个节点,Agent均勻部署在剩余节点,每一个Agent节点还需一个Controller线程。
[0032]二、通信
[0033]参见图2、图3、图4、图5和图6。图2描述的是整个仿真的通信结构,图2中包括的元素有:Agent、Controller、社交网络(即Network)、A_N表、异步消息分发中心、交易中心。其中,异步消息分发中心和交易中心分别位于单独的节点之上,剩余节点均勻部署Agent,并且每个Agent节点都有一个Controller线程,Controller的功能包括:调度本节点上面的Agent ;存储和维护A-N表;存储和维护Agent之间的网络结构;转发Agent消息;和交易中心共同实现仿真过程整体的Round同步。Network表述的是Agent之间的关联关系,每个Controller均需要存储一份Network,并且Controller负责对本节点上的Network进行更新维护,当某一个Controller修改了网络结构之后,更改之后的网络结构需要同步到其他节点,即Controller需要维持所有节点上的Network实时一致。A-N表与Network相似,A-N表用于描述Agent ID和节点ID的对应关于,即通过A-N表可以知道某一个Agent位于哪一个节点上。每个Controller以及交易中心均需要存储一份A-N表,并且共同维护所有节点上A-N表的实时一致性。异步消息分发中心负责转发来自Controller和交易中心的消息。仿真方法的通信共有四种类型:节点内部Agent的通信,节点间Agent的通信,Agent向交易中心的通信以及交易中心向Agent的通信。
[0034]节点内部Agent的通信过程参见图3, Agent a需要向Agent b发送消息,Agent a首先将消息〈a,消息内容,b>发送给Controller, a表示源Agent a的ID, b表示目标Agentb的ID,消息到达Controller之后,Controller需要先去查找A-N表,确认目标Agent b所在的节点,如果Agent b位于本节点,则直接将消息<a,消息内容,b>移交给Agent b。
[0035]节点间Agent的通信过程参见图4, Agent a需要向Agent b发送消息,Agent a首先将消息〈a,消息内容,b>发送给Agent a所在节点的Controller, Controller需要先去查找A-N表,确认目标Agent b所在的节点,如果Agent b不在本节点,则将消息〈节点1,a,消息内容,b,节点2>转发到异步消息分发中心,其中“节点I”表示源Agent a所在的节点,“节点2”表示目标Agent b所在的节点,然后异步消息分发中心根据接收到的消息的目标节点将消息转发给目标节点的Controller,即图4中的第4步,目标Controller接收到消息之后将消息<a,消息内容,b>移交给目标Agent b,至此通信完成。
[0036]Agent向交易中心的通信过程参见图5, Agent a需要向交易中心发送消息<a,消息内容,交易中心ID>,消息首先被发送到Agent a所在节点的Controller, Controller再将消息〈节点1,a,消息内容,交易中心ID,交易中心节点 > 转发给异步消息分发中心,异步消息分发中心再将消息转发给交易中心即可。
[0037]交易中心向Agent的通信过程参见图6,交易中心需要向Agent a发送消息,交易中心首先需要将去查A-N表,以确定目标Agent a所在的节点,然后交易中心将消息〈交易中心节点,交易中心ID,消息内容,a,节点1>转发给异步消息分发中心,消息分发中心根据接收到消息的目标节点将消息转发给目标节点的Controller,最后Controller再将消息〈交易中心ID,消息内容,a>移交给目标Agent a。
[0038]Agent的通信不是无限制无规律的,只有相互关联的Agent才可以通信。Agent之间的关联关系由Network定义。
[0039]三、Agent调度
[0040]所述Agent都是一个单独的线程独立运行,Agent的调度是指Agent线程的调度,所有的Agent都受到其所在节点上的Controller的调度。每个节点上的Controller维护一个线程池。所述的调度共分两种情形可供用户选择,一种调度策略是所有Agent按步运行,此处的“步”称为Round,一个或者多个Round组成一个Tick,即一个Tick可以只有I个Round,也可以有多个Round,记一个Tick中共有X个Round, X为一个可以定制的参数,Agent在运行完第X个Round之后,需要阻塞等待其他Agent的第X个Round结束,即Agent之间的Tick应该同步。Agent的Tick同步,需要保证I):每个节点运行的Tick 一致;2)节点内部所有Agent运行的Tick 一致。仿真过程的全局Tick由交易中心节点记录和维护,每个节点所有的Agent运行完第X个Round之后,由Controller线程通知交易中心节点,并且此节点阻塞,当所有节点的Controller都运行完X个Round之后,仿真进入下一个运行Tick。Agent在一个Round中可能买卖或者撤单,可能依据网络向其他Agent发送消息,亦可能不采取动作,具体是否采取动作可以由金融研究者根据金融模型定制。Round是Agent调度运行的最小单元,Tick是Agent同步的最小单元,一个Tick中可以只有一个Round,亦可以有多个Round。另一种调度策略不需要保证Agent之间的Tick具有同步关系,每个Agent各自运行自己的Tick,无需等待其他Agent,也无需Controller去同步Tick。
[0041]四、交易中心运行逻辑
[0042]所述交易中心的作用是对所有接收到的订单进行撮合处理。参见图7,交易中心维护一个线程池和三个队列一买订单队列、卖订单队列、未处理消息队列,每个队列都可能有多个线程同时访问,所以需要对队列进行加锁操作。当交易中心接收到来自Agent的订单消息时,先从线程池中取一个线程,然后将此消息交由此线程去执行,如果线程池中无空闲线程,则将消息添加到未处理消息队列,消息执行线程执行完毕之后主动从未处理消息队列中取出消息继续执行。消息执行线程处理消息时,首先根据撮合机制对订单消息进行撮合处理,如果买或者卖订单队列中没有能够与其匹配的订单,则依据撮合机制(如连续竞价机制的价格优先时间优先原则)将订单插入买或者卖订单队列;如果撮合成功,则根据买卖订单的AgentID将撮合价格、撮合数量、撮合时间等信息发送给相应的Agent。
[0043]五、Agent运行逻辑
[0044]Agent运行逻辑依赖于Round和金融模型,在一个Round中Agent需要做出哪些行为,由微观金融模型确定。Agent的适应能力、学习能力、主动性体现在两个方面,一是Agent在每一个Round的投资决策算法,一般是遗传算法、强化学习算法、神经网络算法等智能算法;二是Agent与环境的交互,Agent通过与其他Agent以及交易中心的交互而获悉整个市场的交易状态,从而主动调整投资决策算法,趋利避害,实现对环境的适应。Agent的运行逻辑可以参考图8,但不限于图8,Agent的运行逻辑依赖于金融研究者的Agent模型。
【权利要求】
1.一种基于Mult1-Agent的股票市场分布式仿真方法,其特征是,包括交易中心、消息分发中心、主体Agent ;交易中心单独部署在一个节点,消息分发中心单独部署在一个节点,Agent均勻部署在剩余节点; 所述Agent是具有适应能力、学习能力、主动性等特性的独立个体; 所述交易中心接收所有Agent提交的股票订单,并对这些订单做撮合处理,同时将订单撮合结果以及市场行情告知Agent ;Agent通过向交易中心提交订单或者发送消息而影响交易中心的市场行情;所述交易中心还需要维护A-N表,以及控制轮次(Round)同步; 所述消息分发中心用于转发计算机节点之间的通信消息。
2.如权利要求1所述的基于Mult1-Agent的股票市场分布式仿真方法,其特征是,所述Agent和Agent之间以及Agent和交易中心的交互采用集中式,并且所有的通信都是异步的;所述Agent部署在不同的节点之上,每一个用于部署Agent的节点都有一个控制线程-控制器(Controller) ,Controller需要负责调度Agent的运行以及控制Agent之间的信息传输,同时每个节点上的Controller都需要存储一份Agent和节点之间的对应表,简称:A-N表,A-N表用于记录每个Agent被部署在哪个节点上,并且不同节点上的A-N表需要保证实时一致性,由所有节点上的Controller负责同步A-N表; 所述Agent都是一个单独的线程独立运行,所述Agent的调度是指Agent线程的调度,所有的Agent都受到其所在节点上的Controller的调度;每个节点上的Controller维持一个线程池;所述的调度共分两种情形可供用户选择,一种调度策略是所有Agent按步运行,此处的“步”称为Round,一个或者多个Round组成一个时间段(Tick),记一个Tick中共有X个Round,X为一个定制的参数,Agent在运行结束第X个Round之后,需要阻塞等待其他Agent的第X个Round结束,即Agent之间的Round应该同步;Agent的Round同步,需要保证I):每个节点运行的Round —致;2)节点内部所有Agent运行的Round —致;仿真过程的全局Round由交易中心节点记录和维护,每个节点所有的Agent运行完第X个Round之后,由Controller线程通知交易中心节点,并且此节点阻塞,当所有节点的Controller都运行完X个Round之后,仿真进入下一个运行周期。
3.如权利要求1所述的基于Mult1-Agent的股票市场分布式仿真方法,其特征是,所述交易中心的作用是对所有接收到的订单进行撮合处理,交易中心接收来自Agent的订单消息,根据撮合机制对订单进行撮合处理,如果买或者卖订单队列中没有能够与其匹配的订单,则依据撮合机制将订单插入买或者卖订单队列;如果撮合成功,则根据买卖订单的AgentID将撮合价格、撮合数量、撮合时间等信息发送给相应的Agent。
【文档编号】G06Q40/04GK104008504SQ201410261446
【公开日】2014年8月27日 申请日期:2014年6月12日 优先权日:2014年6月12日
【发明者】于策, 陈祥, 王春玉, 吴虎统, 李悦雷, 张小涛, 温捷 申请人:天津大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1