CN104978170B - 一种基于图形化表示的多智能体系统生成方法 - Google Patents
一种基于图形化表示的多智能体系统生成方法 Download PDFInfo
- Publication number
- CN104978170B CN104978170B CN201410133930.4A CN201410133930A CN104978170B CN 104978170 B CN104978170 B CN 104978170B CN 201410133930 A CN201410133930 A CN 201410133930A CN 104978170 B CN104978170 B CN 104978170B
- Authority
- CN
- China
- Prior art keywords
- class
- task
- service
- intelligent body
- platform
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 100
- 230000014509 gene expression Effects 0.000 claims abstract description 18
- 230000003993 interaction Effects 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 9
- 230000009466 transformation Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 4
- 230000002159 abnormal effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000012986 modification Methods 0.000 claims description 2
- 230000004048 modification Effects 0.000 claims description 2
- 238000000151 deposition Methods 0.000 claims 1
- 239000000155 melt Substances 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 26
- 238000004364 calculation method Methods 0.000 description 26
- 230000018109 developmental process Effects 0.000 description 26
- 230000008569 process Effects 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000033772 system development Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003923 mental ability Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000009257 reactivity Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明涉及一种基于图形化表示的多智能体系统生成方法,首先利用图形化方式编辑构建自定义的多智能体系统;然后对多智能体系统的图形化元素进行建模,通过表示模型来描述图形化的多智能体系统;然后将多智能体系统的表示模型转化为用UML描述的中间模型,最后将中间模型转化为底层源代码,在代码转化的过程中,会根据图形化方式设置的参数、元素之间的相互关系,自动生成对应的代码块,并且封装了任务与智能体之间、任务与任务之间通过服务调用进行交互所产生的交互逻辑。本发明能够有效帮助多智能体系统开发者理解与使用,减少了开发工作量,降低了交互逻辑的复杂程度,提高了开发效率。
Description
技术领域
本发明涉及多智能体系统开发技术,具体涉及一种基于图形化表示的多智能体系统生成方法。
背景技术
多智能体系统(Multi-Agent System,简称MAS)是分布式人工智能的一个重要分支,通过将多个智能体组织在一起,彼此通信和协调,共同实现某些庞大而复杂的目标或者完成特定的任务。多智能体系统具有自治性、分布性、反应性、主动性等特点,并具备一定的组织能力、学习能力和推理能力。并且,不同的智能体之间可以是异构和分布的,不管单个的智能体运行在什么环境与平台,只要智能体之间按照约定的规范进行通信与交互,它们就能够组成一个多元的智能体系统。由于多智能体不仅具备分布式和并行解决问题的能力,也在处理一些复杂模式与交互等方面有与生俱来的优势,它被广泛应用于生产规划、制造控制、后勤、仿真、协调专家系统、分布式智能决策、空间探测、教育培训、分布式故障诊断、供应链集成和虚拟企业等领域,并且随着多智能体技术的不断发展与完善,它将被应用于更加广泛的领域。
目前的多智能体系统开发方法主要有两类,一类是文本化的开发方法,一类是图形化的开发方法。在文本化的开发方法中,用户以文本化的方式,在多智能体开发平台的基础上,利用JAVA或C++的开发环境,直接编写JAVA或C++代码,从而开发出所需的多智能体系统;这种开发方法导致用户不得不直接通过编写底层代码来设计并实现多智能体系统,这对用户的计算机专业技能提出了很高的要求,无疑增加了软件开发成本。在图形化的开发方法中,用户可通过图形化开发环境,对多智能体系统进行建模,而用户所建立的图形化多智能体系统模型则可被自动转化为JAVA代码,从而形成多智能体系统。然而,目前的图形化开发方法存在两个问题,第一,图形化多智能体系统模型的表示涉及了过多的多智能体内部机制的细节,例如,协商机制等,抽象程度不高,不利于用户的理解与使用,且要求用户掌握大量的关于多智能体系统的计算机专业知识;第二,目前在图形化多智能体系统模型与底层代码转化中,没有普式的转化方法,且无法转化为C++代码,而许多工业领域的软件,例如智能配电网相关软件的开发都以C++为主流开发语言,这就大大制约了图形化开发方法的应用范围。
发明内容
针对上述多智能体系统开发方法中存在的问题,本发明所要解决的技术问题是:如何针对多智能体平台设计一种简洁、易用、抽象程度高的图形化开发方法,使用户不必关心诸如网络消息通讯、任务调度算法、底层服务机制等多智能体系统的底层软件开发细节,就可开发出满足应用需求的多智能体系统。
为了解决上述技术问题,本发明提出了基于图形化表示的多智能体系统生成方法,其具体步骤如下:
1)采用图形化方式编辑构建多智能体系统的各个构成元素,包括智能体、任务、服务和运行平台,并对多智能体系统的图形化元素进行建模,形成多智能体系统的表示模型;
2)根据多智能体系统的表示模型,利用UML类图建立多智能体系统各个构成元素的中间模型,将各个构成元素的属性与中间模型对应;
3)将多智能体系统各个构成元素的中间模型转化为底层代码,完成多智能体系统的代码生成,得到自定义的多智能体系统。
其中,步骤1)采用图形化方式编辑构建多智能体系统的各个构成元素的具体方法是:
a)整个多智能体系统图形包括智能体、任务、服务、运行平台等图形元素,各类图形元素由不同的图标表示。
b)智能体与任务的图形元素之间具备包含关系,即一个智能体图标的内部可以包含零个或者若干个任务图标,表明这个智能体负责调度它所包含的所有任务。
c)服务用一条有向线段表示,该有向线段只能从智能体图标出发,终止于平台图标,箭头指向平台图标。一条有向线段可以表示多个服务,这些服务的共同点是,它们都由该线段相连的智能体提供,并且向线段指向的平台注册。
d)一个完整的多智能体系统图形有且仅有一个平台图标。可以有零个或者若干个智能体图标和任务图标。所有的任务图标必须被包含在智能体图标内部,不能独立存在。智能体图标到平台图标至多只能存在一条有向线段。
进一步地,将步骤3)生成的底层代码与多智能体平台开发框架提供的通用源代码整合编译,生成最终的完整的自定义多智能体系统的目标文件(可执行文件)。
其中,对多智能体系统的代码转化包括两部分。一是利用底层多智能体平台所提供的基本开发框架,将中间模型中的类与基本开发框架中的源代码相对应。例如用中间模型表示的一个智能体类,必定具备基本开发框架中一个智能体的基本特性,因此,它是从基本开发框架中的智能体类继承而来。另一方面,每个中间模型表示的智能体类,由于一开始图形化设置的不同,都具备其独特的属性,因此,这些智能体类在代码转化过程中都将变成基本智能体的子类,每个子类的属性各不相同。同时,根据图形化设置的不同和功能的不同,会自动生成不同的代码块。本发明中,所有在图形化表示中通过有向线段注册服务的智能体,都会在最终转化而成的智能体子类的启动方法中自动加入实现注册服务功能的代码;所有在图形化表示中创建的智能体,都会在最终的系统启动函数中自动加入创建该智能体的代码;所有在图形化表示中创建的任务,都会在最终转化而成的任务类中自动加入与服务调用有关的交互逻辑代码。
上述代码转化方法,在生成任务类的交互逻辑部分代码时,主要生成的逻辑如下:一旦在任务的执行过程中需要调用某个服务,该任务即在调用服务后主动挂起,等待服务返回结果,并且记录程序执行点;一旦服务正常返回,程序进入执行区从原来记录的执行点继续往下执行,而不是从头开始执行;一旦服务不正常返回,即进入异常处理区做相应的处理。
在进行代码编译时,首先对通过图形化开发方法生成的源代码进行编译,如果发现语法错误立即停止编译并作出提示;如果编译通过,则接下来将上述源代码与多智能体平台提供的核心代码整合编译,最终生成整个多智能体系统的执行文件。
本发明的有益效果:
首先,本发明可对多智能体系统进行图形化建模,提出了多智能体系统的表示模型,将多智能体系统的表示进行了高度的抽象,极大地方便了开发人员的理解与使用,为其设计开发多智能体系统提供了简洁易懂的方式。其次,本发明提出将多智能体系统的表示模型转化为中间模型,再将中间模型转化为底层C++源代码的代码转化方法,有效的将图形化表示与底层源代码进行自动关联,开发人员只需添加与其业务相关的代码,而不必关心诸如网络消息通讯、任务调度算法、底层服务机制等多智能体系统的底层软件开发细节,就可开发出满足应用需求的多智能体系统,从而极大地降低了领域开发人员的工作负担,节省了多智能体系统的软件开发成本。
附图说明
图1是智能体的表示模型示意图;
图2是actor的表示模型示意图;
图3是任务的表示模型示意图;
图4是服务的表示模型示意图;
图5是平台的表示模型示意图;
图6是智能体的中间模型示意图;
图7是服务的中间模型示意图;
图8是平台的中间模型示意图;
图9是示例中搭建一个由多个智能体和多个任务组成的自定义多智能体系统(基于多智能体的配电网潮流计算系统)的图形化表示示意图。
图10是本发明的多智能体系统生成方法的步骤流程图。
具体实施方式
下面通过具体实施案例和附图,对本发明做进一步说明。
本发明提出的基于模型转化的多智能体系统生成方法,其步骤如图10所示,具体说明如下:
1)对多智能体系统的构成元素即智能体、任务、服务和运行平台,进行图形化建模,建立多智能体系统表示模型。各个构成元素的表示模型按照如下方法建立:
1-1)如图1所示建立智能体表示模型。其中,id是每个智能体在整个多智能体系统中唯一的一个身份标识符,从而与系统中其他的智能体相区分。系统通过id来定位每个智能体。rs代表一个智能体为了完成特定的任务或者实现自身的功能,需要请求外界提供给它的服务。ps代表一个智能体能够给其他智能体或者外界环境提供的功能,这是一个智能体的核心价值的体现。actor是一个智能体的核心功能实现部分,它代表了一个智能体的计算能力或者实现某些特定功能的能力,它由若干个任务所组成的,并通过调度器安排这些任务的运行顺序,从而实现自身功能,它的表示模型如图2所示,其中scheduler表示调度器。
1-2)如图3所示建立任务表示模型。其中,state表示一个任务的执行状态,包括创建、就绪、执行、挂起、结束等状态。name表示某一类任务的名称。input表示执行某项任务所必须的参数。output表示执行完任务后能够提供的输出参数。一个任务在被创建并且加入到调度器中时,自动处于“就绪”状态;当该任务被调度器分配资源后开始执行时,将自动切换为“执行”的状态;由于调度器的控制任务被动挂起,或者任务在调用外界服务时主动将自身挂起时,它处于“挂起”状态;当任务最终执行完毕时,它将自动转为“结束”状态。
1-3)如图4所示建立服务表示模型。其中,provider表示一个服务提供者的角色,该角色负责该服务的具体实现。name表示一个服务的名称,用来与其他服务加以区分。DF表示提供目录服务的角色,该角色负责对服务的管理,包括智能体的服务注册、修改、查询等。
1-4)如图5所示建立平台表示模型。其中,Agent Management负责管理同本多智能体系统平台中的存在的多个智能体,包括提供身份认证、服务管理等功能。DF为本平台内的智能体提供服务查找、服务注册等功能。如果本平台内不存在智能体查找的服务,DF会向系统中当前可用的其他平台发出查找请求。Communication负责同一个平台的智能体之间、同一个平台中智能体与其他模块之间、分别分布在不同平台中的智能体之间的消息传输,从而实现通讯功能。
对多智能体系统的建模涵盖系统的所有组成元素,如智能体、任务、服务、平台等。多智能体系统表示模型能够对所有图形化元素进行建模,能够分别描述这些图形化元素的属性以及彼此间的关系,例如智能体与任务之间的调度关系、智能体在平台中注册任务等。
2)根据多智能体系统表示模型,建立多智能体系统中间模型。中间模型用UML类图表示,各个构成元素的中间模型按照如下方法建立:
2-1)智能体中间模型分别由智能体类、调度器类、任务类组成。如图6,一个智能体类由一个调度器类聚合而成,一个调度器类可以管理多个任务类。其中,智能体类的生成方法为:将智能体表示模型中的id、rs与ps直接转化为id属性、rs属性与ps属性,并添加setup方法(智能体初始化)、takedown方法(释放智能体所占有的资源)与handlemessage方法(处理智能体所接收到的消息),形成智能体类;调度器类的生成方法为:对智能体表示模型中actor所包含的scheduler进行细化,通过添加tasklist属性(表示调度器所管辖的任务的列表)、start方法(启动调度器)、stop方法(停止调度器)、Pause方法(暂停调度器)、resume(恢复调度器)、add方法(将任务加入调度器所管辖的任务列表)、remove方法(将任务从调度器所管辖的任务列表中删除),形成调度器类;任务类的生成方法为:将任务表示模型中的name、state直接映射为name属性和state属性,将input转化为parameters属性,将output转化为result属性,并添加run方法(执行任务)、replymessage方法(将task的计算结果返回给需要者)与Isfinished方法(判断该任务是否完成),形成task类。
2-2)服务中间模型由一个服务类表示。通过将服务表示模型中的name直接转化为name属性形成服务类。服务类、智能体类和平台类三者间的关系如图7所示:智能体类是提供服务的角色,服务在平台类里面注册。一个服务可以由多个智能体提供,反之一个智能体也可以提供多个服务,服务类与智能体类是多对多的关系。一个平台上可以注册多个服务,一个服务只能在一个平台上注册,因此平台类与服务类是一对多的关系。
2-3)平台中间模型由一个平台类表示,它由AMS类、DF类、MTS类聚合而成。如图8所示。其中,AMS(智能体管理)类由平台表示模型中的Agent Management转化而成;DF(服务查找注册)类由平台表示模型中的DF转化而成;MTS(消息监控)类由平台表示模型中的Communication转化而成。
3)将多智能体系统中间模型进一步转化为底层代码,将转化后的底层代码与多智能体平台提供的核心代码整合编译,生成最终的多智能体系统可执行文件,完成多智能体系统的代码生成。
各个构成元素的中间模型到底层代码的转化方法如下:
3-1)将智能体类中的id属性对应为Agent类中的AID成员类、将智能体类中的rs属性对应为Agent类中的callForService()方法,负责向其它智能体发出服务请求;将智能体类中的ps属性对应为Agent类中的registerService()方法,负责将智能体所提供的服务注册到系统中;将智能体类中的setup、takedown、handleMessage方法对应为Agent类中同名的方法。最后的Agent类即为智能体中间模型对应的底层代码。
3-2)将任务类中的name属性对应为Task类的类名;将任务类中的result属性对应为Task类中的result属性,负责存放相应任务的运行结果;将任务类中的parameters属性对应为Task类中的paras属性,负责存放相应任务所需的输入参数;将智能体类中的run、replyMessage、isFinished方法对应为Task类中同名的方法。最后的Task类即为任务中间模型对应的底层代码。
3-3)将服务类中的name属性对应为Service类的类名;将与服务类中关联的智能体类对应为Service类中的Agent属性、与服务类中关联的平台类对应为Service类中的Platform属性。最后的Service类即为服务中间模型对应的底层代码。
3-4)将与平台类关联的MTS类、AMS类、DF类对应为Platform类中相应的MTS属性、AMS属性、DF属性。最后的Platform类即为平台中间模型对应的底层代码。
下面对于本发明提出的基于图形化表示的多智能体系统生成方法,结合以下的应用示例——基于多智能体的配电网潮流计算系统的生成做进一步说明。在接下来的示例中,将用图形化方式生成一个负责实现配电网潮流计算功能的智能体、一个请求潮流计算服务的智能体以及一个展示潮流计算结果的智能体,然后让提供潮流计算功能的智能体以及展示潮流计算结果的智能体在平台中注册相应的服务,最后将图形化表示的整个多智能体系统转化为底层C++代码,从而生成基于多智能体的配电网潮流计算系统。
1)通过图形化操作的方式,编辑完成如图9的多智能体系统的图形化表示。
1-1)其中,命名为AgentPower的圆角矩形图标表示一个智能体,它的功能是负责提供电力系统潮流计算服务。在智能体AgentPower的内部,一个小机器人形状的图标代表一个命名为TaskPowerFlow的任务,该任务执行具体的潮流计算。此外,任务TaskPowerFlow处于智能体AgentPower的内部,表明它受智能体AgentPower内部调度器的调度。
1-2)同理,命名为AgentRequest的圆角矩形图标表示一个智能体,它的功能是用于负责请求潮流计算服务。在智能体AgentRequest的内部,一个小机器人形状的图标代表一个命名为TaskRequest的任务,该任务执行具体的请求潮流计算服务。此外,任务TaskRequest处于智能体AgentRequest的内部,表明它受智能体AgentRequest内部调度器的调度。
1-3)同理,命名为AgentDisplay的圆角矩形图标表示一个智能体,它的功能是用于展示潮流计算结果。在智能体AgentDisplay的内部,一个小机器人形状的图标代表一个命名为TaskDisplay的任务,该任务负责将潮流计算的结果可视化展现出来。此外,任务TaskDisplay处于智能体AgentDisplay的内部,表明它受智能体AgentDisplay内部调度器的调度。
1-4)图中另外一个名为“Multi-Agent System Platform”的圆角矩形图标表示一个多智能体系统的平台,用于提供服务注册、通讯交互、智能体管理等功能。
1-5)图中从智能体AgentPower出发到平台的一条有向线段,表示智能体AgentPower在平台中注册了服务,并且可以进一步指定服务的名称,例如ServicePowerFlowCalc(潮流计算服务)。
1-6)图中从智能体AgentDisplay出发到平台的一条有向线段,表示智能体AgentDisplay在平台中注册了服务,并且可以进一步指定服务的名称,例如ServiceDisplay(潮流计算结果展示服务)。
2)将上述多智能体系统的图形化表示转化为中间模型。
将智能体AgentPower转化为AgentPower类,该类具体实现潮流计算ServicePowerFlowCalc服务的功能,它具备id、rs、ps等属性,以及setup、takedown、handleMessage等方法。其中ps属性即智能体AgentPower所能提供的服务(在此为潮流计算服务ServicePowerFlowCalc),由图形化表示中从智能体AgentPower发出的代表潮流计算服务ServicePowerFlowCalc的有向线段所指定。
将智能体AgentRequest转化为AgentRequest类,该类具体实现请求潮流计算ServicePowerFlowCalc服务的功能,它具备一个智能体基本的属性与方法,其中rs属性即智能体AgentRequest需要请求的服务,同样由图形化表示中从智能体AgentPower发出的代表潮流计算ServicePowerFlowCalc的有向线段所指定。
将智能体AgentDisplay转化为AgentDisplay类,该类具体实现潮流计算ServiceDisplay服务的功能,它具备id、rs、ps等属性,以及setup、takedown、handleMessage等方法。其中ps属性即智能体AgentDisplay所能提供的服务(在此为潮流计算结果展示服务ServiceDisplay),由图形化表示中从智能体AgentDisplay发出的代表结果展示服务ServiceDisplay的有向线段所指定。
将任务TaskPowerFlow转化为TaskPowerFlow类,该类具备name、state、result、parameters等属性,以及run、replyMessage、isFinished等方法。同理转化TaskRequest类和TaskDisplay类。各任务根据其run方法中来执行具体的功能。例如,TaskPowerFlow任务所对应TaskPowerFlow类的run方法执行潮流计算功能;TaskRequest任务所对应TaskRequest类的run方法执行请求潮流计算服务功能。
将多智能体系统的平台转化为Platfrom类,它由一个MTS类、一个AMS类、一个DF类聚合而成,同时,根据多智能体系统的图形化表示,AgentPower类将在Platfrom类中注册ServicePowerFlowCalc服务,AgentDisplay类将在Platfrom类中注册ServiceDisplay服务。此外,AgentPower类还与TaskPowerFlow类相关联,表示AgentPower类负责调度TaskPowerFlow类。AgentRequest类与TaskRequest类相关联,表示AgentRequest类负责调度TaskRequest类。AgentDisplay类和TaskDisplay类相关联,表示AgentDisplay类负责调度TaskDisplay类
3)将上述多智能体系统的中间模型转化为底层代码。本发明所指的底层代码是指用C++编程语言实现的源代码。通过特定的映射规则,并且结合多智能体平台的开发框架,将中间模型中的类转化为具体的底层源代码。
3-1)一个智能体的中间模型转化为底层代码的过程可以分为两部分。一是转化多智能体平台开发框架提供的通用智能体源代码,其中包含了一个智能体根据多智能体平台的要求所必须具备的基本属性与方法,以表1为例,其中包含了智能体自身的AID、所依赖的调度器、平台等属性,以及启动、结束、暂停智能体、消息处理等方法。另一部分是根据用户的图形化表示生成相应的源代码。例如在将AgentPower类转化为源代码时,会让它继承基础的Agent类,然后在setup方法中注册ServicePowerFlowCalc服务,同时在handleMessage方法中,设定一旦该智能体接收到对ServicePowerFlowCalc服务的请求,就立即创建TaskPowerFlow任务并加入调度器等待执行。表2是AgentPower类的一部分代码示例,其中加粗字体部分是根据用户定制内容自动生成的相应代码。由于AgentPower类和AgentDisplay类都是服务提供类,除了具体的任务执行逻辑不同外(AgentPower类负责潮流计算,AgentDisplay类负责展示潮流计算结果),结构框架相同,因此这里只用AgentPower类举例说明。
表1.多智能体开发框架中一个智能体的基本代码结构
表2.AgentPower类的部分代码示例
一个任务的中间模型转化为底层代码的过程也可以分为两部分。一是转化多智能体平台开发框架提供的通用任务源代码,其中包含了一个任务根据多智能体平台的要求所必须具备的基本属性与方法,以表3为例,其中包含了智能体自身的内部状态标示、所属智能体、输入输出参数等属性,以及运行、回应消息等方法。另一部分是根据用户的图形化表示所生成的相应源代码。需要重点强调的是,本发明根据任务的特性,在代码转化过程中设计了一套任务交互逻辑,从而帮助开发者减少工作量,降低了交互逻辑的复杂程度,避免重复开发。
任务的交互逻辑与相应的框架代码如表4,其中,变量“has_service”是一个布尔变量,其取值范围为“true”或者“false”,默认初始化值为“true”。变量“switch_count”是整数类型,默认初始化值为“0”。因此,程序默认执行的代码块是“case0”包含的部分。如果该任务需要调用其他智能体提供的服务,则应该首先发出服务请求,然后将自身挂起,并等待服务请求的结果。当系统收到返回结果后,之前被挂起的任务将被唤起,并重新执行该任务的run方法执行。此时,系统会自动将变量“switch_count”的值加1,因此run方法将从下一个case执行。例如,在case0中请求某个服务,当收到服务应答后,run方法将直接进入case1执行;在case1中请求某个服务,当收到此服务的应答时,run方法将直接进入case2执行;以此类推。此外,如果收到确认应答,则has_service被自动设置为“true”,否则为“false”。在此交互逻辑下,系统开发者只需要编码实现,例如表4中加粗字体部分即为TaskRequest类实现请求ServicePowerFlowCalc服务以及后续的结果处理。
表3.多智能体开发框架中一个任务的基本代码结构
表4.任务TaskRequest的交互逻辑与相应框架代码
3-2)将服务的中间模型转化为底层代码的过程体现在智能体中间模型与任务中间模型的转化过程中。如上文所述,智能体与任务源代码的转化过程中包含了服务创建、注册、请求的过程。
3-3)将平台的中间模型转化为底层代码的过程,根据用户在进行多智能系统图形化表示时通过图形化方式设定的参数,设置整个平台对应参数如端口号等。然后根据图形化表示中设计的智能体,自动生成创建智能体的源代码,如表5所示。在本例中,设定平台使用1234号端口,然后启动平台,再创建AgentPower智能体和AgentRequest智能体,加入到平台的AMS(智能体管理)中进行统一管理维护。
表5.自动生成创建智能体的源代码的示例
4)代码编译。将以上根据用户的图形化表示所生成的相应源代码与多智能体平台开发框架提供的通用源代码整合编译,生成最终的完整的自定义多智能体系统的目标文件(.exe文件)。
以上实施案例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求所述为准。
Claims (8)
1.一种基于图形化表示的多智能体系统生成方法,其步骤包括:
1)采用图形化方式编辑构建多智能体系统的各个构成元素,包括智能体、任务、服务和运行平台,并对多智能体系统的图形化元素进行建模,形成多智能体系统的表示模型;所述采用图形化方式编辑构建多智能体系统的各个构成元素的方法是:
a)将智能体、任务、服务和运行平台各类图形元素由不同的图标表示;
b)智能体与任务的图形元素之间具备包含关系,即一个智能体图标的内部包含零个或者若干个任务图标,表明这个智能体负责调度它所包含的所有任务;
c)服务用一条有向线段表示,该有向线段只能从智能体图标出发,终止于平台图标,箭头指向平台图标;一条有向线段可以表示多个服务,这些服务的共同点是,它们都由该线段相连的智能体提供,并且向线段指向的平台注册;
d)一个完整的多智能体系统图形有且仅有一个平台图标,可以有零个或者若干个智能体图标和任务图标,所有的任务图标必须被包含在智能体图标内部,不能独立存在;智能体图标到平台图标至多只能存在一条有向线段;
2)根据多智能体系统的表示模型,利用UML类图建立多智能体系统各个构成元素的中间模型,将各个构成元素的属性与中间模型对应;
3)将多智能体系统各个构成元素的中间模型转化为底层代码,完成多智能体系统的代码生成,得到自定义的多智能体系统。
2.如权利要求1所述的方法,其特征在于,步骤1)中各个构成元素的表示模型按照如下方法建立:
1-1)智能体表示模型:其中,id是每个智能体在整个多智能体系统中唯一的一个身份标识符,系统通过id来定位每个智能体;rs代表一个智能体为了完成特定的任务或者实现自身的功能,需要请求外界提供给它的服务;ps代表一个智能体能够给其他智能体或者外界环境提供的功能;actor是一个智能体的核心功能实现部分,代表一个智能体的计算能力或者实现某些特定功能的能力,由若干个任务所组成,并通过调度器安排这些任务的运行顺序,从而实现自身功能;
1-2)任务表示模型:其中,state表示一个任务的执行状态,包括创建、就绪、执行、挂起、结束;name表示某一类任务的名称;input表示执行某项任务所必须的参数;output表示执行完任务后能够提供的输出参数;
1-3)服务表示模型:其中,provider表示一个服务提供者的角色,该角色负责该服务的具体实现;name表示一个服务的名称,用来与其他服务加以区分;DF表示提供目录服务的角色,该角色负责对服务的管理,包括智能体的服务注册、修改和查询;
1-4)平台表示模型:其中,Agent Management负责管理同本多智能体系统平台中的存在的多个智能体;DF为本平台内的智能体提供服务查找、服务注册功能;Communication负责同一个平台的智能体之间、同一个平台中智能体与其他模块之间、分别分布在不同平台中的智能体之间的消息传输,从而实现通讯功能。
3.如权利要求1所述的方法,其特征在于,步骤2)中各个构成元素的中间模型按照如下方法建立:
2-1)智能体中间模型分别由智能体类、调度器类、任务类组成,一个智能体类由一个调度器类聚合而成,一个调度器类管理多个任务类;
2-2)服务中间模型由一个服务类表示,服务类、智能体类和平台类三者间的关系是:智能体类是提供服务的角色,服务在平台类里面注册;一个服务可以由多个智能体提供,反之一个智能体也可以提供多个服务,服务类与智能体类是多对多的关系;一个平台上可以注册多个服务,一个服务只能在一个平台上注册,平台类与服务类是一对多的关系;
2-3)平台中间模型由一个平台类表示,由AMS类、DF类、MTS类聚合而成,其中,AMS类由平台表示模型中的Agent Management转化而成;DF类由平台表示模型中的DF转化而成;MTS类由平台表示模型中的Communication转化而成。
4.如权利要求3所述的方法,其特征在于,步骤2-1)中智能体类的生成方法为:将智能体表示模型中的id、rs与ps直接转化为id属性、rs属性与ps属性,并添加setup方法、takedown方法与handlemessage方法,形成智能体类;调度器类的生成方法为:对智能体表示模型中actor所包含的scheduler进行细化,通过添加tasklist属性、start方法、stop方法、Pause方法、resume、add方法、remove方法,形成调度器类;任务类的生成方法为:将任务表示模型中的name、state直接映射为name属性和state属性,将input转化为parameters属性,将output转化为result属性,并添加run方法、replymessage方法与Isfinished方法,形成task类。
5.如权利要求4所述的方法,其特征在于,步骤3)中各个构成元素的中间模型到底层代码的转化方法如下:
3-1)将智能体类中的id属性对应为Agent类中的AID成员类、将智能体类中的rs属性对应为Agent类中的callForService()方法,负责向其它智能体发出服务请求;将智能体类中的ps属性对应为Agent类中的registerService()方法,负责将智能体所提供的服务注册到系统中;将智能体类中的setup、takedown、handleMessage方法对应为Agent类中同名的方法;最后的Agent类即为智能体中间模型对应的底层代码;
3-2)将任务类中的name属性对应为Task类的类名;将任务类中的result属性对应为Task类中的result属性,负责存放相应任务的运行结果;将任务类中的parameters属性对应为Task类中的paras属性,负责存放相应任务所需的输入参数;将智能体类中的run、replyMessage、isFinished方法对应为Task类中同名的方法;最后的Task类即为任务中间模型对应的底层代码;
3-3)将服务类中的name属性对应为Service类的类名;将与服务类中关联的智能体类对应为Service类中的Agent属性、与服务类中关联的平台类对应为Service类中的Platform属性;最后的Service类即为服务中间模型对应的底层代码;
3-4)将与平台类关联的MTS类、AMS类、DF类对应为Platform类中相应的MTS属性、AMS属性、DF属性;最后的Platform类即为平台中间模型对应的底层代码。
6.如权利要求1所述的方法,其特征在于,将步骤3)生成的底层代码与多智能体平台开发框架提供的通用源代码整合编译,生成最终的完整的自定义多智能体系统的目标文件。
7.如权利要求6所述的方法,其特征在于,将步骤3)在生成任务类的交互逻辑部分代码时,其生成逻辑是:一旦在任务的执行过程中需要调用某个服务,该任务即在调用服务后主动挂起,等待服务返回结果,并且记录程序执行点;一旦服务正常返回,程序进入执行区从原来记录的执行点继续往下执行,而不是从头开始执行;一旦服务不正常返回,即进入异常处理区做相应的处理。
8.如权利要求6所述的方法,其特征在于,将步骤3)在进行代码编译时,首先对通过图形化开发方法生成的源代码进行编译,如果发现语法错误立即停止编译并作出提示;如果编译通过,则接下来将上述源代码与多智能体平台提供的核心代码整合编译,最终生成整个多智能体系统的执行文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410133930.4A CN104978170B (zh) | 2014-04-03 | 2014-04-03 | 一种基于图形化表示的多智能体系统生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410133930.4A CN104978170B (zh) | 2014-04-03 | 2014-04-03 | 一种基于图形化表示的多智能体系统生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104978170A CN104978170A (zh) | 2015-10-14 |
CN104978170B true CN104978170B (zh) | 2018-07-27 |
Family
ID=54274711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410133930.4A Active CN104978170B (zh) | 2014-04-03 | 2014-04-03 | 一种基于图形化表示的多智能体系统生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104978170B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329764A (zh) * | 2017-07-03 | 2017-11-07 | 苏州大学 | 一种多任务gcplc系统及利用该系统实现应用开发的方法 |
CN109324569A (zh) * | 2017-08-01 | 2019-02-12 | 智能云科信息科技有限公司 | 监控系统及方法、包含监控系统的云mes系统 |
CN110263932B (zh) * | 2019-06-24 | 2021-10-26 | 中国人民解放军国防科技大学 | 多智能体仿真系统图形化组合构建方法与装置 |
CN111857680A (zh) * | 2020-06-09 | 2020-10-30 | 北京麟卓信息科技有限公司 | 基于元特征的智能模型构建方法 |
CN115454590A (zh) * | 2022-08-09 | 2022-12-09 | 北京机电工程研究所 | 一种面向活动图的仿真调度方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693134A (zh) * | 2012-05-25 | 2012-09-26 | 南京邮电大学 | 一种基于统一建模语言的传感网软件建模平台开发方法 |
CN102707949A (zh) * | 2012-04-26 | 2012-10-03 | 清华大学 | 一种基于本体的可视化概念建模方法 |
CN103001328A (zh) * | 2012-11-19 | 2013-03-27 | 山东大学 | 一种智能变电站的故障诊断与评估方法 |
CN103513976A (zh) * | 2012-06-29 | 2014-01-15 | 中兴通讯股份有限公司 | 业务流程建模方法及装置 |
-
2014
- 2014-04-03 CN CN201410133930.4A patent/CN104978170B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102707949A (zh) * | 2012-04-26 | 2012-10-03 | 清华大学 | 一种基于本体的可视化概念建模方法 |
CN102693134A (zh) * | 2012-05-25 | 2012-09-26 | 南京邮电大学 | 一种基于统一建模语言的传感网软件建模平台开发方法 |
CN103513976A (zh) * | 2012-06-29 | 2014-01-15 | 中兴通讯股份有限公司 | 业务流程建模方法及装置 |
CN103001328A (zh) * | 2012-11-19 | 2013-03-27 | 山东大学 | 一种智能变电站的故障诊断与评估方法 |
Non-Patent Citations (2)
Title |
---|
UML在软件开发中的应用与实践;杨继晖;《电脑知识与技术(技术论坛)》;20050324;第79-81页 * |
一种面向图形化建模语言表示法的元模型;何啸等;《软件学报》;20080924;第19卷(第8期);第1867-1880页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104978170A (zh) | 2015-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104978170B (zh) | 一种基于图形化表示的多智能体系统生成方法 | |
Granchelli et al. | Towards recovering the software architecture of microservice-based systems | |
CN105447643B (zh) | 一种面向云计算平台的科学工作流系统及方法 | |
Lepuschitz et al. | Toward self-reconfiguration of manufacturing systems using automation agents | |
CN103513976B (zh) | 业务流程建模方法及装置 | |
CN109561147A (zh) | 一种异构云管理方法及系统、异构云管理系统构建方法 | |
CN109213482A (zh) | 基于卷积神经网络的人工智能图形化应用平台及应用方法 | |
Spanoudakis et al. | Engineering ambient intelligence systems using agent technology | |
Galzarano et al. | A task-oriented framework for networked wearable computing | |
CN104391701A (zh) | 一种能效评估软件开发方法 | |
Soukaras et al. | IoTSuite: a ToolSuite for prototyping internet of things applications | |
CN108460199A (zh) | Cni建模系统 | |
CN106096145B (zh) | 一种基于状态空间的复杂系统图形化建模与分析系统 | |
CN107608675A (zh) | 基于虚拟文档对象模型的跨平台前端开发系统及方法 | |
Cheng et al. | LSMP: A lightweight service mashup platform for ordinary users | |
CN101303646B (zh) | 基于可执行元语言的电信领域建模方法 | |
Furrer et al. | UNR-PF: An open-source platform for cloud networked robotic services | |
Pisarić et al. | Towards a non-disruptive system for dynamic orchestration of the shop floor | |
Theorin et al. | Service-oriented process control with grafchart and the devices profile for web services | |
CN108279881A (zh) | 基于深度学习预测部分的跨平台实现架构及方法 | |
CN109753281A (zh) | 一种基于图形化编程的微电网能量管理策略可视化开发工具 | |
Roth et al. | A gateway to easily integrate simulation platforms for co-simulation of cyber-physical systems | |
Alexakos et al. | Adaptive manufacturing utilizing ontology-driven multi-agent systems: Extending Pabadis' Promise approach | |
Hegedũs et al. | A DevOps approach for cyber-physical system-of-systems engineering through arrowhead | |
Lu et al. | A UML profile to model safety-critical embedded real-time control systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |