jade中的agent behaviour
来源:互联网 发布:三拼域名成交案例 编辑:程序博客网 时间:2024/06/04 18:26
[JADE]agent任务behaviours
在JADE中,一个活动的agent相当于一个完成任务的主体,而真正的任务的载体是 behaviour实例。每个Behaviour是jade.core.behaviours.Behaviours子类,agent实例通过引用其addBehaviour(behaviour)方法将behaviour加入agent中执行,在agent生命周期中的任何时刻都可以加入behaviours,behaviour中也可以嵌套behaviour。
每个behaviour必需实现jade.core.behaviours.Behaviours的两个抽象方法:action()和done()。
Action()方法中为需要实现任务的代码,done()方法返回一个布尔值来判断这个Behaviour是否完成其任务,是否应将其移出其所在的Agent所管理的behaviours池(每个agent可同时执行多个beheaviour,这些behaviour之间是相互合作关系)。
如下所示的OverbearingBehaviour 将永远阻止其它behaviour的执行,因为OverbearingBehaviour的done()返回在永远为真,如图一示;
public class OverbearingBehaviour extends Behaviour{
public void action(){
while(true){
//do something here..
}
}
public boolean done(){
return true;
}
}
图一
Agent生命周期及任务执行方式图二,需要注意的是,当一个agent没有可以执行的behaviour时,agent对应线程进入休眠状态,以节省CPU资源。
图二
JADE中三种主要的Behaviour
JADE中三种主要的Behaviour为: One-shot Behaviours,Cyclic behaviours和Generic behaviours.
One-shot Behaviours:即OneShotBehaviour类,是jade.core.behaviours.Behaviour的子类,其action()方法只执行一次,done()返回真, 如图三
Public class MyOneShotBehaviour extends OneShotBehaviour{
Public void action(){
// perform operation X
}
}
X只会执行一次;
图三
Cyclic behaviours: 即CyclicBehaviour类,是jade.core.behaviours.Behaviour的子类,其action()方法会不停的执行,直到agent执行behaviour结束,done()方法返回假。
Generic behaviours: 即普通的Behaviour, 其执行次数依赖于对象的状态,如图四:
public ThreeStepBehaviour extends Behaviour{
private int step=0;
public void action(){
switch(step){
case 0:
System.out.println("step 0");
step ++;
break;
case 1:
System.out.println("step 1");
step ++;
break;
case 2:
System.out.println("step 2");
step ++;
break;
}
}
public boolean done(){
return step==3;
}
}
图四
ThreeStepBehaviour中的action()方法会执行三次,因为在三次step++后,done()方法才会返回true;
每个behaviour都继承了jade.core.behaviours.Behaviours的onStart()和onEnd()方法,onStart()方法在第一次执行action()前调用,以初始化环境。onEnd方法将在done()方法返回真后调用,以做善后处理。
在任务时候,一个agent都可以调用其removeBehaviour()方法来移除一个任务,一个任务在被移除后,会自动调用其onEnd()方法。
一个Agent任务池中的每一个behavior,都会有一个宿主agent的引用,以调用宿主agent的资源。
另外,当任务池中的一个behaviour成功执行后需要重复执行,必先调用behaviour的reset()方法,否则会导致错误。
- jade中的agent behaviour
- JADE编程--Behaviour调度问题
- Jade Agent 交互协议
- JADE:获取AMS中Agent列表
- Developing Multi-Agent Systems with JADE
- Jade 创建agent时传参数
- 用JADE创建多agent系统
- 用JADE创建多agent系统
- JADE学习笔记3:Agent行为
- JADE学习笔记4:Agent通信
- JADE学习笔记之四,外部程序调用agent
- 在JADE平台下开发多Agent系统
- 基于JADE的多Agent在Eclipse中搭建
- JADE学习笔记2 :Agent的创建和运行
- Yii中的Event和Behaviour理解
- Yii中的Event和Behaviour理解
- jade
- http中的User-Agent
- FLASH 学习
- Redhat 9.0 NFS 设置
- linux安装mysql指南
- 做一分钟经理之一(前沿)
- 做一分钟经理之二(Frist Secret:The One Minute Goal)
- jade中的agent behaviour
- 做一分钟经理之三(Second Secret:The One Minute Praise)
- 嵌入式应用软件任务划分的原则
- Many hosting options are available for WCF services
- javascript实现一个高级组合查询控件(内含初步实现原型)
- 做一分钟经理之四(Third Secret:The One Minute Criticism)
- 做一分钟经理之五(一分钟目标为什么有效)
- 转:超级数据库解决方案(开源)
- 做一分钟经理之六(一分钟表扬为什么有效)