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); }
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(); }
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); }
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); }
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); }
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; } }
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(); }
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); }
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); }
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(); } } }
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; } }
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; }
public int CompareTo(object obj) { ModelTree tt = (ModelTree)obj; return(this.range.CompareTo(tt.range)); }