package i5.las2peer.services.ocd.algorithms.utils; import org.la4j.vector.functor.VectorProcedure; /** * A vector procedure calculating leadership values used by the Clizz Algorithm. * @author Sebastian * */ public class ClizzLeadershipVectorProcedure implements VectorProcedure { private double leadershipIndex = 0; private double influenceFactor = Double.POSITIVE_INFINITY; /** * Creates an instance of the vector procedure. * @param influenceFactor The influence range used by the algorithm. */ public ClizzLeadershipVectorProcedure(double influenceFactor) { this.influenceFactor = influenceFactor; } /** * Returns the leadership value of a node. * Note that the vector procedure must have been run previously on the node's distance vector. * @return The leadership value. */ public double getLeadershipIndex() { return leadershipIndex; } @Override public void apply(int i, double value) { if(value > 0) { leadershipIndex += Math.pow(Math.E, - value / influenceFactor); } } }