コード例 #1
0
ファイル: KMeans.cs プロジェクト: yuvalborsWix/WixRestServer
        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);
        }