org.ascape.model.space
Class Array2DSmallWorld

java.lang.Object
  extended by org.ascape.model.space.CollectionSpace
      extended by org.ascape.model.space.Discrete
          extended by org.ascape.model.space.Array
              extended by org.ascape.model.space.Array2DBase
                  extended by org.ascape.model.space.Array2D
                      extended by org.ascape.model.space.Array2DSmallWorld
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, java.lang.Iterable, java.util.Collection, Relative, Space, RandomFunctions

public class Array2DSmallWorld
extends Array2D

A two-dimensional space providing effecient implementations for von Neumann neighbors.

Since:
1.9.2
Version:
2.0
Author:
Miles Parker
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.ascape.model.space.CollectionSpace
CollectionSpace.ClosestDataPoint, CollectionSpace.ConditionalIterator, CollectionSpace.CSIterator, CollectionSpace.CSMutableIterator, CollectionSpace.ListMutableRandomIterator, CollectionSpace.ListRandomIterator, CollectionSpace.MutableSubIterator, CollectionSpace.SubIterator
 
Field Summary
protected  int radius
          The radius.
protected  double randomEdgeRatio
          The random edge ratio.
 
Fields inherited from class org.ascape.model.space.Array2D
MAX_RANK
 
Fields inherited from class org.ascape.model.space.Array2DBase
cells, currentPositionInRank, currentRank, nearnessLineOfSight, order, rankLimit, relativeCoordinates, relativeCoordinatesRankDistance, relativeCoordinatesRankLengths, relativeCoordinatesTemplate, sumOfCoordinatesWithinRank
 
Fields inherited from class org.ascape.model.space.Array
CACHE_RESULTS
 
Fields inherited from class org.ascape.model.space.Discrete
performanceWarning
 
Fields inherited from class org.ascape.model.space.CollectionSpace
collection, ESTIMATED_MAXIMUM_SIZE, extent, geometry
 
Constructor Summary
Array2DSmallWorld()
          Constructs a 2-dimensional small world space.
Array2DSmallWorld(CoordinateDiscrete extent)
          Constructs a 2-dimensional small world space of provided extent.
 
Method Summary
protected  java.util.Iterator bfsWithinIterator(Location origin, Conditional condition, boolean includeSelf, double distance)
          This is the findWithin code from Graph.
 double calculateDistance(Coordinate origin, Coordinate target)
          Returns the shortest distance between one Location and another.
 java.util.List calculateNeighbors(Node cell)
          Calculate neighbors.
 Location findNearest(Coordinate origin, Conditional condition, boolean includeOrigin, double distance)
          Finds the nearest agent that meets some condition.
 int findNearestMatchRank(Coordinate origin, Conditional condition, boolean includeOrigin, double maximumDistance)
          Returns the nearest rank that includes a cell which matches the supplied condition, -1 if no matches.
 Location findRandomMatchInRank(Coordinate origin, Conditional condition, int rank)
          Returns a random element in the supplied rank that matches the supplied condition, null if no matches.
 java.util.List findWithinImpl(Coordinate origin, boolean includeSelf, double distance)
          Returns cells that are near the provided coordinate.
 int getRadius()
          Returns the radius.
 double getRandomEdgeRatio()
          Returns the radius.
 java.util.Set getSmallWorldCells()
          Gets the small world cells.
 void initialize()
          Initializes the space.
 void setRadius(int radius)
          Set the diffusion temp value.
 void setRandomEdgeRatio(double randomEdgeRatio)
          Set the diffusion temp value.
 java.util.Iterator withinIterator(Coordinate origin, Conditional condition, boolean includeSelf, double distance)
          Returns an iteration across all agents the specified distance from the origin.
 
Methods inherited from class org.ascape.model.space.Array2D
calculateDistanceMoore, countWithin, findFirstMatchInRank, getNumOfCoordinatesWithinRank, getXSpan, getYSpan, hasWithin
 
Methods inherited from class org.ascape.model.space.Array2DBase
add, addAll, clear, clone, construct, contains, containsAll, findCellAway, findCells, findCells, findCellToward, findRandom, findRandom, findRandom, findRandomCoordinate, findRandomRelative, findRandomUnoccupied, findRelative, findWithinEuclidian, findWithinMoore, findWithinVonNeumann, findWithinVonNeumannLineOfSight, findWithinVonNeumannMovement, get, get, getCellsNearVonNeumannLineOfSight, getCellsNearVonNeumannMovement, getSize, getXSize, getYSize, isEmpty, isMutable, isNearnessLineOfSight, isValid, isValid, iterator, populate, randomizeCallingOrder, randomizeRank, remove, removeAll, retainAll, safeIterator, safeIterator, safeRandomIterator, set, set, setExtent, setExtent, setGeometry, setNearnessLineOfSight, size, toArray, toArray, toList
 
Methods inherited from class org.ascape.model.space.Array
findWithin, replace, swap
 
Methods inherited from class org.ascape.model.space.Discrete
calculateDistance, findAvailable, findAvailable, findCellAwayBFS, findCellTowardBFS, findNearestAvailable, findNearestBFS, findNeighbors, findOccupants, findOccupants, findRandomAvailable, findRandomAvailable, findRandomAvailable, findRandomAvailableNeighbor, findRandomNeighbor, findRandomNeighbor, findRandomUnoccupiedCell, findRandomUnoccupiedCell, findWithinDefault, getCells, getCellsNearDefault, getDistance, getMaximumRank
 
