HexSim's Movement event is designed to be flexible. There are three principal actions that a Movement event can perform. First, it can be used to relocate individuals. Second, it can construct explored and allocated areas. Third, it can build groups and ranges. These three actions are closely related, but it is important to understand their individual significance. The first is obvious; Movement events move individuals. However, with one exception that is addressed below, Movement events only act on floaters. If you want a group member to move, it must first abandon its group. This is accomplished using a Floater Creation event. Every individual has an explored and an allocated area, although these can be empty at times. See the User's Guide / Populations section titled Resource Allocation for additional background on HexSim's explored and allocated areas. An individual's explored area is a record of the set of hexagons it has most recently dispersed through, or searched in hopes of starting or joining a group. The goal of movement is typically for individuals to build new groups and ranges, or to join existing groups. There is an option in the Interaction event that forces one individual to join the other's group. With that exception, group joining is conducted exclusively by Movement events. The Movement event provides the only mechanism for initiating new groups.
Movement events require specification of a population and a set of traits and trait combinations. Together these parameters determine who moves and who does not. Movement is broken down into Dispersal and Exploration. Dispersal in HexSim is the process of moving across a landscape by taking a series of steps from one hexagon to another. Users have control over how many steps are taken, and the choice of hexagons to move into can be biased by hexagon quality and an auto-correlation parameter. Dispersers can be made to stop early if they pass through particularly good portions of a landscape. Also, dispersal can be used to move individuals towards a hexagon that was visited in the past and remembered. Dispersing individuals are cognizant of landscape quality, but not of resource availability. Thus more dispersing individuals may be attracted to good locations in a landscape than that area might be able to support.
Exploration in HexSim involves carefully examining a portion of a landscape in hopes of starting or joining a group. Individuals who are exploring an area will be cognizant of both hexagon quality and resource availability. There are multiple primary and secondary goals that can be used with exploration. Explorers will search around themselves in hopes of attaining their goal. If the goal cannot be attained, then the individual will remain a floater. It is, however, simple to ensure that all individuals are floaters or all are group members, and it is straightforward to move individuals back and forth between these states.
Movement spatial data can be defined differently for dispersal and exploration. Dispersal spatial data is supplied directly within the Dispersal tab. The range spatial data is always used for exploration. This is done because exploration is the process whereby ranges are formed. Range spatial data is defined in the “Population Parameters Range Data Tab”, or by an “Adjust Range Parameters” event.
Movement barrier spatial data is set in the Movement event's Global tab. Barriers defined here will affect both dispersal and exploration in the same way. Range barriers are defined separately in the Population Parameters Range Data Tab, or by an Adjust Range Parameters event. Regardless of their parameterization (i.e. mortality or deflection probabilities), Range Barriers have only a single consequence. The exploration process will not be allowed to construct a range that is entirely bisected by a Range Barrier. Unlike movement barriers, range barriers have no impact on dispersal paths or exploration patterns.
Mortality spatial data may also be supplied to Movement events. This is done in the Movement event's Global tab. When used, mortality spatial data will affect both dispersal and exploration. Mortality spatial data is used to establish a per-step probability of mortality. Each time a hexagon is entered, be it from dispersal or exploration, that hexagon's score in the Mortality spatial data will be read and used as a probability. If a uniform random number drawn from U[0, 1] is less than this value, then the individual will die. Needless to say, only carefully constructed spatial data should be used for this purpose. As a precaution, a Mortality check-box forces users to take an additional step before they specify Mortality spatial data.
Movement in HexSim involves setting strategies and goals. Strategies control the overall behavior of the Movement event itself. Available strategies include Migration (with or without Exploration), Dispersal Then Exploration, Exploration Then Dispersal, Dispersal Only, Exploration Only, and Construct Explored Areas. In addition, users may specify a Maximum Number of Explorations parameter. If a movement strategy involves both dispersal and exploration, then it must always end with an exploration. This ensures that those individuals who move get a chance to reach their goal.
Exploration goals are defined and executed in the exploration component of Movement events. HexSim's exploration goals include starting new groups, joining existing groups, and permutations such as "Start New else Join Existing". When resources are limited, the success of one individual could limit the prospects for another. For this reason, users may specify that individuals move in the order in which they were ranked in the Population Parameters Range Data Tab, or by an Adjust Range Parameters event. Higher ranked individuals will get to move first, and therefore will be more likely to obtain limited resources.
When the primary goal is to join a group, each newly explored hexagon is evaluated to see if it is part of a group's range. If so, then a determination is made regarding whether this group may be joined. A group may be joined if doing so will not exceed the maximum group size, and if its range has adequate resources to meet the specified percentage of the group's collective resource targets, including those of the immigrant. The group being joined is allowed to expand its range in order to accommodate the newcomer. However, the range expansion process may only examine the collection of hexagons that are immediately adjacent to the existing range. This collection of adjacent hexagons will be evaluated in the order mandated by the Exploration Algorithm used in the calling Movement event. If the group can be joined, then the individual's move will end. Otherwise the individual will continue exploring.
When the primary goal is to start a group, each newly explored hexagon is added to one or more cached ranges, which are then examined to see if any attain the individual's resource target. If one or more do, then a new group is formed and assigned the best cached range. Otherwise, the exploration process continues. If the individual reaches the maximum allowed exploration area without identifying a range that meets its resource target, then it is allowed to start a group with a resource-deficient range. Still, all ranges must adhere to the constraints present in the Population Parameters Range Data Tab, or by an Adjust Range Parameters event.
Two of the exploration goals are slightly more complex. Start New else Join Existing New and Join Existing New else Start New both make use of the concept referred to as an "Existing New" group. In HexSim, an Existing New group is one that was created during the current movement event. This distinction is useful when it is desirable to form groups comprised only of those individuals who actively moving. Without these goals, it would not be possible to restrict group joining to newly formed groups.
If an individual is unable to achieve its primary goal, and joining a group is the secondary goal, then the explored area is examined to see if it contains groups that can be joined. The hexagons are evaluated in reverse chronological order (the most recently explored hexagon is evaluated first). Each hexagon in the explored area is examined to see if it is part of a group's range. If so, a determination is made regarding whether the group can accept the immigrant. If the immigrant can be accepted, then the process ends. Otherwise, the next hexagon in the explored area is examined.
If an individual is unable to achieve its primary goal, and starting a group is the secondary goal, then the explored area is used to develop a list of cached ranges. Hexagons are added to the cached ranges in reverse chronological order, and as soon as a cached range is identified that meets the individual's target resource, it is taken. If no cached ranges ever attain the resource target then the process continues for each hexagon in the explored area. Then the best cached range overall will be taken, assuming it meets the minimum overall range resource criteria.
In all cases, as individuals explore, they constantly evaluate whether their primary goal can be met. As soon as this goal can be achieved, the exploration stops. If the goal cannot be met, the exploration will continue until the maximum explored area has been reached, or the individual dies due to an encounter with a barrier, or as a result of mortality spatial data. When the goal is to start a new group, then exploration only stops if 100% of the individual's resource target can be met. Otherwise exploration continues until the maximum explored area has been reached. Then the collection of cached ranges is examined to see if a sub-optimal range might be formed. In contrast, when the primary goal is to join a group, each target group is only examined once. If the group's range can supply the indicated percentage of the collective resource needs (which will be sub-optimal for Resource Threshold values less than 100), then it is joined. But unlike range initiation, the decision to settle into sub-optimal conditions is made during the initial encounter with the group.
If the primary goal cannot be met, but a secondary goal has been established, then the list of already explored hexagons is used to evaluate the possibility of achieving the secondary goal. If the secondary goal also cannot be met, or if there is no fall-back goal, then one of two things happen. If another dispersal can be taken, then the current explored area is abandoned and a new dispersal/ exploration cycle is initiated. If another dispersal/exploration cycle can not be taken, then the searcher remains a floater with an updated explored area.
When movement is set up to use multiple dispersal / exploration pairs, then decisions to start or join a group are based strictly on the current explored area. These decisions will not be based on any previous explorations that may have taken place. Further, when multiple dispersal/exploration cycles are being performed, the dispersal path will automatically avoid hexagons that were included in the most recent exploration. This should force dispersers to move away from a portion of the landscape that was just explored.
The division of ranges by range barriers is addressed during the range caching process that takes place within exploration. So bisected ranges will never be evaluated for suitability.