0

我创建了一个接受值的代理,然后将消息传递给下一个代理。我在输入值时遇到问题,因此我的消息也没有被传输。这是我的Agent课,下面。有谁知道我能做些什么来修复它?

public class Prgm extends Agent {

        int val;

        protected void setup() {
                Objects[] args = getArguments();
                if (args!=null && args.length > 0)
                        val = Integer.parseInt((String) args[0]);
                addBehaviour(new OneShotBehaviour(this) {
                        public void action() {
                                if (val == 1) {
                                        ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
                                        msg.setLanguage("english");
                                        msg.SetOntology("DG Status");
                                        msg.SetContent("DG connected");
                                        msg.addReceiver(new AID("r1", AID.ISLOCALNAME));
                                        myAgent.send(msg);
                                } else {
                                        ACLMessage msg = new ACLMessage(ACLMessage.INFORM);
                                        msg.addReceiver(new AID("r1", AID.ISLOCALNAME));
                                        msg.setLanguage("english");
                                        msg.setOntology("DG Status");
                                        msg.setContent("DG not connected");
                                        send(msg);
                                }
                        }
                });

        }
4

1 回答 1

0

如果您不需要立即使用本体,请不要。对于字符串,您可以使用:

ACLmessage.setContent("string message") and String stringmsg=ACLmessage.getContent()

如果您需要更多尝试 Java 序列化,它比使用本体要简单得多。

我也不认为这条线是可以接受的。new AID("r1", AID.ISLOCALNAME). 通常会联系 df(目录促进者)代理查询可用代理或服务。尝试这样的事情

DFAgentDescription template = new DFAgentDescription();
    ServiceDescription sd= new ServiceDescription();
    sd.setType(Service);
    sd.setName(agentName);

    template.addServices(sd);

    try {
        DFAgentDescription[] result = DFService.search(this, template);
        listAgents.clear();
        for(int i = 0; i<result.length;++i)
        {
            listAgents.addElement(result[i].getName());

        }
        //System.out.println(listAgents);

    } catch (FIPAException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        log(this.getAID() +"!!error in requesting service ="+Service);
    }

    return (AID) listAgents.get(0);
于 2014-12-21T15:30:53.553 回答