public static int[] GetKmeansForGrid(int idGrid) { // DB WixServerContext db = new WixServerContext(); // Get tabels and number them int gridId = idGrid; var tables = db.Tables.Where(x => x.GridId == gridId).ToList(); // get orders of this grid var orders = db.Orders.Where(x => x.GridId == gridId).ToList(); //Console.WriteLine("\nBegin k-means clustering demo\n"); // fill data of the tables and orders double[][] rawData = new double[tables.Count][]; for (int i = 0; i < tables.Count; i++) { var tableOrders = orders.Where(x => x.TableNumber == (i + 1)).ToList(); int sumCoords = tables[i].xCoord * 10 + tables[i].yCoord; rawData[i] = new double[] { sumCoords, tableOrders.Count }; } /* * Console.WriteLine("Raw unclustered data:\n"); * Console.WriteLine(" tableloc numOrders"); * Console.WriteLine("-------------------"); * ShowData(rawData, 1, true, true); */ int numClusters = 3; //Console.WriteLine("\nSetting numClusters to " + numClusters); int[] clustering = Cluster(rawData, numClusters); // this is it //Console.WriteLine("\nK-means clustering complete\n"); //Console.WriteLine("Final clustering in internal form:\n"); //ShowVector(clustering, true); //Console.WriteLine("Raw data by cluster:\n"); //ShowClustered(rawData, clustering, numClusters, 1); //Console.WriteLine("\nEnd k-means clustering demo\n"); //Console.ReadLine(); return(clustering); }