Example #1
0
        public static void Main(string[] args)
        {
            var creatures = new List <Creature>
            {
                CreatureBuilder.Create(CreatureType.Blue)
                .WithSpontaneousBirthProbability(1)
                .WithDeathProbabilityPerCreature(0.1)
                .WithReplicationProbabilityPerCreature(0.05)
                .WithMutationProbability(CreatureType.Green, 0.1)
                .WithMutationProbability(CreatureType.Red, 0.1)
                .Build(),
                CreatureBuilder.Create(CreatureType.Green)
                .WithSpontaneousBirthProbability(0)
                .WithDeathProbabilityPerCreature(0.1)
                .WithReplicationProbabilityPerCreature(0.05)
                .Build(),
                CreatureBuilder.Create(CreatureType.Red)
                .WithSpontaneousBirthProbability(0)
                .WithDeathProbabilityPerCreature(0.05)
                .WithReplicationProbabilityPerCreature(0.05)
                .WithMutationProbability(CreatureType.Orange, 0.05)
                .Build(),
                CreatureBuilder.Create(CreatureType.Orange)
                .WithSpontaneousBirthProbability(0)
                .WithDeathProbabilityPerCreature(0.05)
                .WithReplicationProbabilityPerCreature(0.1)
                .Build(),
            };

            var populationHistoryDistribution = new InfinitePopulationHistoryDistribution(creatures);

            foreach (var populations in populationHistoryDistribution.Sample())
            {
                Console.WriteLine(string.Join(", ", populations.Select(kvp => $"{kvp.Key}: {kvp.Value:00}")));
                Thread.Sleep(50);
            }
        }
Example #2
0
        public MainForm()
        {
            this.InitializeComponent();

            var creatures = new List <Creature>
            {
                CreatureBuilder.Create(CreatureType.Blue)
                .WithSpontaneousBirthProbability(1)
                .WithDeathProbabilityPerCreature(0.1)
                .WithReplicationProbabilityPerCreature(0.05)
                .WithMutationProbability(CreatureType.Green, 0.1)
                .WithMutationProbability(CreatureType.Red, 0.1)
                .Build(),
                CreatureBuilder.Create(CreatureType.Green)
                .WithSpontaneousBirthProbability(0)
                .WithDeathProbabilityPerCreature(0.1)
                .WithReplicationProbabilityPerCreature(0.05)
                .Build(),
                CreatureBuilder.Create(CreatureType.Red)
                .WithSpontaneousBirthProbability(0)
                .WithDeathProbabilityPerCreature(0.05)
                .WithReplicationProbabilityPerCreature(0.05)
                .WithMutationProbability(CreatureType.Orange, 0.05)
                .Build(),
                CreatureBuilder.Create(CreatureType.Orange)
                .WithSpontaneousBirthProbability(0)
                .WithDeathProbabilityPerCreature(0.05)
                .WithCrowdingCoefficient(0.001)
                .WithReplicationProbabilityPerCreature(0.1)
                .Build(),
            };

            var populationHistoryDistribution = new InfinitePopulationHistoryDistribution(creatures);

            this.enumerator = populationHistoryDistribution.Sample().GetEnumerator();
        }