Class StrongAmplifierGeometry

Object
AbstractGeometry
StrongAmplifierGeometry

public class StrongAmplifierGeometry extends AbstractGeometry
Strong undirected amplifier graph based on Giakkoupis (2016).
See Also:
  • Constructor Details

    • StrongAmplifierGeometry

      public StrongAmplifierGeometry(EvoLudo engine)
      Create a strong amplifier geometry tied to the given engine.
      Parameters:
      engine - EvoLudo pacemaker
  • Method Details

    • init

      public void init()
      Generates a strong undirected amplifier of selection as described by Giakkoupis (2016). Population size satisfies \(N=n^3+(1+a)n^2\) with integer \(n\) and suitable \(a\geq 5\) and comprises three node types \(U=n^3\), \(V=n^2\) and \(W=N-U-V\). Nodes in \(U\) are leaves attached to nodes in \(V\) while nodes in \(V\) connect to \(n^2\) nodes in the regular core \(W\).
      Specified by:
      init in class AbstractGeometry
      See Also:
    • checkSettings

      protected boolean checkSettings()
      Description copied from class: AbstractGeometry
      Hook for subclasses to implement geometry specific checks.
      Overrides:
      checkSettings in class AbstractGeometry
      Returns:
      true if adjustments require a reset
    • initRRGCore

      private void initRRGCore(RNGDistribution rng, int start, int end, int degree)
      Initialise the random-regular core subgraph.
      Parameters:
      rng - random number generator
      start - first node index of the core
      end - (exclusive) end index of the core
      degree - desired degree per node
    • rewireNeighbourEdge

      private boolean rewireNeighbourEdge(RNGDistribution rng, int nodeA, int nodeB, int[] done, int nDone)
      Attempt to rewire edges so that nodeA and nodeB can connect without duplicating links.
      Parameters:
      rng - random number generator
      nodeA - first node needing neighbours
      nodeB - second node needing neighbours
      done - array of already satisfied nodes
      nDone - number of valid entries in done
      Returns:
      true if rewiring succeeded