Skip to content

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);
    }

}