Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/28/16 12:53:51 (8 years ago)
Author:
gkronber
Message:

simplification of grammar and problem and bug fixes related to precalculated smoothed features

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.GeneticProgramming.BloodGlucosePrediction/Interpreter.cs

    r14310 r14311  
    3131      var predictions = new double[targetGluc.Length];
    3232      var rowsEnumerator = rows.GetEnumerator();
     33      rowsEnumerator.MoveNext();
    3334      for (int k = 0; k < predictions.Length; k++, rowsEnumerator.MoveNext()) {
    3435        if (double.IsNaN(targetGluc[k])) {
     
    3637        } else {
    3738          var rawPred = InterpretRec(model, data, rowsEnumerator.Current);
    38           predictions[k] = rawPred; 
     39          predictions[k] = rawPred;
    3940        }
    4041      }
     
    6162      // d Q1 / dt = ins(t) - alpha * Q1(t)
    6263      // d Q2 / dt = alpha * (Q1(t) - Q2(t))
    63       // S = Q1(t) + Q2(t)
     64      // d Q3 / dt = alpha * Q2(t) - beta * Q3(t)
    6465      var alpha = node.Alpha;
     66      var beta = node.Beta;
    6567
    6668      var ins = dataset.GetReadOnlyDoubleValues("Insuline");
    6769      var time = dataset.GetReadOnlyDoubleValues("HourMin").ToArray();
    6870
    69       // TODO reset for new time intervals
    70 
    71       double q1, q2, q1_prev, q2_prev;
     71      double q1, q2, q3, q1_prev, q2_prev, q3_prev;
    7272      // starting values: zeros
    73       q1 = q2 = q1_prev = q2_prev = 0;
     73      q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0;
    7474      double[] s = new double[dataset.Rows];
    7575
    7676      for (int t = 1; t < dataset.Rows; t++) {
    7777        if (IsStartOfNewPeriod(time, t)) {
    78           q1 = q2 = q1_prev = q2_prev = 0;
     78          q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0;
    7979        }
    8080        q1 = q1_prev + ins[t] - alpha * q1_prev;
    8181        q2 = q2_prev + alpha * (q1_prev - q2_prev);
    82         s[t] = q1 + q2;
     82        q3 = q3_prev + alpha * q2_prev - beta * q3_prev;
     83        s[t] = q3;
    8384        q1_prev = q1;
    8485        q2_prev = q2;
     86        q3_prev = q3;
    8587
    8688      }
     
    9799      // d Q1 / dt = ins(t) - alpha * Q1(t)
    98100      // d Q2 / dt = alpha * (Q1(t) - Q2(t))
    99       // S = Q1(t) + Q2(t)
     101      // d Q3 / dt = alpha * Q2(t) - beta * Q3(t)
    100102      var alpha = node.Alpha;
    101 
    102       var ch = dataset.GetReadOnlyDoubleValues("CH");
     103      var beta = node.Beta;
     104
     105      var ins = dataset.GetReadOnlyDoubleValues("CH");
    103106      var time = dataset.GetReadOnlyDoubleValues("HourMin").ToArray();
    104107
    105       // TODO reset for new time intervals
    106 
    107       double q1, q2, q1_prev, q2_prev;
     108      double q1, q2, q3, q1_prev, q2_prev, q3_prev;
    108109      // starting values: zeros
    109       q1 = q2 = q1_prev = q2_prev = 0;
     110      q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0;
    110111      double[] s = new double[dataset.Rows];
    111112
    112113      for (int t = 1; t < dataset.Rows; t++) {
    113114        if (IsStartOfNewPeriod(time, t)) {
    114           q1 = q2 = q1_prev = q2_prev = 0;
    115         }
    116         q1 = q1_prev + ch[t] - alpha * q1_prev;
     115          q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0;
     116        }
     117        q1 = q1_prev + ins[t] - alpha * q1_prev;
    117118        q2 = q2_prev + alpha * (q1_prev - q2_prev);
    118         s[t] = q1 + q2;
     119        q3 = q3_prev + alpha * q2_prev - beta * q3_prev;
     120        s[t] = q3;
    119121        q1_prev = q1;
    120122        q2_prev = q2;
     123        q3_prev = q3;
    121124
    122125      }
     
    206209    }
    207210
    208     private static double Beta(double x, double alpha, double beta) {
    209       return 1.0 / alglib.beta(alpha, beta) * Math.Pow(x, alpha - 1) * Math.Pow(1 - x, beta - 1);
    210     }
    211211  }
    212212}
Note: See TracChangeset for help on using the changeset viewer.