The Migration symbol is used to specify the creation of new instances of a population submodel during the course of a simulation. In contrast to the Reproduction symbol, which specifies this in per instance terms (i.e. the creation of new instances per existing member of the population), the Migration symbol determines the total number of new instances that are created.
The migration symbol only has meaning in the context of a population submodel. Therefore, it makes sense to construct a population submodel first, then add the migration symbol to it. This is not strictly necessary: you can add the migration symbol first, then construct a submodel around it, then make the submodel into a population submodel, but it is better practice to construct the population submodel first.
So, assuming that you already have a population submodel in your model diagram:
The migration symbol it is used to determine the creation of new instances of a population submodel. This must be in terms of whole numbers: you cannot have a part of a new individual. And yet, the value for the migration term can be a floating-point number, e.g. 1.3. So how does Simile use this value to calculate the creation of new instances?
Three new instances are created every time step.
During the first time step, the value for migration (0.7) is not enough to create a new instance of the population submodel. Simile then remembers the value 0.7. When it comes to the next time step, the value for migration is then added on, giving 0.7+0.7=1.4. This is sufficient to create one new instance, leaving 0.4 in the bank.
The process continues, as shown here:
1 0.0 0.7 0.7 0 0.7
2 0.7 0.7 1.4 1 0.4
3 0.4 0.7 1.1 1 0.1
4 0.1 0.7 0.8 0 0.8
5 0.8 0.7 1.5 1 0.5
6 0.5 0.7 1.2 1 0.2
7 0.2 0.7 0.9 0 0.9
8 0.9 0.7 1.6 1 0.6
9 0.6 0.7 1.3 1 0.3
10 0.3 0.7 1.0 1 0.0
The value for migration is a migration rate, expressed in whatever your global unit of time is (typically 'year'). Therefore a value of migration of 0.7 individuals per year gives a value of 0.07 individuals in one time step (0.1 year). Exactly the same procedure as above is applied, with the migration value accumulating until a whole number of individuals can be created.
The same procedure as above is applied, with 3 new instances being created in some time steps, and 4 in others.
You might well feel uncomfortable with the deterministic nature of the process. In this case, it is up to you to engineer a suitable stochastic mechanism that generates new individuals at the same average rate. In the future, Simile will include functions for sampling from appropriate frequency distributions for handling a variety of options (please contact the authors of Simile if you want to discuss this). In the meantime, and if your rate of migration is less than 1, then you can treat the value as a probability that migration will occur, and use the following expression for migration:
if rand_var(0,1)<0.7 then 1 else 0
where 0.7 is the migration rate.