Skip to content

extend drawByStrength() to provide a possibility of failure to find a match #634

Description

@bhaller

I wrote this just now in an email to someone, regarding their use of drawByStrength(). They have a bit of code saying "if drawByStrength() didn't find a mate, then self instead", but their model seemed to always find a mate, and thus never self. I wrote:

If they are always finding mates, that would suggest that the maximum distance for i2 is large enough that another individual is always within range. The drawByStrength() method will find all individuals within the maximum distance and then draw one proportional to interaction strength; so if there is any individual within the max distance, you WILL get an individual drawn. An interesting tweak to the model design might be, after drawByStrength() returns mate, get the interaction strength between individual and mate, and flip a coin with a probability based upon that interaction strength, and if the coin flip succeeds you use mate, but if it fails you self instead. That would basically model: just because there is a potential mate within the max distance, that doesn't mean that a mate WILL be chosen; beyond a certain distance, there begins to be some probability of selfing even though a possible mate does exist. Maybe that would provide more realistic dynamics.

This seems worth thinking about as an extension to drawByStrength() itself, I think, but I'm not sure what the right approach exactly ought to be. A new optional parameter that controls the tendency to find a mate vs. to fail; and the smaller the total of all interactions strengths is (i.e., the smaller the population density), the higher the probability of failing. @petrelharp what do you think of this? Do you have a vision for what the mathematically rigorous approach to this ought to be? It certainly seems like a useful extension, to the point that I'm surprised it hasn't come up before!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions