Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1280169
  • 博文数量: 135
  • 博客积分: 10588
  • 博客等级: 上将
  • 技术积分: 1325
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-18 11:12
文章分类

全部博文(135)

文章存档

2013年(6)

2012年(3)

2011年(11)

2010年(7)

2009年(14)

2008年(6)

2007年(42)

2006年(46)

分类: Java

2007-05-15 11:01:11

GoalAgent程序语言中是很重要的概念,Agent的主动性,反应性,自治性和社会能力都与goal有关联。在很多Agent系统中,goal都是一个核心的概念,比如3APLKAOSTroposgoal已经成为活动(actions)和推理(reasoning)之间的纽带。活动是为了获取特定的goal而执行的,goal发生改变的时候活动也会相应发生改变。

Jadex中提供了4goal作为触发机制(根据goal的当前行为分类).

Perform goal:只是指明某些活动需要执行,输出结果只依赖与活动是否被执行。执行了就是succeeded,如果在系统上下文中没有适用的规划需要执行,则为failed。一个perform goal有一预先定义好的状态,由这一状态来触发规划选择和执行机制,当规划执行完毕后,这一状态就无用了。

Achive goal :最常用的,用来达到某些特定的状态。比Perform goal多了target Failure条件。给定target条件,此goal被激活执行,某些plans被选入,在执行阶段,只要target条件变为成功或者说到达了目标状态,则所有活动被终止。Failure条件帮助结束绝对不会到达的目标。去掉了targetfailure条件的achive goalperform goal不同的是,achive执行第一个plan后便成功,而perform则会继续执行下面的plan,直到指定的plans都执行完毕才成功。

Query goal:信息检索,向Agent查询特定的信息。比如cleaner要找到哪些地方有垃圾。如果Agent没有足够知识回答,则立即回答,这个goal便成功了。否则,实用的plan便会试图搜集需要的信息。Query goal是一类特定的achive goal,两者不同的是query goal必须要有一个返回结果。

Maintain goal:条件不满足时调用某个plan执行,比如要保持核反应堆的温度。Maintanance goals初始化便是true,如果他变为false,则系统会采取某些活动使之变为true,于是此类goals便成为了一个触发器,也就是说当他变为false时,才会有活动发生。如图,maintain goal一般处于空闲状态(实际上在监控),当maintain条件不满足了,才会激活相应的plan去执行,成功后依然返回到空闲状态。如果处理过程失败,没有合适的plan,则系统到达unmaintainable 状态,如果不能Agent不能确定当前处理过程是否会成功,则到达unknown状态。

附录:常用的goal属性(BDI flags)

 

Name

Default

Possible Value

retry

true

{ true, false}

retrydelay

0

positive long value

 

recur

false

{ true, false} (for maintain goals only)

recurdelay

0

positive long value (for maintain goals only)

exclude

"when_tried"

{"when_tried","when_succeeded",when_failed", "never"}

posttoall

false

{ true, false}

 

randomselection

false

{ true, false}

metalevelreasoning

true

{ true, false}

 

阅读(2425) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~