示例#1
0
        static ModelTree[] buildLevel1()
        {
            ModelTree[] ms = new ModelTree[10];
            for (int j = 0; j < 10; j++)
            {
                Model m = new Model();
                m.id     = Global.id++;
                m.len    = 1000 * 10;
                m.freq   = 1000; //leaf node
                m.error  = 10;
                m.type   = ModelType.Explicit;
                m.values = new double[10];
                Random r = new Random();
                for (int i = 0; i < 10; i++)
                {
                    m.values[i] = r.Next(100);
                }

                //children
                ms[j] = m.construct();
            }
            Model seasonal = SetSeasonal();

            for (int j = 0; j < 10; j++)
            {
                ModelTree m = ms[j];
                m.seasonal = seasonal;
                m.children = buildLevel2();
            }

            return(ms);
        }
示例#2
0
        public ModelTree convert(TimeSeries ts)
        {
            TimeSeries ts_ = new TimeSeries(ts, this);
            Model      m   = new Model(ts_);
            ModelTree  t   = m.construct();

            t.range    = this;
            t.children = new ModelTree[this.children.Count];
            int i = 0;

            foreach (Range r in this.children)
            {
                t.children[i] = r.convert(ts);
                i++;
            }
            return(t);
        }
示例#3
0
        static ModelTree buildLevel0()
        {
            Global.id = 0;
            Model m = new Model();

            m.id     = Global.id++;
            m.len    = 1000 * 10 * 100;
            m.freq   = 1000 * 10;
            m.error  = 100;
            m.type   = ModelType.Explicit;
            m.values = new double[100];
            Random r = new Random();

            for (int i = 0; i < 10; i++)
            {
                m.values[i] = r.Next(100);
            }
            ModelTree t = m.construct();

            t.seasonal = SetSeasonal();
            t.children = buildLevel1();

            return(t);
        }
示例#4
0
        public RTree(ArrayList ranges, TimeSeries ts)
        {
            ArrayList R_j = (ArrayList)ranges[ranges.Count - 1];

            root = (Range)R_j[0];
            ArrayList R_i;

            for (int i = ranges.Count - 1; i >= 0; i--)
            {
                R_i = (ArrayList)ranges[i];
                foreach (Range r_i in R_i)
                {
                    TimeSeries ts_ = new TimeSeries(ts, r_i);
                    Model      m   = new Model(ts_);
                    m.Clean();
                    m.Set();
                    ModelTree t = m.construct();
                    t.range    = r_i;
                    t.children = null;
                    r_i.t      = t;
                }
            }

            for (int i = ranges.Count - 2; i >= 0; i--)
            {
                R_i = (ArrayList)ranges[i];
                R_j = (ArrayList)ranges[i + 1];

                foreach (Range r_i in R_i)
                {
                    foreach (Range r_j in R_j)
                    {
                        if (r_j.overlap(r_i))
                        {
                            r_j.children.Add(r_i);
                        }
                    }
                }
            }
            for (int i = ranges.Count - 2; i >= 0; i--)
            {
                R_i = (ArrayList)ranges[i];
                R_j = (ArrayList)ranges[i + 1];

                foreach (Range r_i in R_i)
                {
                    foreach (Range r_j in R_j)
                    {
                        if (r_j.overlap(r_i))
                        {
                            if (r_j.len > r_i.len)
                            {
                                if (r_i.t.error > 1)
                                {
                                    r_j.t.childs.Add(r_i.t);
                                    r_i.t.parent = r_j.t;
                                }
                            }
                        }
                    }
                }
            }
            //convert childs to children
            for (int i = ranges.Count - 1; i >= 0; i--)
            {
                R_i = (ArrayList)ranges[i];
                foreach (Range r_i in R_i)
                {
                    r_i.t.convertchildstochildren();
                }
            }
        }