Class OnTheFlyLegionMove.OnTheFlyLegionMoveIterator

  • All Implemented Interfaces:
    java.util.Iterator<LegionMove>
    Enclosing class:
    OnTheFlyLegionMove

    class OnTheFlyLegionMove.OnTheFlyLegionMoveIterator
    extends java.lang.Object
    implements java.util.Iterator<LegionMove>
    • Field Detail

      • alreadydone

        private final java.util.SortedMap<int[],​LegionMove> alreadydone
        map from indexes to LegionMove, what we have already sent to the AI
      • byValues

        private final java.util.List<int[]> byValues
        already done & evaluated, sorted by legion value
      • lastone

        private int[] lastone
        the previously returned object
      • beingdone

        private final java.util.SortedMap<int[],​LegionMove> beingdone
        map from indexes to LegionMove, the next batch to send to the AI
      • rand

        private final java.util.Random rand
      • dim

        private final int dim
      • abort

        private boolean abort
      • failoverOnly

        private boolean failoverOnly
      • incomps

        private final java.util.Set<java.lang.Integer>[][][] incomps
        The 'incompatibility map'. first index is which position in the source int[] is checked. second index is which position in the destination source int[] is checked. third index is value in the source int[]. The Set is all the incompatible values in the dest int[].
      • lastDense

        private int[] lastDense
        deterministically make up a on-used combination
    • Constructor Detail

    • Method Detail

      • intArrayToString

        java.lang.String intArrayToString​(int[] t)
      • buildIncompMap

        private void buildIncompMap()
      • hasNext

        public boolean hasNext()
        Specified by:
        hasNext in interface java.util.Iterator<LegionMove>
      • higherRankIncomp

        private int higherRankIncomp​(int[] indexes)
      • isBad

        private boolean isBad​(int[] indexes)
      • recurseGenerate

        private int recurseGenerate​(int index,
                                    int[] counts,
                                    int[] actual)
        full recursive generation
      • firstfill

        private int firstfill()
        fill beingdone with the first, supposedly most interesting combinatione.
        Returns:
        The number of combinations generated.
      • failoverGeneration

        private int[] failoverGeneration()
      • spontaneousGeneration

        private int[] spontaneousGeneration()
        create a fully random combination
      • geneticGeneration

        private int[] geneticGeneration()
        create a genetic combination
      • getParent

        private int[] getParent​(int percentRandom,
                                int percentTop)
        pick a parent
      • breed

        private int[] breed​(int[] mom,
                            int[] dad,
                            int percentRandom)
        breed a combination from parents
      • refill

        private int refill​(int n)
        fill beingdone with up to n genetically generated, not-yet-done combinations.
        Parameters:
        n - The number of requeste combinations.
        Returns:
        The number of combinations generated.
      • remove

        public void remove()
        Specified by:
        remove in interface java.util.Iterator<LegionMove>
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        Overrides:
        finalize in class java.lang.Object
        Throws:
        java.lang.Throwable