Cellular automata¶
-
cromosim.ca.
compute_exit_times
(dt, results)[source]¶ To compute exit times for all the individuals from the results array
- Parameters
- dt: float
time step
- results: numpy array
positions at each time
- Returns
- exit_times: all the exit times
-
cromosim.ca.
exit
(domain, people, people_ij)[source]¶ To update people and people_ij arrays in removing individuals who left the domain
- Parameters
- domain: Domain
contains everything for managing the domain
- people: numpy masked arrays
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- people_ij: numpy array
(i,j) for each individual
- Returns
- people: numpy masked arrays
new positions equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- people_id: numpy masked arrays
new people index (i,j)
-
cromosim.ca.
parallel_update
(people, people_ij, weight, friction=0, randomstate=None)[source]¶ To move all individuals in parallel according to the following rule: first, desired moves are precomputed and then the conflicts (two individuals at the same position) are resolved
- Parameters
- people: numpy masked arrays
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- people_ij: numpy array
(i,j) for each individual
- weight: numpy array
weights for the probabilities in order to move in such a way like to reach the door
- friction: float
to designate the effect induced by a modified handling of conflicts, friction is the probability that a conflict remains unresolved (no one moves)
- randomstate: numpy randomstate
create a new one or reuse the given random state
- Returns
- people: numpy masked arrays
new positions equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- people_id: numpy masked arrays
new people index (i,j)
-
cromosim.ca.
plot_people_according_to_current_door_distance
(ifig, people, domain, axis=None, savefig=False, filename='fig.png')[source]¶ To draw occupied cells with colors depending on current door distances
- Parameters
- ifig: int
figure number
- people: numpy masked arrays
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- domain: Domain
contains everything for managing the domain
- axis: list
matplotlib axis
- savefig: boolean
writes the figure as a png file if true
- filename: string
png filename used to write the figure
-
cromosim.ca.
plot_people_according_to_exit_times
(ifig, dt, people, domain, results, axis=None, savefig=False, filename='fig.png')[source]¶ To draw occupied cells with colors depending on the exit times
- Parameters
- ifig: int
figure number
- dt: float
time step
- people: masked ndarray
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- domain: Domain
contains everything for managing the domain
- results: ndarray
positions at each time
- axis: list
matplotlib axis
- savefig: boolean
writes the figure as a png file if true
- filename: string
png filename used to write the figure
-
cromosim.ca.
plot_people_according_to_initial_door_distance
(ifig, people, domain, results, axis=None, savefig=False, filename='fig.png')[source]¶ To draw occupied cells with colors depending on initial (time=0) door distances
- Parameters
- ifig: int
figure number
- people: numpy masked arrays
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- domain: Domain
contains everything for managing the domain
- results: numpy array
contains the results for each iteration in time, used here to determine the initial distance to the door
- axis: list
matplotlib axis
- savefig: boolean
writes the figure as a png file if true
- filename: string
png filename used to write the figure
-
cromosim.ca.
plot_people_paths
(ifig, dt, pixel_size, people, domain, results, axis=None, savefig=False, filename='fig.png')[source]¶ To draw all the individual paths from intial time to final time
- Parameters
- ifig: int
figure number
- dt: float
time step
- pixel_size: float
size of one pixel in meters
- people: numpy masked arrays
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- domain: Domain
contains everything for managing the domain
- results: numpy.ndarray
positions at each time
- axis: list
matplotlib axis
- savefig: boolean
writes the figure as a png file if true
- filename: string
png filename used to write the figure
-
cromosim.ca.
sequential_update
(people, people_ij, weight, shuffle=None, randomstate=None)[source]¶ To move all individuals sequentially according to the following rule: the update of individual i is determined in a stochastic way by computing transition probabilities on neighboring cells (including the current position of i).
- Parameters
- people: numpy masked arrays
equal to 1 if the cell (i,j) is occupied, 0 elsewhere
- people_ij: numpy array
(i,j) for each individual
- weight: numpy array
weights for the probabilities in order to move in such a way like to reach the door
- shuffle: string
shuffle kind (‘random’ or ‘random_frozen’): if the sequential order changes or not at each time
- randomstate: numpy randomstate
create a new one or reuse the given random state
- Returns
- people: numpy masked arrays
new positions equal to 1 if the cell (i,j) is occupied, 0 otherwise
- people_id: numpy masked arrays
new people index (i,j)