2017-01-15 3 views
0

Как я могу добавить CyclicBehaviour, когда handleElapsedTimeout() (тайм-аут) и начать снова? Это моя задача для школы. Буду очень признателен, если кто-нибудь даст мне совет.Java JADE add Cyclic Behavior

Вот мой код:

package test3; 

import jade.core.Agent; 
import jade.core.behaviours.CyclicBehaviour; 
import jade.core.behaviours.OneShotBehaviour; 
import jade.core.behaviours.ParallelBehaviour; 
import jade.core.behaviours.TickerBehaviour; 
import jade.core.behaviours.WakerBehaviour; 

public class test3 extends Agent { 
    protected void setup(){ 

     ParallelBehaviour pb = new ParallelBehaviour(ParallelBehaviour.WHEN_ANY); 
     pb.addSubBehaviour(new WakerBehaviour(this,5000){ 
      @Override 
      protected void handleElapsedTimeout() { 
       System.out.println("timeout"); 
       myAgent.doDelete(); 
      } 
     }); 

     /* 
     pb.addSubBehaviour(new CyclicBehaviour(this){ 
      public void action(){ 
       System.out.println("Cycling"); 
      } 
     } 
     ); 
     */ 

     pb.addSubBehaviour(new TickerBehaviour(this,100){ 

     int random; 
     @Override 
     protected void onTick() { 
      random = (int) (Math.random() * 100); 
      System.out.println("random number = " + random); 
      if(random == 5) 
      { 
      System.out.println("I found it!"); 
      myAgent.doDelete(); 
      }     
     } 
    }); 
     addBehaviour(pb); 
    } 
} 
+0

Вы уверены, что используете все правильно? Обычно языки используют английский английский (например, 'behaviour' ->' behavior'). – TylerH

+0

В этом случае (JADE) это поведение. Много раз использовали его. – shirowww

ответ

0

Вы должны удалить myAgent.doDelete(); предложение и снять и недавно добавить на его месте новый TickerBehaviolur(...) или CyclicBehaviour(...), управляющий удобно поток управления вашего агента, в зависимости от обстоятельств.