Changeset 14311 for branches/HeuristicLab.Problems.GeneticProgramming.BloodGlucosePrediction/Interpreter.cs
- Timestamp:
- 09/28/16 12:53:51 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.GeneticProgramming.BloodGlucosePrediction/Interpreter.cs
r14310 r14311 31 31 var predictions = new double[targetGluc.Length]; 32 32 var rowsEnumerator = rows.GetEnumerator(); 33 rowsEnumerator.MoveNext(); 33 34 for (int k = 0; k < predictions.Length; k++, rowsEnumerator.MoveNext()) { 34 35 if (double.IsNaN(targetGluc[k])) { … … 36 37 } else { 37 38 var rawPred = InterpretRec(model, data, rowsEnumerator.Current); 38 predictions[k] = rawPred; 39 predictions[k] = rawPred; 39 40 } 40 41 } … … 61 62 // d Q1 / dt = ins(t) - alpha * Q1(t) 62 63 // d Q2 / dt = alpha * (Q1(t) - Q2(t)) 63 // S = Q1(t) + Q2(t)64 // d Q3 / dt = alpha * Q2(t) - beta * Q3(t) 64 65 var alpha = node.Alpha; 66 var beta = node.Beta; 65 67 66 68 var ins = dataset.GetReadOnlyDoubleValues("Insuline"); 67 69 var time = dataset.GetReadOnlyDoubleValues("HourMin").ToArray(); 68 70 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; 72 72 // starting values: zeros 73 q1 = q2 = q 1_prev = q2_prev = 0;73 q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0; 74 74 double[] s = new double[dataset.Rows]; 75 75 76 76 for (int t = 1; t < dataset.Rows; t++) { 77 77 if (IsStartOfNewPeriod(time, t)) { 78 q1 = q2 = q 1_prev = q2_prev = 0;78 q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0; 79 79 } 80 80 q1 = q1_prev + ins[t] - alpha * q1_prev; 81 81 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; 83 84 q1_prev = q1; 84 85 q2_prev = q2; 86 q3_prev = q3; 85 87 86 88 } … … 97 99 // d Q1 / dt = ins(t) - alpha * Q1(t) 98 100 // d Q2 / dt = alpha * (Q1(t) - Q2(t)) 99 // S = Q1(t) + Q2(t)101 // d Q3 / dt = alpha * Q2(t) - beta * Q3(t) 100 102 var alpha = node.Alpha; 101 102 var ch = dataset.GetReadOnlyDoubleValues("CH"); 103 var beta = node.Beta; 104 105 var ins = dataset.GetReadOnlyDoubleValues("CH"); 103 106 var time = dataset.GetReadOnlyDoubleValues("HourMin").ToArray(); 104 107 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; 108 109 // starting values: zeros 109 q1 = q2 = q 1_prev = q2_prev = 0;110 q1 = q2 = q3 = q1_prev = q2_prev = q3_prev = 0; 110 111 double[] s = new double[dataset.Rows]; 111 112 112 113 for (int t = 1; t < dataset.Rows; t++) { 113 114 if (IsStartOfNewPeriod(time, t)) { 114 q1 = q2 = q 1_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; 117 118 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; 119 121 q1_prev = q1; 120 122 q2_prev = q2; 123 q3_prev = q3; 121 124 122 125 } … … 206 209 } 207 210 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 }211 211 } 212 212 }
Note: See TracChangeset
for help on using the changeset viewer.