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 }); }
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); }
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; }
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); }
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; }
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); }
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); }
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)}"); }
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(); } }
public static void SendVirusGroupArrived(int bacteriumId, int newVirusCount) { Bacterium bacterium = _game.Bacteriums.First(x => x.Id == bacteriumId); bacterium.BacteriumModel.VirusCount = newVirusCount; }