Methods inherited from class org.ascape.model.space.CollectionSpace
add, calculateDistance, conditionalIterator, conditionalIterator, createOrder, createSpatialConditional, deleteSweep, filter, find, findMaximum, findMaximum, findMaximumWithin, findMinimum, findMinimum, findMinimumWithin, findNearest, findRandom, findRandom, findRandom, findRandomWithin, getContext, getExtent, getGeometry, getRandom, isDeleteSweepNeeded, isPeriodic, iteratorCount, iteratorToList, moveAway, moveToward, newLocation, newLocation, randomInRange, randomInRange, randomIs, randomizeOrder, randomToLimit, safeIterators, setContext, setExtent, setPeriodic, setRandom, setSize
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Collection
equals, hashCode
 

Field Detail

radius

protected int radius
The radius.


randomEdgeRatio

protected double randomEdgeRatio
The random edge ratio.

Constructor Detail

Array2DSmallWorld

public Array2DSmallWorld()
Constructs a 2-dimensional small world space.


Array2DSmallWorld

public Array2DSmallWorld(CoordinateDiscrete extent)
Constructs a 2-dimensional small world space of provided extent.

Parameters:
extent - a coordinate describing the size of this space
Method Detail

initialize

public void initialize()
Initializes the space. For small worlds, we want to calculate the neighborhood each time.

Specified by:
initialize in interface Space
Overrides:
initialize in class Array2D

calculateNeighbors

public java.util.List calculateNeighbors(Node cell)
Description copied from class: Discrete
Calculate neighbors.

Overrides:
calculateNeighbors in class Discrete
Parameters:
cell - the cell
Returns:
the list

findNearest

public Location findNearest(Coordinate origin,
                            Conditional condition,
                            boolean includeOrigin,
                            double distance)
Finds the nearest agent that meets some condition. Spaces without coordinate meaning should override this method.

Specified by:
findNearest in interface Space
Overrides:
findNearest in class Array2D
Parameters:
origin - the coordinate to find agents near
condition - the condition that found agent must meet
includeOrigin - if the origin should be included
distance - the maximum distance around the origin to look
Returns:
the location

findNearestMatchRank

public int findNearestMatchRank(Coordinate origin,
                                Conditional condition,
                                boolean includeOrigin,
                                double maximumDistance)
                         throws java.lang.UnsupportedOperationException
Description copied from class: Array2D
Returns the nearest rank that includes a cell which matches the supplied condition, -1 if no matches.

Overrides:
findNearestMatchRank in class Array2D
Parameters:
origin - the agent to find cells near
condition - the condition that found cell must meet
includeOrigin - should supplied agent (rank 0) be included in the search
maximumDistance - the maximum distance to search within
Returns:
the int
Throws:
java.lang.UnsupportedOperationException

findRandomMatchInRank

public Location findRandomMatchInRank(Coordinate origin,
                                      Conditional condition,
                                      int rank)
                               throws java.lang.UnsupportedOperationException
Description copied from class: Array2D
Returns a random element in the supplied rank that matches the supplied condition, null if no matches.

Overrides:
findRandomMatchInRank in class Array2D
Parameters:
origin - the agent to find cells near
condition - the condition that found cell must meet
rank - the rank to return match in
Returns:
the location
Throws:
java.lang.UnsupportedOperationException

findWithinImpl

public java.util.List findWithinImpl(Coordinate origin,
                                     boolean includeSelf,
                                     double distance)
Description copied from class: Array
Returns cells that are near the provided coordinate.

Specified by:
findWithinImpl in class Array
Parameters:
origin - the agent to find cells near
includeSelf - should supplied agent be included in the return set
distance - the distance to form centralCells to return cells
Returns:
the list

bfsWithinIterator

protected java.util.Iterator bfsWithinIterator(Location origin,
                                               Conditional condition,
                                               boolean includeSelf,
                                               double distance)
Description copied from class: Discrete
This is the findWithin code from Graph. This can be used by this class's findWithin, when distance is greater than 1. dist = 1 is the same as findNeighbors.

Overrides:
bfsWithinIterator in class Discrete
Parameters:
origin - the origin
condition - the condition
includeSelf - the include self
distance - the distance
Returns:
the iterator

withinIterator

public java.util.Iterator withinIterator(Coordinate origin,
                                         Conditional condition,
                                         boolean includeSelf,
                                         double distance)
Description copied from class: CollectionSpace
Returns an iteration across all agents the specified distance from the origin.

Specified by:
withinIterator in interface Space
Overrides:
withinIterator in class CollectionSpace
Parameters:
origin - the starting cell
condition - the condition
includeSelf - should the origin be included
distance - the distance agents must be within to be included
Returns:
the iterator

calculateDistance

public double calculateDistance(Coordinate origin,
                                Coordinate target)
Description copied from class: CollectionSpace
Returns the shortest distance between one Location and another. Warning: this default method only returns a coordinate specific distance. It uses no information about the context context; for example wether it is a periodic (wrapping) space or not. Therefore, if you implement your own versions of CollectionSpace, ensure that you have properly implemented a version of this method. (All Ascape spaces properly overide this method.)

Specified by:
calculateDistance in interface Space
Overrides:
calculateDistance in class Discrete
Parameters:
origin - one Location
target - another Location
Returns:
the double

getRadius

public int getRadius()
Returns the radius.


setRadius

public void setRadius(int radius)
Set the diffusion temp value.

Parameters:
radius - the radius

getRandomEdgeRatio

public double getRandomEdgeRatio()
Returns the radius.

Returns:
the random edge ratio

setRandomEdgeRatio

public void setRandomEdgeRatio(double randomEdgeRatio)
Set the diffusion temp value.

Parameters:
randomEdgeRatio - the random edge ratio

getSmallWorldCells

public java.util.Set getSmallWorldCells()
Gets the small world cells.

Returns:
the small world cells


Copyright © 1998-2008 The Brookings Institution, NuTech Solutions, Metascape, LLC All Rights Reserved.