Exemple #1
0
 public void WriteLine(StreamWriter sw, SingleLineData data)
 {
     for (var i = 1; i <= Config.TotalDays; i++)
     {
         sw.WriteLine($"{data.Line.Code}, {data.Line.Date}, {data.Line.Type},{data.Line.FromStation}, {data.Line.ToStation},{i}, {data.ActualSales[i]}, {data.PredictSales[i]}, {data.ErrorRate[i]}, {data.TotalErrorRate}");
     }
 }
Exemple #2
0
        public void PredictSalesWithWeight(SingleLineData line)
        {
            foreach (var sales in line.ActualSales)
            {
                int start = sales.Key - this.NFactor;
                start = start > 1 ? start : 1;
                int    end  = sales.Key;
                double size = (double)end - start;

                double sum = 0;
                if (size >= this.NFactor)
                {
                    for (var i = start; i < end; i++)
                    {
                        var index = i - start;
                        sum += line.ActualSales[i] * this.PredictWeights[index];
                    }
                }
                else
                {
                    this.PredictSales(line);
                }

                line.PredictSales[sales.Key] = (int)Math.Ceiling((double)(sum));
            }
        }
Exemple #3
0
 public void CalculatePredictErrorRate(SingleLineData line)
 {
     for (int i = 1; i <= Config.TotalDays; i++)
     {
         if (line.ActualSales[i] != 0)
         {
             var errorRate = (double)(line.PredictSales[i] - line.ActualSales[i]) / (double)line.ActualSales[i];
             line.ErrorRate[i] = Math.Abs(errorRate);
         }
         else
         {
             line.ErrorRate[i] = int.MinValue;
         }
     }
 }
Exemple #4
0
        public List <SingleLineData> FetchAllLinesData()
        {
            Dictionary <string, SingleLineData> dataSet = new Dictionary <string, SingleLineData>();
            var connStr = "server=cnyazha-svr;user id=sa;password=Passw0rd!;database=Test";

            using (var conn = new SqlConnection(connStr))
            {
                if (conn.State != System.Data.ConnectionState.Open)
                {
                    conn.Open();
                }

                using (var sqlCmd = conn.CreateCommand())
                {
                    sqlCmd.CommandText =
                        "select code, ondate, [type], fromstation, tostation, presaleday, SUM(sales) as sales from AllData group by code, ondate, [type], fromstation, tostation, presaleday order by code, ondate, [type], fromstation, tostation, presaleday";
                    using (var reader = sqlCmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var lineData = new SingleLineData();
                            lineData.Line.Code        = reader.GetString(0);
                            lineData.Line.Date        = reader[1].ToString();
                            lineData.Line.Type        = reader.GetString(2);
                            lineData.Line.FromStation = reader.GetString(3);
                            lineData.Line.ToStation   = reader.GetString(4);
                            var key = lineData.GetKey();
                            if (dataSet.ContainsKey(key))
                            {
                                lineData = dataSet[key];
                            }
                            else
                            {
                                dataSet[key] = lineData;
                            }

                            var presaleDay = Config.TotalDays + reader.GetInt32(5);
                            var sales      = reader.GetInt32(6);
                            lineData.ActualSales[presaleDay] = sales;
                        }
                    }
                }
            }

            return(dataSet.Values.ToList());
        }
Exemple #5
0
        public void CalculateTotalErrorRate(SingleLineData line)
        {
            var sum    = 0.0d;
            var factor = 0.0d;

            for (var i = Config.TotalDays; i > (Config.TotalDays - this.ErrorRateDays); i--)
            {
                var error = line.ErrorRate[i];
                if (Math.Abs(error - int.MinValue) > 0)
                {
                    factor += line.ActualSales[i];
                    var errorRate = line.ErrorRate[i] * line.ActualSales[i];
                    sum += errorRate;
                }
            }
            line.TotalErrorRate = sum / factor;
        }
Exemple #6
0
        public void PredictSalesWithLog(SingleLineData line)
        {
            foreach (var sales in line.ActualSales)
            {
                int start = sales.Key - this.NFactor - 1;
                start = start > 1 ? start : 1;
                int end = sales.Key;

                int sum = 0;
                for (var i = start; i < end; i++)
                {
                    sum += line.ActualSales[i];
                }

                line.PredictSales[sales.Key] = (int)Math.Ceiling((double)(sum) / (double)this.NFactor);
            }
        }