Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/27/13 20:17:17 (10 years ago)
Author:
gkronber
Message:

#2026 worked on random search solver (now all examples are working)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.GPDL/Examples/symbreg HEAL.txt

    r10061 r10086  
    55  double[] y;
    66  string[] variableNames;
     7  int[] rows;
    78  Dictionary<string,int> nameToCol;
    89 
     
    1920
    2021  double RSquared(IEnumerable<double> xs, IEnumerable<double> ys) {
    21      HeuristicLab.Problems.DataAnalysis.OnlineCalculatorError error;
    22      var r2 = HeuristicLab.Problems.DataAnalysis.OnlinePearsonsRSquaredCalculator.Calculate(xs, ys, out error);
    23      if(error == HeuristicLab.Problems.DataAnalysis.OnlineCalculatorError.None) return r2;
    24      else return 0.0;
    25   }
     22    // calculate Pearson's correlation in one pass over xs and ys
     23    double sumx = 0.0;
     24    double sumy = 0.0;
     25    double sumxSq = 0.0;
     26    double sumySq = 0.0;
     27    double sumxy = 0.0;
     28    int n = 0;
     29    var xEnum = xs.GetEnumerator();
     30    var yEnum = ys.GetEnumerator();
     31    while(xEnum.MoveNext() & yEnum.MoveNext()) {
     32      sumx += xEnum.Current;
     33      sumy += yEnum.Current;
     34      sumxSq += xEnum.Current * xEnum.Current;
     35      sumySq += yEnum.Current * yEnum.Current;
     36      sumxy += xEnum.Current * yEnum.Current;
     37      n++;
     38    }
     39    System.Diagnostics.Debug.Assert(!(xEnum.MoveNext() | yEnum.MoveNext()));
     40
     41    double num;
     42    double den;
     43    double r = 0.0;
     44    num = sumxy - ( ( sumx * sumy ) / n );
     45    den = Math.Sqrt( ( sumxSq - ( sumx*sumx ) / n ) *
     46                     ( sumySq - ( sumy*sumy ) / n ) );
     47    if(den > 0){
     48      r = num / den;
     49    }
     50    return r*r;
     51  }
    2652>>
    2753
     
    3359  x = new double[n, 10];
    3460  y = new double[n];
    35   for(int row = 0; row < 500; row++) {
     61  for(int row = 0; row < n; row++) {
    3662    for(int col = 0; col < 10; col++) {
    3763      x[row, col] = rand.NextDouble() * 2.0 - 1.0;
     
    4369             x[row, 2] * x[row, 5] + x[row, 9];
    4470  }
     71
     72  rows = System.Linq.Enumerable.Range(0, n).ToArray();
    4573>>
    4674
     
    90118  .
    91119
    92 MAXIMIZE                                                   /* could also use the keyword MINIMIZE here */
     120MAXIMIZE
    93121  <<
    94     var rows = System.Linq.Enumerable.Range(0, x.GetLength(0));
    95122    var predicted = rows.Select(r => {
    96123      double result;
Note: See TracChangeset for help on using the changeset viewer.