关于多Agent系统的研究 下载本文

@Agent

protected BDIAgent translateAgent;

@Belief

protected Map wordTable;

@AgentCreated publicvoid init() {

this.wordTable = new HashMap(); // add some examples of word pairs

wordTable.put(\, \牛奶\);

wordTable.put(\, \香蕉\);

wordTable.put(\, \学校\);

wordTable.put(\, \老师\);

wordTable.put(\, \科学\); } @Goal

publicclassTranslateEngCh { @GoalParameter

protected String eword; @GoalResult

protected String cword;

public TranslateEngCh(String eword) { this.eword = eword; } }

@Plan(trigger = @Trigger(goals = TranslateEngCh.class)) public String translateEngChPlanA(String ewordString) { System.err.println(\); thrownew PlanFailureException(); //return wordTable.get(ewordString); }

@Plan(trigger = @Trigger(goals=TranslateEngCh.class)) public String translateEngChPlanB(String ewordsString){ System.out.println(\); return wordTable.get(ewordsString); } @AgentBody

publicvoid body() {

String ewordString = \;

String chString = (String) translateAgent.dispatchTopLevelGoal(

new TranslateEngCh(ewordString)).get();

System.out.println(\翻译结果:\ + ewordString + \\ + chString); } }

小的改动,就是增加了另外一个Plan,然后手动使第一个Plan处于失效状态。这样本着能够达到目的的原则,还是去寻找其他的Plan。最终能够完成goal。

5. Goal Creation Condition

package a1;

import java.util.HashMap; import java.util.Map;

import jadex.bdiv3.BDIAgent;

import jadex.bdiv3.annotation.Belief; import jadex.bdiv3.annotation.Goal;

import jadex.bdiv3.annotation.GoalCreationCondition; import jadex.bdiv3.annotation.GoalParameter; import jadex.bdiv3.annotation.GoalResult; import jadex.bdiv3.annotation.Plan; import jadex.bdiv3.annotation.Trigger;

import jadex.micro.annotation.Agent; import jadex.micro.annotation.AgentBody; import jadex.micro.annotation.AgentCreated; import jadex.micro.annotation.Description; @Agent

@Description(\) // @Plans(@Plan(body=@Body(TranslatePlan.class))) publicclassTranslateEngChBDI { @Agent

protected BDIAgent translateAgent;

@Belief

protected String eword; @Belief

protected Map wordTable;

@AgentCreated publicvoid init() {

this.wordTable = new HashMap(); // add some examples of word pairs

wordTable.put(\, \牛奶\);