jadex

jadex【jadex】Jadex是一种智慧型代理的BDI(Belief-Desire-Intention)推理机 。推理机实际上可以与不同的agent中间件一起使用,中间件可以提供交流环境和控制功能 。
基本介绍中文名:jadex
名称:jadex
人物:Bratman
Rao:Rao和Georgeff发展
基本介绍BDI模型概念是由Bratman提出后Rao和Georgeff发展成为适用于多代理系统的软体架构 。建立与这之上的系统叫做PRS(Procedural Reasoning Systems) 。Jadex是从已有的BDI系统如JACK,发展过来的,利用内置目标协商方法,克服了一些BDI的弱点如:如何协调目标冲突 。在Jadex系统中,agent包含一组信念(beliefs),它可以是任何类型的Java对象;目标集(Goals)表示要实现的目标;规划库(plans)用来具体实现agent目标的方法 。Jadex-BDI模型示意图图中描述Jadex中,基于BDI模型的agent体系结构,该结构中包含四个部分:信念库、反应推理机、目标库和规划库 。Agent启动后,回响外界讯息和内部事件(套用事件,条件事件,目标事件),反应推理机处理这些事件和外界讯息,选择规划库中的合适的规划去执行 。当前的信念库决定了agent的规划执行,而规划的执行又可以改变信念库,改变的信念将触发内部事件,产生新的目标和新的规划执行 。

jadex

文章插图
BDI模型智慧型代理必须对一些事情做出判断,如玩游戏,选择一种安全的方法,还是选择风险高,但是成功的话可以有更多好处的方法 。为了实现agent的智慧型,人们提出了BDI, AOP, 3APL、SOAR等agent体系结构 。其中影响最广的是Bratman提出的BDI模型 。它由Belief,Desire,Intention这三种可以生成动作,信念和得到信息的精神状态组成 。Rao和Georgeff做出了BDI模型的可执行程式,而其中BDI的概念演变成信念、目标和规划 。Jadex把BDI模型引进到Jade代理平台中,并且可以从agent内部生成代表信念、目标和规划 。Jadex里agent拥有的信念可以是任何一种Java对象,存储在信念库里 。目标代表了可以影响到agent行动的具体的动机(例如,要达到一种状态) 。为了达到目标agent执行规划 。代表规划的Java代码中定义了,针对一个目标的解决方案 。信念库信念库存储着agent相信的事实,也是agent内一个可以访问的数据 。信念库中存储的信息与面向对象理论中的对象的属性来说,稍微抽象一点,可以说是对agent的知识的整体视图 。Jadex里信念非常容易输入,不支持推论系统 。信念库中的信念包含一个字元串代表自己名字(与关係资料库中的表相似) 。信念名映射到信念值,而信念值可以是一个Java对象 。信念库支持单数的信念和信念集合 。Jadex信念库中实现了与OQL相似的查询语言,一部分信念改变时将会引发规划或目标,用表达式代替信念值,可以在运行时自动附值 。目标的结构与传统的BDI系统不同,目标是Jadex系统的关键概念 。Jadex中目标也是一个具体的短时间的要求 。目标被执行或不再需要为止为止,agent将会一直寻找合适的行动 。与别的系统不同的是Jadex中的目标可以是相互矛盾的 。为了分离将被採纳的目标和已被激活的目标,Jadex採用了目标的生命周期的概念,其中目标可以是待选、激活、暂停等几个状态 。一个目标被採纳时,它是待选状态 。应用程式中应该定义目标协商机制以决定如何改变目标的状态 。有些目标是需要特殊的环境才能有效,如果环境不符合要求目标将会暂停 。Jadex中有四种目标类型:执行、达到、询问、维持,执行类型是必须执行但不必得到确切结果的目标类型 。比如说捡垃圾的机器人在发现垃圾之前,只能是四处移动并寻找垃圾 。这样的目标可以由一个固定的规划去执行 。达到类型定义了一种抽象的目标状态,而没有固定怎幺去实现 。比如,在一个战略游戏中电脑需要得到一种资源 。这样的目标电脑可以以自己生产或与别的玩家进行交易来达到 。询问目标体现了一种信息需求 。如果暂时无法提供这个信息,将执行相关规划收集所需要的信息 。比如机器人需要倾倒垃圾,首先得知道垃圾箱的位置 。如果机器人没有垃圾箱的信息的话,就需要寻找垃圾箱 。维持目标是一旦达到目标状态就要维持这个状态 。Jadex系统中,目标是对象由带属性对象实现 。“达到”目标的目标状态可以由表达式表示,可用来检查是否达到目标 。目标的属性如目标的名字,可以促进规划的选择,如:可以指定一个规划来处理一个特定名字的所有目标 。目标的参数也可以有效地指导规划的执行 。如:寻找一个FIPA directory facilitator服务,并限制结果集的长度 。被採纳的目标存储在目标库中 。Agent拥有一系列的最高优先权的目标,可供外部调用 。目标还可以拥有子目标,目标和子目标合起来形成目标树 。规划的规格Agent的执行部分在规划里 。Jadex中agent的规划由两部分组成:规划头和相关的规划体 。规划头是指在ADF文档中定义的规划信息,它为规划体的实例化和执行指定环境 。规划体是用具体的Java类实现的Java程式,它继承了Jadex定义的ThreadedPlan类或NonThreadedPlan类,可以实现一些目标或对发生的事件做出反应 。执行绪规划代码位于body()方法中,而非执行绪规划代码位于action()方法中 。在运行时,规划体进行实例化来处理事件和达到目标 。而规划体的开始按钮在规划头里,当相关事件发生时将被执行 。还有一种规划叫初始化规划,在agent生成后就执行 。运行中的规划生成一个额外的过滤器来等待特定的事件发生,以触发接下来的规划步骤 。