コード例 #1
0
ファイル: GenTree.cs プロジェクト: wsgan001/VLDBDemo_win
        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 void removeChild(int id_)
 {
     for (int i = 0; i < childs.Count; i++)
     {
         ModelTree child = (ModelTree)childs[i];
         if (child.id == id_)
         {
             childs.Remove(child);
         }
     }
     convertchildstochildren();
 }
コード例 #3
0
ファイル: GenTree.cs プロジェクト: wsgan001/VLDBDemo_win
        static public void BuildNiceTree()
        {
            ModelTree t = buildLevel0();

            double[] data = new double[t.len];
            t.Eval(10000);
            t.EvalProb(10000, 12);
            t.EvalProb(10000, 1);
            for (int i = 0; i < t.len; i++)
            {
                data[i] = t.EvalProb(i, 1);
            }

            Serlialize(0, t, data);
        }
コード例 #4
0
        public ModelTree construct()
        {
            ModelTree t = new ModelTree();

            t.range    = new Range(0, len);
            t.len      = len;
            t.values   = values;
            t.seasonal = seasonal;
            t.freq     = freq;
            t.type     = type;
            t.error    = error;
            t.children = null;
            t.id       = id;
            t.ts       = ts;
            return(t);
        }
コード例 #5
0
ファイル: Range.cs プロジェクト: wsgan001/VLDBDemo_win
        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);
        }
コード例 #6
0
        void setModels(int len, double[] errors, int shift, int done)
        {
            double[] newerrors = null;
            if (errors.Length > 1)
            {
                newerrors = new double[errors.Length - 1];
                for (int i = 0; i < errors.Length - 1; i++)
                {
                    newerrors[i] = errors[i];
                }
            }
            int kk = (int)Math.Floor((double)ts.Length / len);

            children = new ModelTree[kk];
            int x = 0;

            for (int i = 0; i < kk; i++)
            {
                if (i == kk - 1)
                {
                    len = ts.Length - x;
                }
                int      s = x;
                double[] u = new double[len];
                for (int j = 0; j < len; j++)
                {
                    u[j] = ts.data[x++];
                }
                TimeSeries t = new TimeSeries(u, ts.freq);
                ModelTree  m = null;
                if (shift == 1)
                {
                    m = new ModelTree(t, newerrors, s);
                }
                else
                {
                    m = new ModelTree(t, errors, s);
                }
                if (done == 0)
                {
                    m.BuildTree();
                }
                children[i] = m;
                m.start     = s;
            }
        }
コード例 #7
0
ファイル: GenTree.cs プロジェクト: wsgan001/VLDBDemo_win
        static void Serlialize(int st, ModelTree t, double[] uk)
        {
            bool         append = st > 0;
            StreamWriter sw     = new StreamWriter(dir + "m.txt", append);

            t.ToFile(sw);
            sw.Close();
            Global.id = 0;
            t.Set();
            StreamWriter mm = new StreamWriter(dir + "b.txt");

            t.SerializeAll();
            mm.WriteLine(Global.id);
            for (int i = 0; i < Global.id; i++)
            {
                mm.WriteLine(Global.ht[i]);
            }
            mm.Close();
        }
コード例 #8
0
ファイル: GenTree.cs プロジェクト: wsgan001/VLDBDemo_win
        public static void build(int st, int n)
        {
            double[]   uk = utils.File.ReadData(dir + file, st, n);
            TimeSeries ts = new TimeSeries(uk, freq);

            BuildModel.ts = ts;
            ModelTree t = BuildModel.BTree(errors);

            /*  ModelTree  t= new ModelTree(ts, errors,0);
             * t.BuildTree();
             * t.Clean();*/
            Global.id = 0;
            t.Set();

            //t.Improvetree();
            Global.id = 0;
            t.Set();
            Serlialize(st, t, uk);
        }
コード例 #9
0
ファイル: GenTree.cs プロジェクト: wsgan001/VLDBDemo_win
        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);
        }
コード例 #10
0
ファイル: Range.cs プロジェクト: wsgan001/VLDBDemo_win
        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();
                }
            }
        }
コード例 #11
0
ファイル: Model.cs プロジェクト: Khalefa/VLDBDemo_win
        void setModels(int len, double[] errors, int shift, int done)
        {
            double[] newerrors = null;
            if (errors.Length > 1)
            {
                newerrors = new double[errors.Length - 1];
                for (int i = 0; i < errors.Length - 1; i++)
                {
                    newerrors[i] = errors[i];
                }
            }
            int kk = (int)Math.Floor((double)ts.Length / len);

            children = new ModelTree[kk];
            int x = 0;

            for (int i = 0; i < kk; i++)
            {
                if (i == kk - 1) len = ts.Length - x;
                int s = x;
                double[] u = new double[len];
                for (int j = 0; j < len; j++) u[j] = ts.data[x++];
                TimeSeries t = new TimeSeries(u, ts.freq);
                ModelTree m = null;
                if (shift == 1)
                    m = new ModelTree(t, newerrors, s);
                else
                    m = new ModelTree(t, errors, s);
                if (done == 0)
                {
                    m.BuildTree();
                }
                children[i] = m;
                m.start = s;
            }
        }
コード例 #12
0
ファイル: Model.cs プロジェクト: Khalefa/VLDBDemo_win
 public ModelTree construct()
 {
     ModelTree t = new ModelTree();
     t.range = new Range(0, len);
     t.len = len;
     t.values = values;
     t.seasonal = seasonal;
     t.freq = freq;
     t.type = type;
     t.error = error;
     t.children = null;
     t.id = id;
     t.ts = ts;
     return t;
 }
コード例 #13
0
        public int CompareTo(object obj)
        {
            ModelTree tt = (ModelTree)obj;

            return(this.range.CompareTo(tt.range));
        }