コード例 #1
0
        private void ShowBacteria(Bacterium b1, Bacterium b2)
        {
            var merged = BacteriaMerger.MergeBacteria(b1, b2);

            BacteriaChart.Series.Add(new ScatterSeries
            {
                Title  = merged.ToString(),
                Values = new ChartValues <ObservablePoint>(merged.Points.Select(e => new ObservablePoint(e.Item1, e.Item2)))
            });

            var biggestX         = merged.Points.Select(e => e.Item1).Max() * 1.25;
            var regressionResult = new Regression(new LinearRegression()).PerformRegression(merged);
            var startY           = regressionResult.Regression.Transform(0);
            var endY             = regressionResult.Regression.Transform(biggestX);
            var formula          = regressionResult.Regression.ToString();

            BacteriaChart.Series.Add(new LineSeries
            {
                Title  = $"Regression line ({merged.ToString()})",
                Values = new ChartValues <ObservablePoint>
                {
                    new ObservablePoint(0, startY),
                    new ObservablePoint(biggestX, endY)
                },
                Fill = Brushes.Transparent
            });
        }
コード例 #2
0
 public Bacterium[] Division(int age, BacteriumType type)
 {
     Bacterium[] bacteria = new Bacterium[type.ChieldCount + type.ChieldCount];
     for (int i = 0; i < bacteria.Length; i++)
     {
         bacteria[i] = new Bacterium(type);
     }
     return(bacteria);
 }
コード例 #3
0
    public static void SendVirusGroup(VirusGroupData virusGroupData, int newVirusCount)
    {
        Bacterium startBacterium = _game.Bacteriums.First(x => x.Id == virusGroupData.StartBacteriumId);
        Bacterium endBacterium   = _game.Bacteriums.First(x => x.Id == virusGroupData.EndBacteriumId);
        Road      road           = RoadManager.GetRoad(startBacterium.BacteriumModel, endBacterium.BacteriumModel, virusGroupData.RoadId);

        _virusGroups.Add(new VirusGroup(road, startBacterium.BacteriumModel.VirusCount - newVirusCount, _virusSpeed));
        startBacterium.BacteriumModel.VirusCount = newVirusCount;
    }
コード例 #4
0
    public Dictionary <ICell, int> CountEachTypeCell()
    {
        var dictionary = new Dictionary <ICell, int>();

        var apple         = new Apple();
        var chip          = new Chip();
        var bacterium     = new Bacterium();
        var slipper       = new Slipper();
        var cockroachTrap = new CockroachTrap();
        var poison        = new Poison();

        dictionary[apple]         = 0;
        dictionary[chip]          = 0;
        dictionary[bacterium]     = 0;
        dictionary[slipper]       = 0;
        dictionary[cockroachTrap] = 0;
        dictionary[poison]        = 0;

        for (int i = 0; i < size; i++)
        {
            for (int j = 0; j < size; j++)
            {
                if (cells[i][j] is Apple)
                {
                    dictionary[apple]++;
                }

                if (cells[i][j] is Chip)
                {
                    dictionary[chip]++;
                }

                if (cells[i][j] is Bacterium)
                {
                    dictionary[bacterium]++;
                }

                if (cells[i][j] is Slipper)
                {
                    dictionary[slipper]++;
                }

                if (cells[i][j] is CockroachTrap)
                {
                    dictionary[cockroachTrap]++;
                }

                if (cells[i][j] is Poison)
                {
                    dictionary[poison]++;
                }
            }
        }

        return(dictionary);
    }
コード例 #5
0
        public Plot()
        {
            InitializeComponent();

            ResetSeries();

            AvailableBacteria = BacteriaImporter.Import(25);
            ShowBacteria(AvailableBacteria[3], AvailableBacteria[12]);
            ShowBacteria(AvailableBacteria[12], AvailableBacteria[3]);

            Bacterium1 = AvailableBacteria[3];
            Bacterium2 = AvailableBacteria[12];

            DataContext = this;
        }
コード例 #6
0
ファイル: Supercooled.cs プロジェクト: FTC5/ColonyLife
 public Bacterium[] Division(int age, BacteriumType type)
 {
     if ((type.LifeCycle * 2) % age == 0)
     {
         if (age / 2 <= type.DivisionsCount)
         {
             Bacterium[] bacteria = new Bacterium[type.ChieldCount];
             for (int i = 0; i < bacteria.Length; i++)
             {
                 bacteria[i] = new Bacterium(type);
             }
             return(bacteria);
         }
     }
     return(null);
 }
コード例 #7
0
ファイル: BacteriaMerger.cs プロジェクト: KristofferK/mi-aau
        public static MergedBacteria MergeBacteria(Bacterium b1, Bacterium b2)
        {
            var merged = new MergedBacteria()
            {
                Bacterium1 = b1,
                Bacterium2 = b2
            };

            merged.Points = new List <Tuple <double, double> >();
            for (var i = 0; i < b1.Measurements.Count; i++)
            {
                merged.Points.Add(new Tuple <double, double>(b1.Measurements[i], b2.Measurements[i]));
            }

            merged.CosineDistance      = 1 - Distance.Cosine(b1.Measurements.ToArray(), b2.Measurements.ToArray());
            merged.SpearmanCorrelation = Correlation.Spearman(b1.Measurements, b2.Measurements);
            merged.PearsonCorrelation  = Correlation.Pearson(b1.Measurements, b2.Measurements);

            return(merged);
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: KristofferK/mi-aau
        static void PrintResult(string title, Bacterium bacterium, RegressionResult result)
        {
            double matchSum = 0;

            Console.WriteLine("\n");
            Console.WriteLine($"{title} on {bacterium.ASV}. Used {result.FormulaUsed}");
            for (var i = 0; i < result.TestY.Length; i++)
            {
                var match = GetMatch(result.TestX[i], result.PredictionOnTestSet[i]);
                Console.WriteLine(String.Format("Timestamp {0} is {1:0.00} and predicted {2:0.00}. Prediction is {3:0.0000}% of actual value",
                                                result.TestY[i],
                                                result.TestX[i],
                                                result.PredictionOnTestSet[i],
                                                match
                                                ));
                matchSum += match;
            }
            var matchAverage = matchSum / result.TestY.Length;

            Console.WriteLine($"Error on training set: {result.Error}");
            Console.WriteLine($"Average match on test set (closer to 100 is better): {Math.Round(matchAverage, 4)}");
        }
コード例 #9
0
    private void Update()
    {
        if (SelectedBacteriums.Count == 0)
        {
            return;
        }

        if (Input.GetKeyUp(KeyCode.Mouse0))
        {
            Collider2D bacteriumColider = Physics2D.OverlapPoint(MousePosition);
            if (bacteriumColider != null)
            {
                Bacterium bacterium = bacteriumColider.GetComponent <Bacterium>();
                GameManager.RequestSendViruses(SelectedBacteriums.Select(x => x.Id), bacterium.Id);
            }
            foreach (Bacterium bacterium in SelectedBacteriums)
            {
                bacterium.CleanLine();
            }
            SelectedBacteriums.Clear();
        }
    }
コード例 #10
0
    public static void SendVirusGroupArrived(int bacteriumId, int newVirusCount)
    {
        Bacterium bacterium = _game.Bacteriums.First(x => x.Id == bacteriumId);

        bacterium.BacteriumModel.VirusCount = newVirusCount;
    }