Package net.sf.colossus.ai.helper
Class OnTheFlyLegionMove
- java.lang.Object
-
- net.sf.colossus.ai.helper.OnTheFlyLegionMove
-
- All Implemented Interfaces:
java.lang.Iterable<LegionMove>
,java.util.Collection<LegionMove>
public class OnTheFlyLegionMove extends java.lang.Object implements java.util.Collection<LegionMove>
On-the-fly generation of the Collection of all possible LegionMove. This doesn't fully respect the Collection interface: The random generation may fail before all elements have been returned, so to iterators may return different subsets of the entire collection. Also, this may cause size() to return a value higher than what is really accessible.- Author:
- Romain Dolbeau
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
OnTheFlyLegionMove.OnTheFlyLegionMoveIterator
-
Field Summary
Fields Modifier and Type Field Description private java.util.List<java.util.List<CritterMove>>
allCritterMoves
private static int
GOOD_PARENT_TOP_PERCENT
Percentage from the top (of the already avaluated space) to pick a 'good' parent.private static java.util.logging.Logger
LOGGER
private static long
MIN_MEMORY_REFILL
Amount of memory needed before a refill.private static int
MIN_PARENT_CHOICE
Minimum number of possible 'good' parents.private int
mysize
private static int
RANDOM_GENE_PERCENT
Percentage that a gene will be random instead of inherited.private static int
RANDOM_MAX_TRY
Maximum number of try before giving up generating a new element.private static int
RANDOM_PARENT_PERCENT
Percentage of a randomly chosen parent.private static int
REFILL_SIZE
number of elements to put in each new batch of element.private static int
SPONTANEOUS_GENERATION_PERCENT
Percentage of fully random new elements This helps diversifying the gene pool.
-
Constructor Summary
Constructors Constructor Description OnTheFlyLegionMove(java.util.List<java.util.List<CritterMove>> acm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
add(LegionMove o)
boolean
addAll(java.util.Collection<? extends LegionMove> c)
void
clear()
boolean
contains(java.lang.Object o)
boolean
containsAll(java.util.Collection<?> c)
boolean
equals(java.lang.Object o)
(package private) int
getDim()
int
hashCode()
boolean
isEmpty()
java.util.Iterator<LegionMove>
iterator()
boolean
remove(java.lang.Object o)
boolean
removeAll(java.util.Collection<?> c)
boolean
retainAll(java.util.Collection<?> c)
int
size()
java.lang.Object[]
toArray()
<T> T[]
toArray(T[] a)
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
-
-
-
Field Detail
-
RANDOM_MAX_TRY
private static final int RANDOM_MAX_TRY
Maximum number of try before giving up generating a new element. Ideally this is only a safety belt.- See Also:
- Constant Field Values
-
REFILL_SIZE
private static final int REFILL_SIZE
number of elements to put in each new batch of element. From my experiments, should be about 1-3 second worth of evaluation.- See Also:
- Constant Field Values
-
RANDOM_GENE_PERCENT
private static final int RANDOM_GENE_PERCENT
Percentage that a gene will be random instead of inherited. Low will densify exploration around the current maximums. High will widen the explorated space around the current maximums.- See Also:
- Constant Field Values
-
RANDOM_PARENT_PERCENT
private static final int RANDOM_PARENT_PERCENT
Percentage of a randomly chosen parent. Another parameter to avoid inbreeding and missing not-yet-detected local maximums.- See Also:
- Constant Field Values
-
GOOD_PARENT_TOP_PERCENT
private static final int GOOD_PARENT_TOP_PERCENT
Percentage from the top (of the already avaluated space) to pick a 'good' parent. Low will pick parent only from very near the local maximums. High will give not-so-good parents a chance.to breed.- See Also:
- Constant Field Values
-
MIN_PARENT_CHOICE
private static final int MIN_PARENT_CHOICE
Minimum number of possible 'good' parents. For small exploration space, this avoid excessive inbreeding.- See Also:
- Constant Field Values
-
SPONTANEOUS_GENERATION_PERCENT
private static final int SPONTANEOUS_GENERATION_PERCENT
Percentage of fully random new elements This helps diversifying the gene pool.- See Also:
- Constant Field Values
-
MIN_MEMORY_REFILL
private static final long MIN_MEMORY_REFILL
Amount of memory needed before a refill. This avoid crashing low-mem JVM. The constant part is of the pulled-out-of-a-hat variety.- See Also:
- Constant Field Values
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
allCritterMoves
private final java.util.List<java.util.List<CritterMove>> allCritterMoves
-
mysize
private final int mysize
-
-
Constructor Detail
-
OnTheFlyLegionMove
public OnTheFlyLegionMove(java.util.List<java.util.List<CritterMove>> acm)
-
-
Method Detail
-
getDim
int getDim()
-
add
public boolean add(LegionMove o)
- Specified by:
add
in interfacejava.util.Collection<LegionMove>
-
addAll
public boolean addAll(java.util.Collection<? extends LegionMove> c)
- Specified by:
addAll
in interfacejava.util.Collection<LegionMove>
-
clear
public void clear()
- Specified by:
clear
in interfacejava.util.Collection<LegionMove>
-
contains
public boolean contains(java.lang.Object o)
- Specified by:
contains
in interfacejava.util.Collection<LegionMove>
-
containsAll
public boolean containsAll(java.util.Collection<?> c)
- Specified by:
containsAll
in interfacejava.util.Collection<LegionMove>
-
equals
public boolean equals(java.lang.Object o)
- Specified by:
equals
in interfacejava.util.Collection<LegionMove>
- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
- Specified by:
hashCode
in interfacejava.util.Collection<LegionMove>
- Overrides:
hashCode
in classjava.lang.Object
-
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interfacejava.util.Collection<LegionMove>
-
iterator
public java.util.Iterator<LegionMove> iterator()
- Specified by:
iterator
in interfacejava.util.Collection<LegionMove>
- Specified by:
iterator
in interfacejava.lang.Iterable<LegionMove>
-
remove
public boolean remove(java.lang.Object o)
- Specified by:
remove
in interfacejava.util.Collection<LegionMove>
-
removeAll
public boolean removeAll(java.util.Collection<?> c)
- Specified by:
removeAll
in interfacejava.util.Collection<LegionMove>
-
retainAll
public boolean retainAll(java.util.Collection<?> c)
- Specified by:
retainAll
in interfacejava.util.Collection<LegionMove>
-
size
public int size()
- Specified by:
size
in interfacejava.util.Collection<LegionMove>
-
toArray
public java.lang.Object[] toArray()
- Specified by:
toArray
in interfacejava.util.Collection<LegionMove>
-
toArray
public <T> T[] toArray(T[] a)
- Specified by:
toArray
in interfacejava.util.Collection<LegionMove>
-
-