private double[,] CalculateRates(Tissue tissue, List<Point> missionTravelPoints, List<Point> neurocontrollers, Point pierreIP) { //StreamWriter weightsWrite = new StreamWriter("c:\\weights.txt"); //StreamWriter ratesWrite = new StreamWriter("c:\\rates.txt"); neurocontrollers.Add(pierreIP); double[,] rates = new double[tissue.Height, tissue.Width]; for (int i = 0; i < tissue.Height; ++i) { for (int j = 0; j < tissue.Width; ++j) { Entity entity = tissue.getElement(i, j); Double dist = this.GetDistance(pierreIP, new Point(i,j)); if (pierreIP.X == i && pierreIP.Y == j) { rates[i, j] = 0;//weightsWrite.Write("P|");ratesWrite.Write("P|"); continue; } if (null == entity) { rates[i, j] += EmptyPointWeight; } if (this.NeuroControllerInRange(new Point(i, j), neurocontrollers, 14)) { rates[i, j] += NeuroControllerInRangeWeight; } if (null != entity && EntityEnum.AZN == entity.EntityType) { rates[i, j] += AZNPointsWeight; } if (null != entity && EntityEnum.HoshimiPoint == entity.EntityType) { rates[i, j] += HoshimiPointsWeight; } if (missionTravelPoints.Contains(new Point(i, j))) { rates[i, j] += ObjectivesPointsWeight; } if (neurocontrollers.Contains(new Point(i, j))) { rates[i, j] += NeuroControllerWeight; } //weightsWrite.Write("("+i+","+j+")" + rates[i, j].ToString() + "|"); rates[i, j] = rates[i, j] / dist; //ratesWrite.Write("("+i+","+j+")"+rates[i, j].ToString() + "|"); } //weightsWrite.WriteLine(""); //ratesWrite.WriteLine(""); } //weightsWrite.Close(); //ratesWrite.Close(); return rates; }