Esempio n. 1
0
        private void wjwOperation_Click(object sender, RoutedEventArgs e)
        {
            TicketDB   ticket = new TicketDB();
            List <int> list   = ticket.findListOfOneNum("2018");

            if (list != null && list.Count > 0)
            {
                var result = new DiscreteMarkov(list, 33, 5);
                this.content.Text = "预测状态概率::" + result.PredictValue[0] + "\r\n" + "概率转移矩阵:" + result.ProbMatrix + "\r\n";
            }
        }
Esempio n. 2
0
        public void DiscreMarkovTest()
        {
            //历史状态数据
            var list = new List <int>
            {
                8, 15, 2, 15, 16, 3, 7, 9, 12, 14, 1, 6, 10, 2, 3, 6, 8,
                14, 12, 5, 8, 12, 16, 2, 4, 6, 7, 14, 12, 1, 13, 4, 6, 9, 8, 2, 12, 14, 5, 13, 16, 1, 7, 6, 4, 3,
                6, 7, 14, 9, 2, 8, 10, 15, 10, 11, 12, 14, 14, 8, 16, 8, 2, 5, 14, 11, 7, 16, 9,
                6, 10, 13, 16, 14, 11, 1, 10, 13, 1,
                9, 8, 12, 6, 5, 15, 10, 15, 13, 8,
                3, 14, 9, 15, 6, 1, 11, 4, 13, 12
            };
            var discrete = new DiscreteMarkov(list.ToList(), 16, 8);

            Console.WriteLine(discrete.PredictValue.ToJson());
            var    dict  = new Dictionary <int, double>();
            int    value = 0;
            double max   = 0;
            int    index = 0;

            foreach (double v in discrete.PredictValue)
            {
                index++;
                dict.Add(index, v);
                if (!(v > max))
                {
                    continue;
                }
                max   = v;
                value = index;
            }
            var preds = dict.OrderByDescending(t => t.Value).Select(t => new { num = t.Key, pred = t.Value });

            Console.WriteLine(preds.Join("\r\n", "{num}:{pred}"));
            Console.WriteLine("预测:{0}[{1}]", value, max);
            //Console.WriteLine("实际:{0}", random.Next(1, 16));
        }
Esempio n. 3
0
        private void Button2_Click(object sender, EventArgs e)
        {
            DataTable dt = getData().Tables[0];

            #region create newTable
            DataTable  resDt     = new DataTable();
            DataColumn taxColumn = new DataColumn();
            taxColumn.DataType   = System.Type.GetType("System.Decimal");
            taxColumn.ColumnName = "tax";
            taxColumn.Expression = "price * 0.0862";
            resDt.Columns.Add("1", Type.GetType("System.String"));
            resDt.Columns.Add("2", Type.GetType("System.String"));
            resDt.Columns.Add("3", Type.GetType("System.String"));
            resDt.Columns.Add("4", Type.GetType("System.String"));
            resDt.Columns.Add("5", Type.GetType("System.String"));
            resDt.Columns.Add("6", Type.GetType("System.String"));
            resDt.Columns.Add("7", Type.GetType("System.String"));
            resDt.Columns.Add("8", Type.GetType("System.String"));
            resDt.Columns.Add("9", Type.GetType("System.String"));
            resDt.Columns.Add("0", Type.GetType("System.String"));
            #endregion

            data = new int[3][];
            for (int i = 0; i < 3; i++)
            {
                data[i] = new int[dt.Rows.Count];
            }

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                data[0][i] = Convert.ToInt32(dt.Rows[i][0]);
                data[1][i] = Convert.ToInt32(dt.Rows[i][1]);
                data[2][i] = Convert.ToInt32(dt.Rows[i][2]);
            }


            string strRes = "";

            for (int i = 0; i < data.Length; i++)
            {
                List <int> dataList = data[i].ToList <int>();
                //TODO:算法有问题,待确认,目前灵敏度不高
                var result = new DiscreteMarkov(dataList, 10, 5);

                double[]      res   = result.PredictValue;
                string        str   = "";
                List <double> rates = new List <double>();

                DataRow newRow;
                newRow = resDt.NewRow();

                for (int j = 0; j < res.Length; j++)
                {
                    newRow[j] = res[j].ToString("0.00");
                    rates.Add(res[j]);
                    strRes += " " + res[j].ToString("0.00");
                }
                resDt.Rows.Add(newRow);

                strRes += "\r\n";
                PreResult.Add(rates);
            }

            dataGridView1.DataSource = resDt;
            //richTextBox1.AppendText(strRes);
        }
Esempio n. 4
0
 public void DiscreMarkovTest()
 {
     //历史状态数据
     var list = new List<int>
     {
         8,15,2,15,16,3,7,9,12,14,1,6,10,2,3,6,8,
         14,12,5,8,12,16,2,4,6,7,14,12,1,13,4,6,9,8,2,12,14,5,13,16,1,7,6,4,3,
         6,7,14,9,2,8,10,15,10,11,12,14,14,8,16,8,2,5,14,11,7,16,9,
         6, 10, 13, 16, 14, 11, 1, 10, 13, 1,
         9, 8, 12, 6, 5, 15, 10, 15, 13, 8,
         3, 14, 9,15,6,1,11,4,13,12
     };
     var discrete = new DiscreteMarkov(list.ToList(), 16, 8);
     Console.WriteLine(discrete.PredictValue.ToJson());
     var dict = new Dictionary<int, double>();
     int value = 0;
     double max = 0;
     int index = 0;
     foreach (double v in discrete.PredictValue)
     {
         index++;
         dict.Add(index, v);
         if (!(v > max)) continue;
         max = v;
         value = index;
     }
     var preds = dict.OrderByDescending(t => t.Value).Select(t => new { num = t.Key, pred = t.Value });
     Console.WriteLine(preds.Join("\r\n", "{num}:{pred}"));
     Console.WriteLine("预测:{0}[{1}]", value, max);
     //Console.WriteLine("实际:{0}", random.Next(1, 16));
 }