File RandomReplicationPartial.java¶
File List > behaviour > replication > RandomReplicationPartial.java
Go to the documentation of this file
package skydata.behaviour.replication;
import java.util.Random;
import jade.core.behaviours.TickerBehaviour;
import skydata.internal.agents.SKAgent;
import skydata.internal.agents.SKD;
import skydata.internal.behaviours.SKAgentBehaviour;
import skydata.internal.message.SKAID;
public class RandomReplicationPartial extends SKAgentBehaviour {
Random rand = new Random();
public RandomReplicationPartial(SKAgent agent) {
super(agent);
}
@Override
public void action() {
SKD agent = (SKD) this.agent;
SKAID[] harboursLists = (SKAID[]) agent.connectedHarbours().toArray(new SKAID[0]);
int rg = (Integer)(agent.args.get("rg"));
TickerBehaviour tickerBehaviour = new TickerBehaviour(agent, 5000) {
@Override
public void onTick() {
if (rand.nextDouble() < 0.2 && agent.getFamilySize() < 1.5*rg) {
SKAID harbour = harboursLists[rand.nextInt(harboursLists.length)];
if (harbour == null)
return;// Available harbour not found
agent.print("Je créer un clone sur " + harbour.getName());
agent.clone(harbour.toAID(),
agent.getLocalName().split("_")[0] + "." + (agent.lastReplicateIndex + 1));
}
}
};
agent.addBehaviour(tickerBehaviour);
}
}