Free cookie consent management tool by TermsFeed Policy Generator

Changeset 14825


Ignore:
Timestamp:
04/04/17 16:57:45 (7 years ago)
Author:
gkronber
Message:

#2650: merged r14769:14820 from trunk to branch to prepare for branch reintegration

Location:
branches/symbreg-factors-2650
Files:
34 edited
3 copied

Legend:

Unmodified
Added
Removed
  • branches/symbreg-factors-2650

  • branches/symbreg-factors-2650/HeuristicLab.Algorithms.ALPS

  • branches/symbreg-factors-2650/HeuristicLab.Algorithms.ALPS/3.3/AlpsGeneticAlgorithm.cs

    r14185 r14825  
    475475    protected override void Problem_EvaluatorChanged(object sender, EventArgs e) {
    476476      base.Problem_EvaluatorChanged(sender, e);
     477
     478      ParameterizeStochasticOperatorForLayer(Problem.Evaluator);
     479
    477480      foreach (var @operator in Problem.Operators.OfType<IOperator>())
    478481        ParameterizeStochasticOperator(@operator);
  • branches/symbreg-factors-2650/HeuristicLab.Algorithms.DataAnalysis

  • branches/symbreg-factors-2650/HeuristicLab.Algorithms.DataAnalysis/3.4/CrossValidation.cs

    r14185 r14825  
    451451      var aggregatedResults = new List<IResult>();
    452452      foreach (KeyValuePair<string, List<IClassificationSolution>> solutions in resultSolutions) {
    453         // clone manually to correctly clone references between cloned root objects
    454         Cloner cloner = new Cloner();
    455         var problemDataClone = (IClassificationProblemData)cloner.Clone(Problem.ProblemData);
     453        // at least one algorithm (GBT with logistic regression loss) produces a classification solution even though the original problem is a regression problem.
     454        var targetVariable = solutions.Value.First().ProblemData.TargetVariable;
     455        var problemDataClone = new ClassificationProblemData(Problem.ProblemData.Dataset,
     456          Problem.ProblemData.AllowedInputVariables, targetVariable);
    456457        // set partitions of problem data clone correctly
    457458        problemDataClone.TrainingPartition.Start = SamplesStart.Value; problemDataClone.TrainingPartition.End = SamplesEnd.Value;
  • branches/symbreg-factors-2650/HeuristicLab.Algorithms.DataAnalysis/3.4/GradientBoostedTrees/GradientBoostedTreesAlgorithm.cs

    r14542 r14825  
    255255          var classificationProblemData = new ClassificationProblemData(problemData.Dataset,
    256256            problemData.AllowedInputVariables, problemData.TargetVariable, problemData.Transformations);
    257           classificationModel.RecalculateModelParameters(classificationProblemData, classificationProblemData.TrainingIndices);
     257          classificationProblemData.TrainingPartition.Start = Problem.ProblemData.TrainingPartition.Start;
     258          classificationProblemData.TrainingPartition.End = Problem.ProblemData.TrainingPartition.End;
     259          classificationProblemData.TestPartition.Start = Problem.ProblemData.TestPartition.Start;
     260          classificationProblemData.TestPartition.End = Problem.ProblemData.TestPartition.End;
     261
     262          classificationModel.SetThresholdsAndClassValues(new double[] { double.NegativeInfinity, 0.0 }, new []{ 0.0, 1.0 });
     263
    258264
    259265          var classificationSolution = new DiscriminantFunctionClassificationSolution(classificationModel, classificationProblemData);
  • branches/symbreg-factors-2650/HeuristicLab.Analysis

  • branches/symbreg-factors-2650/HeuristicLab.Analysis/3.3/QualityAnalysis/ExpectedRuntimeHelper.cs

    r14102 r14825  
    3030      if (successful.Count > 0) {
    3131        var succAvg = successful.Average();
    32         var succDev = successful.StandardDeviation();
     32        var succDev = successful.StandardDeviation() + 1e-7;
    3333        successful.RemoveAll(x => x < succAvg - 2 * succDev);
    3434        unsuccessful.RemoveAll(x => x < succAvg - 2 * succDev);
  • branches/symbreg-factors-2650/HeuristicLab.Collections/3.3/IndexedItem.cs

    r14185 r14825  
    2020#endregion
    2121
    22 using System;
    23 
    2422namespace HeuristicLab.Collections {
    25   [Serializable]
    2623  public struct IndexedItem<T> {
    27     private int index;
     24    private readonly int index;
    2825    public int Index {
    2926      get { return index; }
    3027    }
    31     private T value;
     28    private readonly T value;
    3229    public T Value {
    3330      get { return value; }
     
    4037
    4138    public override string ToString() {
    42       return "[" + index.ToString() + ": " + value == null ? "null" : value.ToString() + "]";
     39      return "[" + index + ": " + (value == null ? "null" : value.ToString()) + "]";
    4340    }
    4441  }
  • branches/symbreg-factors-2650/HeuristicLab.Common/3.3/EnumerableExtensions.cs

    r14755 r14825  
    120120
    121121      for (int i = 0; i < length; ++i) {
    122         yield return range.Select(x => elements[x]);
     122        yield return range.Select(x => elements[x]).ToArray();
    123123
    124124        if (i == length - 1) break;
  • branches/symbreg-factors-2650/HeuristicLab.DataPreprocessing.Views

  • branches/symbreg-factors-2650/HeuristicLab.DataPreprocessing.Views/3.4/CheckedFilterCollectionView.cs

    r14185 r14825  
    2121
    2222using System;
    23 using System.Windows.Forms;
    2423using HeuristicLab.Core;
    2524using HeuristicLab.Core.Views;
     
    3534      InitializeComponent();
    3635    }
    37 
    38     protected override void addButton_Click(object sender, EventArgs e) {
    39       IFilter filter = new ComparisonFilter();
    40       Content.Add(filter);
    41       Content.SetItemCheckedState(filter, false);
    42     }
    43 
    4436  }
    4537}
  • branches/symbreg-factors-2650/HeuristicLab.Optimization.Views

  • branches/symbreg-factors-2650/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionBoxPlotView.cs

    r14185 r14825  
    463463    }
    464464
     465  public bool StatisticsVisible {
     466    get { return splitContainer.Panel2Collapsed; }
     467    set { splitContainer.Panel2Collapsed = value; }
     468  }
     469 
    465470    public void SetXAxis(string axisName) {
    466471      xAxisComboBox.SelectedItem = axisName;
  • branches/symbreg-factors-2650/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionRLDView.cs

    r14751 r14825  
    11#region License Information
    22/* HeuristicLab
    3  * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
     3 * Copyright (C) 2002-2017 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
    44 *
    55 * This file is part of HeuristicLab.
     
    4242    private List<Series> invisibleTargetSeries;
    4343
    44     private const string AllRuns = "All Runs";
     44    private const string AllInstances = "All Instances";
    4545
    4646    private static readonly Color[] colors = new[] {
     
    223223      var groupings = Content.ParameterNames.OrderBy(x => x).ToArray();
    224224      groupComboBox.Items.Clear();
    225       groupComboBox.Items.Add(AllRuns);
     225      groupComboBox.Items.Add(AllInstances);
    226226      groupComboBox.Items.AddRange(groupings);
    227227      if (selectedGroupItem != null && groupComboBox.Items.Contains(selectedGroupItem)) {
     
    241241
    242242      var selectedProblemItem = (ProblemInstance)problemComboBox.SelectedItem;
     243      problemComboBox.DataSource = null;
     244      problemComboBox.Items.Clear();
    243245      problems.Clear();
    244246      problems.Add(ProblemInstance.MatchAll);
     247      problemComboBox.DataSource = new BindingSource() { DataSource = problems };
     248      problemComboBox.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
    245249      if (problems[0].Equals(selectedProblemItem)) problemComboBox.SelectedItem = problems[0];
    246250      foreach (var p in problemDict.ToList()) {
     
    282286    }
    283287
    284     private Dictionary<string, Dictionary<ProblemInstance, List<IRun>>> GroupRuns() {
    285       var groupedRuns = new Dictionary<string, Dictionary<ProblemInstance, List<IRun>>>();
    286 
     288    private IEnumerable<AlgorithmInstance> GroupRuns() {
    287289      var table = (string)dataTableComboBox.SelectedItem;
    288       if (string.IsNullOrEmpty(table)) return groupedRuns;
     290      if (string.IsNullOrEmpty(table)) yield break;
    289291
    290292      var selectedGroup = (string)groupComboBox.SelectedItem;
    291       if (string.IsNullOrEmpty(selectedGroup)) return groupedRuns;
     293      if (string.IsNullOrEmpty(selectedGroup)) yield break;
    292294
    293295      var selectedProblem = (ProblemInstance)problemComboBox.SelectedItem;
    294       if (selectedProblem == null) return groupedRuns;
     296      if (selectedProblem == null) yield break;
    295297     
    296298      foreach (var x in (from r in Content
    297                          where (selectedGroup == AllRuns || r.Parameters.ContainsKey(selectedGroup))
     299                         where (selectedGroup == AllInstances || r.Parameters.ContainsKey(selectedGroup))
    298300                           && selectedProblem.Match(r)
    299301                           && r.Results.ContainsKey(table)
    300302                           && r.Visible
    301                          let key = selectedGroup == AllRuns ? AllRuns : r.Parameters[selectedGroup].ToString()
     303                         let key = selectedGroup == AllInstances ? AllInstances : r.Parameters[selectedGroup].ToString()
    302304                         group r by key into g
    303                          select Tuple.Create(g.Key, g.ToList()))) {
    304         var pDict = problems.ToDictionary(r => r, _ => new List<IRun>());
    305         foreach (var y in x.Item2) {
    306           var pd = new ProblemInstance(y);
    307           List<IRun> l;
    308           if (pDict.TryGetValue(pd, out l)) l.Add(y);
    309         }
    310         groupedRuns[x.Item1] = pDict.Where(a => a.Value.Count > 0).ToDictionary(a => a.Key, a => a.Value);
    311       }
    312 
    313       return groupedRuns;
     305                         select new AlgorithmInstance(g.Key, g, problems))) {
     306        yield return x;
     307      }
    314308    }
    315309
     
    326320      if (targets == null) GenerateDefaultTargets();
    327321
    328       var groupedRuns = GroupRuns();
    329       if (groupedRuns.Count == 0) return;
     322      var algInstances = GroupRuns().ToList();
     323      if (algInstances.Count == 0) return;
    330324
    331325      var xAxisTitles = new HashSet<string>();
     
    337331      // how many targets have been left open at the point when the run ended
    338332      var misses = new Dictionary<string, SortedList<double, int>>();
     333      var totalRuns = new Dictionary<string, int>();
    339334
    340335      var aggregate = aggregateTargetsCheckBox.Checked;
    341336      double minEff = double.MaxValue, maxEff = double.MinValue;
    342       var noRuns = 0;
    343       foreach (var group in groupedRuns) {
     337      foreach (var alg in algInstances) {
     338        var noRuns = 0;
    344339        SortedList<double, int> epdfHits = null, epdfMisses = null;
    345340        if (aggregate) {
    346           hits[group.Key] = epdfHits = new SortedList<double, int>();
    347           misses[group.Key] = epdfMisses = new SortedList<double, int>();
    348         }
    349         foreach (var problem in group.Value) {
    350           var max = problem.Key.IsMaximization();
    351           var absTargets = GetAbsoluteTargets(problem.Key).ToArray();
    352           foreach (var run in problem.Value) {
     341          hits[alg.Name] = epdfHits = new SortedList<double, int>();
     342          misses[alg.Name] = epdfMisses = new SortedList<double, int>();
     343        }
     344        foreach (var problem in alg.GetProblemInstances()) {
     345          var max = problem.IsMaximization();
     346          var absTargets = GetAbsoluteTargets(problem).ToArray();
     347          foreach (var run in alg.GetRuns(problem)) {
    353348            noRuns++;
    354349            var resultsTable = (IndexedDataTable<double>)run.Results[table];
     
    361356              var e = efforts[idx];
    362357              if (!aggregate) {
    363                 var key = group.Key + "@" + (targetsAreRelative
    364                   ? (targets[idx] * 100).ToString(CultureInfo.CurrentCulture.NumberFormat) + "%"
    365                   : targets[idx].ToString(CultureInfo.CurrentCulture.NumberFormat));
     358                var key = alg.Name + "@" + (targetsAreRelative
     359                            ? (targets[idx] * 100).ToString(CultureInfo.CurrentCulture.NumberFormat) + "%"
     360                            : targets[idx].ToString(CultureInfo.CurrentCulture.NumberFormat));
    366361                if (!hits.TryGetValue(key, out epdfHits))
    367362                  hits[key] = epdfHits = new SortedList<double, int>();
    368363                if (!misses.TryGetValue(key, out epdfMisses))
    369364                  misses[key] = epdfMisses = new SortedList<double, int>();
    370               }
     365                totalRuns[key] = noRuns;
     366              };
    371367              var list = e.Item1 ? epdfHits : epdfMisses;
    372368              int v;
     
    377373          }
    378374        }
     375        if (aggregate) totalRuns[alg.Name] = noRuns;
    379376      }
    380377
    381378      UpdateTargetChartAxisXBounds(minEff, maxEff);
    382379
    383       DrawTargetsEcdf(hits, misses, noRuns);
     380      DrawTargetsEcdf(hits, misses, totalRuns);
    384381
    385382      if (targets.Length == 1) {
     
    392389      targetChart.ChartAreas[0].CursorY.Interval = 0.05;
    393390
    394       UpdateErtTables(groupedRuns);
    395     }
    396 
    397     private void DrawTargetsEcdf(Dictionary<string, SortedList<double, int>> hits, Dictionary<string, SortedList<double, int>> misses, int noRuns) {
     391      UpdateErtTables(algInstances);
     392    }
     393
     394    private void DrawTargetsEcdf(Dictionary<string, SortedList<double, int>> hits, Dictionary<string, SortedList<double, int>> misses, Dictionary<string, int> noRuns) {
    398395      var colorCount = 0;
    399396      var lineStyleCount = 0;
     
    418415        var iter = misses[list.Key].GetEnumerator();
    419416        var moreMisses = iter.MoveNext();
    420         var totalTargets = noRuns;
     417        var totalTargets = noRuns[list.Key];
    421418        if (aggregateTargetsCheckBox.Checked) totalTargets *= targets.Length;
    422419        var movingTargets = totalTargets;
     
    594591    }
    595592
    596     private void UpdateErtTables(Dictionary<string, Dictionary<ProblemInstance, List<IRun>>> groupedRuns) {
     593    private void UpdateErtTables(List<AlgorithmInstance> algorithmInstances) {
    597594      ertTableView.Content = null;
    598595      var columns = 1 + targets.Length + 1;
    599       var matrix = new string[groupedRuns.Count * groupedRuns.Max(x => x.Value.Count) + groupedRuns.Max(x => x.Value.Count), columns];
     596      var matrix = new string[algorithmInstances.Count * algorithmInstances.Max(x => x.GetNumberOfProblemInstances()) + algorithmInstances.Max(x => x.GetNumberOfProblemInstances()), columns];
    600597      var rowCount = 0;
    601598
     
    603600      if (string.IsNullOrEmpty(tableName)) return;
    604601     
    605       var problems = groupedRuns.SelectMany(x => x.Value.Keys).Distinct().ToList();
     602      var problems = algorithmInstances.SelectMany(x => x.GetProblemInstances()).Distinct().ToList();
    606603
    607604      foreach (var problem in problems) {
     
    615612        rowCount++;
    616613
    617         foreach (var group in groupedRuns) {
    618           matrix[rowCount, 0] = group.Key;
    619           if (!group.Value.ContainsKey(problem)) {
     614        foreach (var alg in algorithmInstances) {
     615          matrix[rowCount, 0] = alg.Name;
     616          var runs = alg.GetRuns(problem).ToList();
     617          if (runs.Count == 0) {
    620618            matrix[rowCount, columns - 1] = "N/A";
    621619            rowCount++;
    622620            continue;
    623621          }
    624           var runs = group.Value[problem];
    625622          var result = default(ErtCalculationResult);
    626623          for (var i = 0; i < absTargets.Length; i++) {
     
    648645      if (budgets == null) GenerateDefaultBudgets(table);
    649646
    650       var groupedRuns = GroupRuns();
    651       if (groupedRuns.Count == 0) return;
     647      var algInstances = GroupRuns().ToList();
     648      if (algInstances.Count == 0) return;
    652649
    653650      var colorCount = 0;
    654651      var lineStyleCount = 0;
    655652     
    656       foreach (var group in groupedRuns) {
     653      foreach (var alg in algInstances) {
    657654        var hits = new Dictionary<string, SortedList<double, double>>();
    658655
    659         foreach (var problem in group.Value) {
    660           foreach (var run in problem.Value) {
     656        foreach (var problem in alg.GetProblemInstances()) {
     657          foreach (var run in alg.GetRuns(problem)) {
    661658            var resultsTable = (IndexedDataTable<double>)run.Results[table];
    662659
    663660            if (aggregateBudgetsCheckBox.Checked) {
    664               CalculateHitsForAllBudgets(hits, resultsTable.Rows.First(), group.Value.Count, problem.Key, group.Key, problem.Value.Count);
     661              CalculateHitsForAllBudgets(hits, resultsTable.Rows.First(), alg.GetNumberOfProblemInstances(), problem, alg.Name, alg.GetNumberOfRuns(problem));
    665662            } else {
    666               CalculateHitsForEachBudget(hits, resultsTable.Rows.First(), group.Value.Count, problem.Key, group.Key, problem.Value.Count);
     663              CalculateHitsForEachBudget(hits, resultsTable.Rows.First(), alg.GetNumberOfProblemInstances(), problem, alg.Name, alg.GetNumberOfRuns(problem));
    667664            }
    668665          }
     
    697694
    698695    private void GenerateDefaultBudgets(string table) {
    699       var runs = GroupRuns().SelectMany(x => x.Value.Values).SelectMany(x => x).ToList();
     696      var runs = Content;
    700697      var min = runs.Select(x => ((IndexedDataTable<double>)x.Results[table]).Rows.First().Values.Select(y => y.Item1).Min()).Min();
    701698      var max = runs.Select(x => ((IndexedDataTable<double>)x.Results[table]).Rows.First().Values.Select(y => y.Item1).Max()).Max();
     
    11721169    }
    11731170
     1171    private class AlgorithmInstance : INotifyPropertyChanged {
     1172      private string name;
     1173      public string Name {
     1174        get { return name; }
     1175        set {
     1176          if (name == value) return;
     1177          name = value;
     1178          OnPropertyChanged("Name");
     1179        }
     1180      }
     1181
     1182      private Dictionary<ProblemInstance, List<IRun>> performanceData;
     1183
     1184      public int GetNumberOfProblemInstances() {
     1185        return performanceData.Count;
     1186      }
     1187
     1188      public IEnumerable<ProblemInstance> GetProblemInstances() {
     1189        return performanceData.Keys;
     1190      }
     1191
     1192      public int GetNumberOfRuns(ProblemInstance p) {
     1193        if (p == ProblemInstance.MatchAll) return performanceData.Select(x => x.Value.Count).Sum();
     1194        List<IRun> runs;
     1195        if (performanceData.TryGetValue(p, out runs))
     1196          return runs.Count;
     1197
     1198        return 0;
     1199      }
     1200
     1201      public IEnumerable<IRun> GetRuns(ProblemInstance p) {
     1202        if (p == ProblemInstance.MatchAll) return performanceData.SelectMany(x => x.Value);
     1203        List<IRun> runs;
     1204        if (performanceData.TryGetValue(p, out runs))
     1205          return runs;
     1206
     1207        return Enumerable.Empty<IRun>();
     1208      }
     1209
     1210      public AlgorithmInstance(string name, IEnumerable<IRun> runs, IEnumerable<ProblemInstance> problems) {
     1211        this.name = name;
     1212
     1213        var pDict = problems.ToDictionary(r => r, _ => new List<IRun>());
     1214        foreach (var y in runs) {
     1215          var pd = new ProblemInstance(y);
     1216          List<IRun> l;
     1217          if (pDict.TryGetValue(pd, out l)) l.Add(y);
     1218        }
     1219        performanceData = pDict.Where(x => x.Value.Count > 0).ToDictionary(x => x.Key, x => x.Value);
     1220      }
     1221
     1222      public override bool Equals(object obj) {
     1223        var other = obj as AlgorithmInstance;
     1224        if (other == null) return false;
     1225        return name == other.name;
     1226      }
     1227
     1228      public override int GetHashCode() {
     1229        return name.GetHashCode();
     1230      }
     1231
     1232      public event PropertyChangedEventHandler PropertyChanged;
     1233      protected virtual void OnPropertyChanged(string propertyName = null) {
     1234        var handler = PropertyChanged;
     1235        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
     1236      }
     1237    }
     1238
    11741239    private class ProblemInstance : INotifyPropertyChanged {
    11751240      private readonly bool matchAll;
  • branches/symbreg-factors-2650/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs

    r14185 r14825  
    5252    }
    5353
    54     public ListView ItemsListView {
    55       get { return itemsListView; }
    56     }
     54    private int EmptyImageIndex { get { return 0; } }
     55    private int RunImageIndex { get { return 1; } }
    5756
    5857    public RunCollectionView() {
    5958      InitializeComponent();
    60       itemsGroupBox.Text = "Runs";
     59      UpdateGroupBoxText();
     60
     61      itemsListView.SmallImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Nothing);
     62      itemsListView.SmallImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Class);
     63
    6164      itemListViewItemMapping = new Dictionary<IRun, List<ListViewItem>>();
    6265      runCollectionModifiersListView.Evaluator = EvaluateModifications;
     
    8386    }
    8487    private void DeregisterItemEvents(IRun item) {
    85       item.ItemImageChanged -= new EventHandler(Item_ItemImageChanged);
    8688      item.ToStringChanged -= new EventHandler(Item_ToStringChanged);
    8789      item.PropertyChanged -= Item_PropertyChanged;
    8890    }
    8991    private void RegisterItemEvents(IRun item) {
    90       item.ItemImageChanged += new EventHandler(Item_ItemImageChanged);
    9192      item.ToStringChanged += new EventHandler(Item_ToStringChanged);
    9293      item.PropertyChanged += Item_PropertyChanged;
     
    116117      itemsListView.Items.Clear();
    117118      itemListViewItemMapping.Clear();
    118       RebuildImageList();
    119119      viewHost.Content = null;
     120
     121      UpdateGroupBoxText();
    120122
    121123      if (Content != null) {
     
    129131          runCollectionModifiersListView.Content = RunCollection.Modifiers;
    130132        }
     133
     134        ListViewItem[] items = new ListViewItem[Content.Count];
     135        int count = 0;
    131136        foreach (IRun item in Content) {
    132137          ListViewItem listViewItem = CreateListViewItem(item);
    133           AddListViewItem(listViewItem);
     138
    134139          if ((selectedName != null) && item.Name.Equals(selectedName))
    135140            listViewItem.Selected = true;
    136         }
     141          items[count] = listViewItem;
     142          count++;
     143        }
     144        itemsListView.Items.AddRange(items);
    137145        AdjustListViewColumnSizes();
    138146      } else {
     
    166174    }
    167175
    168     private ListViewItem CreateListViewItem(IRun item) {
     176    private static readonly string tooltipText = ItemAttribute.GetName(typeof(Run)) + ": " +
     177                                    ItemAttribute.GetDescription(typeof(Run));
     178    private ListViewItem CreateListViewItem(IRun run) {
    169179      ListViewItem listViewItem = new ListViewItem();
    170       if (item == null) {
     180      if (run == null) {
    171181        listViewItem.Text = "null";
    172         itemsListView.SmallImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.Nothing);
    173         listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
     182        listViewItem.ImageIndex = EmptyImageIndex;
     183        return listViewItem;
     184      }
     185
     186      listViewItem.Text = run.Name;
     187      listViewItem.ToolTipText = tooltipText;
     188      listViewItem.ImageIndex = RunImageIndex;
     189      listViewItem.Tag = run;
     190
     191      if (run.Visible) {
     192        listViewItem.Font = new Font(listViewItem.Font, FontStyle.Regular);
     193        listViewItem.ForeColor = run.Color;
    174194      } else {
    175         listViewItem.Text = item.ToString();
    176         listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription;
    177         itemsListView.SmallImageList.Images.Add(item.ItemImage);
    178         listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
    179         listViewItem.Tag = item;
    180 
    181         if (item.Visible) {
    182           listViewItem.Font = new Font(listViewItem.Font, FontStyle.Regular);
    183           listViewItem.ForeColor = item.Color;
    184         } else {
    185           listViewItem.Font = new Font(listViewItem.Font, FontStyle.Italic);
    186           listViewItem.ForeColor = Color.LightGray;
    187         }
    188       }
     195        listViewItem.Font = new Font(listViewItem.Font, FontStyle.Italic);
     196        listViewItem.ForeColor = Color.LightGray;
     197      }
     198
     199      if (!itemListViewItemMapping.ContainsKey(run)) {
     200        itemListViewItemMapping.Add(run, new List<ListViewItem>());
     201        RegisterItemEvents(run);
     202      }
     203      itemListViewItemMapping[run].Add(listViewItem);
     204
    189205      return listViewItem;
    190206    }
    191     private void AddListViewItem(ListViewItem listViewItem) {
    192       if (listViewItem == null) throw new ArgumentNullException();
    193       itemsListView.Items.Add(listViewItem);
    194       IRun run = listViewItem.Tag as IRun;
    195       if (run != null) {
    196         if (!itemListViewItemMapping.ContainsKey(run)) {
    197           itemListViewItemMapping.Add(run, new List<ListViewItem>());
    198           RegisterItemEvents(run);
    199         }
    200         itemListViewItemMapping[run].Add(listViewItem);
    201       }
    202     }
     207
    203208    private void RemoveListViewItem(ListViewItem listViewItem) {
    204209      if (listViewItem == null) throw new ArgumentNullException();
     
    213218      listViewItem.Remove();
    214219    }
    215     private void UpdateListViewItemImage(ListViewItem listViewItem) {
    216       if (listViewItem == null) throw new ArgumentNullException();
    217       IRun item = listViewItem.Tag as IRun;
    218       int i = listViewItem.ImageIndex;
    219       itemsListView.SmallImageList.Images[i] = item == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : item.ItemImage;
    220       listViewItem.ImageIndex = -1;
    221       listViewItem.ImageIndex = i;
    222     }
     220
    223221    private void UpdateListViewItemText(ListViewItem listViewItem) {
    224222      if (listViewItem == null) throw new ArgumentNullException();
     
    239237        return listViewItems == null ? Enumerable.Empty<ListViewItem>() : listViewItems;
    240238      }
     239    }
     240
     241    private void UpdateGroupBoxText() {
     242      if (Content == null || Content.Count == 0) itemsGroupBox.Text = "Runs";
     243      else itemsGroupBox.Text = @"Runs (" + Content.Count + @")";
    241244    }
    242245
     
    393396        RunCollection.UpdateOfRunsInProgress = true;
    394397        RunCollection.Modify();
    395       } finally {
     398      }
     399      finally {
    396400        ReadOnly = false;
    397401        RunCollection.UpdateOfRunsInProgress = false;
     
    406410        Invoke(new CollectionItemsChangedEventHandler<IRun>(Content_ItemsAdded), sender, e);
    407411      else {
    408         foreach (IRun item in e.Items)
    409           AddListViewItem(CreateListViewItem(item));
    410 
     412        var items = e.Items.Select(CreateListViewItem).ToArray();
     413        itemsListView.Items.AddRange(items);
    411414        AdjustListViewColumnSizes();
    412415        analyzeRunsToolStripDropDownButton.Enabled = itemsListView.Items.Count > 0;
    413416        clearButton.Enabled = itemsListView.Items.Count > 0 && !Content.IsReadOnly && !ReadOnly;
    414417        runCollectionConstraintCollectionView.ReadOnly = itemsListView.Items.Count == 0;
     418        UpdateGroupBoxText();
    415419      }
    416420    }
     
    425429          if (listViewItem != null) RemoveListViewItem(listViewItem);
    426430        }
    427         RebuildImageList();
    428431        analyzeRunsToolStripDropDownButton.Enabled = itemsListView.Items.Count > 0;
    429432        clearButton.Enabled = itemsListView.Items.Count > 0 && !Content.IsReadOnly && !ReadOnly;
    430433        runCollectionConstraintCollectionView.ReadOnly = itemsListView.Items.Count == 0;
     434        UpdateGroupBoxText();
    431435      }
    432436    }
     
    441445          if (listViewItem != null) RemoveListViewItem(listViewItem);
    442446        }
    443         RebuildImageList();
    444         foreach (IRun item in e.Items)
    445           AddListViewItem(CreateListViewItem(item));
     447        var items = e.Items.Select(CreateListViewItem).ToArray();
     448        itemsListView.Items.AddRange(items);
    446449
    447450        AdjustListViewColumnSizes();
     
    449452        clearButton.Enabled = itemsListView.Items.Count > 0 && !Content.IsReadOnly && !ReadOnly;
    450453        runCollectionConstraintCollectionView.ReadOnly = itemsListView.Items.Count == 0;
     454        UpdateGroupBoxText();
    451455      }
    452456    }
     
    456460        suppressUpdates = RunCollection.UpdateOfRunsInProgress;
    457461        if (!suppressUpdates) {
    458           foreach (IRun item in Content) {
    459             //remove only the first matching ListViewItem, because the IRun could be contained multiple times in the ItemCollection
    460             ListViewItem listViewItem = GetListViewItemsForItem(item).FirstOrDefault();
    461             if (listViewItem != null) RemoveListViewItem(listViewItem);
     462          foreach (IRun run in Content) {
     463            DeregisterItemEvents(run);
    462464          }
    463           RebuildImageList();
    464           foreach (IRun item in Content)
    465             AddListViewItem(CreateListViewItem(item));
     465          itemsListView.Items.Clear();
     466          itemListViewItemMapping.Clear();
     467          var items = Content.Select(CreateListViewItem).ToArray();
     468          itemsListView.Items.AddRange(items);
    466469
    467470          AdjustListViewColumnSizes();
     
    469472          clearButton.Enabled = itemsListView.Items.Count > 0 && !Content.IsReadOnly && !ReadOnly;
    470473          runCollectionConstraintCollectionView.ReadOnly = itemsListView.Items.Count == 0;
     474          UpdateGroupBoxText();
    471475        }
    472476      }
     
    475479
    476480    #region Item Events
    477     private void Item_ItemImageChanged(object sender, EventArgs e) {
    478       if (suppressUpdates) return;
    479       if (InvokeRequired)
    480         Invoke(new EventHandler(Item_ItemImageChanged), sender, e);
    481       else {
    482         IRun item = (IRun)sender;
    483         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
    484           UpdateListViewItemImage(listViewItem);
    485       }
    486     }
    487481    private void Item_ToStringChanged(object sender, EventArgs e) {
    488482      if (suppressUpdates) return;
     
    528522      }
    529523    }
    530     private void RebuildImageList() {
    531       itemsListView.SmallImageList.Images.Clear();
    532       foreach (ListViewItem listViewItem in itemsListView.Items) {
    533         IRun item = listViewItem.Tag as IRun;
    534         itemsListView.SmallImageList.Images.Add(item == null ? HeuristicLab.Common.Resources.VSImageLibrary.Nothing : item.ItemImage);
    535         listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
    536       }
    537     }
    538524    #endregion
    539525  }
  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Symbolic

  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Interpreter/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs

    r14715 r14825  
    260260              il.Emit(System.Reflection.Emit.OpCodes.Add);
    261261            }
    262             il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4, nArgs);
     262            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, (double)nArgs);
    263263            il.Emit(System.Reflection.Emit.OpCodes.Div);
    264264            return;
     
    458458            il.Emit(System.Reflection.Emit.OpCodes.Ldc_I4_0); // > 0
    459459            il.Emit(System.Reflection.Emit.OpCodes.Cgt);
     460            il.Emit(System.Reflection.Emit.OpCodes.Conv_R8); // convert to float64
    460461            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 2.0); // * 2
    461462            il.Emit(System.Reflection.Emit.OpCodes.Mul);
     
    476477              il.Emit(System.Reflection.Emit.OpCodes.Xor);
    477478            }
     479            il.Emit(System.Reflection.Emit.OpCodes.Conv_R8); // convert to float64
     480
    478481            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 2.0); // * 2
    479482            il.Emit(System.Reflection.Emit.OpCodes.Mul);
     
    487490
    488491            il.Emit(System.Reflection.Emit.OpCodes.Cgt); // 1 (>) / 0 (otherwise)
     492            il.Emit(System.Reflection.Emit.OpCodes.Conv_R8); // convert to float64
    489493            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 2.0); // * 2
    490494            il.Emit(System.Reflection.Emit.OpCodes.Mul);
     
    497501            CompileInstructions(il, state, ds);
    498502            il.Emit(System.Reflection.Emit.OpCodes.Clt);
     503            il.Emit(System.Reflection.Emit.OpCodes.Conv_R8); // convert to float64
    499504            il.Emit(System.Reflection.Emit.OpCodes.Ldc_R8, 2.0); // * 2
    500505            il.Emit(System.Reflection.Emit.OpCodes.Mul);
  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views

  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/HeuristicLab.Problems.DataAnalysis.Views-3.4.csproj

    r14542 r14825  
    215215    <Compile Include="Interfaces\IGradientChart.cs" />
    216216    <Compile Include="Interfaces\IDataPreprocessorStarter.cs" />
     217    <Compile Include="MenuItems\ChangeDataOfOptimizersMenuItem.cs" />
    217218    <Compile Include="MenuItems\ShrinkDataAnalysisRunsMenuItem.cs" />
    218219    <Compile Include="ModifiableDatasetView.cs">
  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/ConfidenceRegressionSolutionEstimatedValuesView.cs

    r14185 r14825  
    6161      foreach (var row in Enumerable.Range(0, Content.ProblemData.Dataset.Rows)) {
    6262        estimated_var.MoveNext();
    63         matrix[row, 7] = estimated_var.Current.ToString();
     63        matrix[row, 8] = estimated_var.Current.ToString();
    6464      }
    6565
    6666      foreach (var row in Content.ProblemData.TrainingIndices) {
    6767        estimated_var_training.MoveNext();
    68         matrix[row, 8] = estimated_var_training.Current.ToString();
     68        matrix[row, 9] = estimated_var_training.Current.ToString();
    6969      }
    7070
    7171      foreach (var row in Content.ProblemData.TestIndices) {
    7272        estimated_var_test.MoveNext();
    73         matrix[row, 9] = estimated_var_test.Current.ToString();
     73        matrix[row, 10] = estimated_var_test.Current.ToString();
    7474      }
    7575
  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Regression/RegressionSolutionEstimatedValuesView.cs

    r14185 r14825  
    8181
    8282    protected virtual StringMatrix CreateValueMatrix() {
    83       string[,] values = new string[Content.ProblemData.Dataset.Rows, 7];
     83      string[,] values = new string[Content.ProblemData.Dataset.Rows, 8];
    8484
    8585      double[] target = Content.ProblemData.Dataset.GetDoubleValues(Content.ProblemData.TargetVariable).ToArray();
     
    101101        estimated.MoveNext();
    102102        double est = estimated.Current;
    103         double res = Math.Abs(est - target[row]);
     103        double res = target[row] - est;
    104104        values[row, 0] = row.ToString();
    105105        values[row, 1] = target[row].ToString();
    106106        values[row, 2] = est.ToString();
    107         values[row, 5] = Math.Abs(res).ToString();
    108         values[row, 6] = Math.Abs(res / target[row]).ToString();
     107        values[row, 5] = res.ToString();
     108        values[row, 6] = Math.Abs(res).ToString();
     109        values[row, 7] = Math.Abs(res / target[row]).ToString();
    109110      }
    110111
    111112      var matrix = new StringMatrix(values);
    112       matrix.ColumnNames = new string[] { "Id", TARGETVARIABLE_SERIES_NAME, ESTIMATEDVALUES_SERIES_NAME, ESTIMATEDVALUES_TRAINING_SERIES_NAME, ESTIMATEDVALUES_TEST_SERIES_NAME, "Absolute Error (all)", "Relative Error (all)" };
     113      matrix.ColumnNames = new string[] { "Id", TARGETVARIABLE_SERIES_NAME, ESTIMATEDVALUES_SERIES_NAME, ESTIMATEDVALUES_TRAINING_SERIES_NAME, ESTIMATEDVALUES_TEST_SERIES_NAME, "Residuals (all)", "Absolute Error (all)", "Relative Error (all)" };
    113114      matrix.SortableView = true;
    114115      return matrix;
  • branches/symbreg-factors-2650/HeuristicLab.Problems.DataAnalysis.Views/3.4/Solution Views/DataAnalysisSolutionView.cs

    r14185 r14825  
    2929using HeuristicLab.MainForm;
    3030using HeuristicLab.Optimization;
    31 using HeuristicLab.Optimization.Views;
    3231using HeuristicLab.Persistence.Default.Xml;
    3332using HeuristicLab.PluginInfrastructure;
     
    9796    }
    9897
    99     protected override void itemsListView_DoubleClick(object sender, EventArgs e) {
     98    protected sealed override void itemsListView_DoubleClick(object sender, EventArgs e) {
    10099      if (itemsListView.SelectedItems.Count != 1) return;
    101100
     
    103102      Type viewType = itemsListView.SelectedItems[0].Tag as Type;
    104103      if (result != null) {
    105         IContentView view = MainFormManager.MainForm.ShowContent(result, typeof(ResultView));
     104        IContentView view = MainFormManager.MainForm.ShowContent(result.Value);
    106105        if (view != null) {
     106          view.Caption = result.Name;
    107107          view.ReadOnly = ReadOnly;
    108108          view.Locked = Locked;
  • branches/symbreg-factors-2650/HeuristicLab.Problems.Instances.DataAnalysis

  • branches/symbreg-factors-2650/HeuristicLab.Problems.Instances.DataAnalysis/3.3/HeuristicLab.Problems.Instances.DataAnalysis-3.3.csproj

    r14751 r14825  
    157157    <Compile Include="Regression\FeatureSelection\FeatureSelection.cs" />
    158158    <Compile Include="Regression\FeatureSelection\FeatureSelectionInstanceProvider.cs" />
     159    <Compile Include="Regression\MibaFriction\CF3.cs" />
     160    <Compile Include="Regression\MibaFriction\Wear1.cs" />
     161    <Compile Include="Regression\MibaFriction\Wear2.cs" />
     162    <Compile Include="Regression\MibaFriction\Temp2.cs" />
     163    <Compile Include="Regression\MibaFriction\Temp1.cs" />
     164    <Compile Include="Regression\MibaFriction\NvhRating.cs" />
     165    <Compile Include="Regression\MibaFriction\CF4.cs" />
     166    <Compile Include="Regression\MibaFriction\CF2.cs" />
     167    <Compile Include="Regression\MibaFriction\CF1.cs" />
     168    <Compile Include="Regression\MibaFriction\MibaFrictionRegressionInstanceProvider.cs" />
    159169    <Compile Include="Regression\VariableNetworks\LinearVariableNetwork.cs" />
    160170    <Compile Include="Regression\VariableNetworks\GaussianProcessVariableNetwork.cs" />
     
    246256    <None Include="Properties\AssemblyInfo.cs.frame" />
    247257    <EmbeddedResource Include="Regression\Data\RegressionRealWorld.zip" />
     258    <EmbeddedResource Include="Regression\Data\MibaFriction.zip" />
    248259  </ItemGroup>
    249260  <ItemGroup>
  • branches/symbreg-factors-2650/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/clients/clients.cshtml

    r12780 r14825  
    3333                </div>
    3434                <div class="panel-body">
    35                     <table class="table table-hover table-condensed">
     35                    <table class="table table-hover table-condensed" ts-wrapper>
    3636                        <thead>
    3737                        <tr>
    3838                            <th>#</th>
    39                             <th>Client Name</th>
    40                             <th>Group Name</th>
    41                             <th>Cores</th>
    42                             <th>Cpu Utilization</th>
    43                             <th>Memory</th>
    44                             <th>State</th>
     39                            <th ts-criteria="Name">Client Name</th>
     40                            <th ts-criteria="GroupName">Group Name</th>
     41                            <th ts-criteria="UsedCores">Cores</th>
     42                            <th ts-criteria="CpuUtilization">Cpu Utilization</th>
     43                            <th ts-criteria="UsedMemory">Memory</th>
     44                            <th ts-criteria="State">State</th>
    4545                            <th></th>
    4646                        </tr>
    4747                        </thead>
    48                         <tr ng-repeat="client in clientPage.Clients">
     48                        <tr ng-repeat="client in clientPage.Clients" ts-repeat>
    4949                            <td>{{($index + 1)+((curClientsPage-1)*(clientsPageSize))}}</td>
    5050                            <td>{{client.Name}}</td>
     
    8181                </div>
    8282                <div class="panel-body">
    83                     <table class="table table-hover table-condensed">
     83                    <table class="table table-hover table-condensed" ts-wrapper>
    8484                        <thead>
    8585                            <tr>
    8686                                <th>#</th>
    87                                 <th>Client Name</th>
    88                                 <th>Group Name</th>
    89                                 <th>Cores</th>
    90                                 <th>Cpu Utilization</th>
    91                                 <th>Memory</th>
    92                                 <th>State</th>
     87                                <th ts-criteria="Name">Client Name</th>
     88                                <th ts-criteria="GroupName">Group Name</th>
     89                                <th ts-criteria="UsedCores">Cores</th>
     90                                <th ts-criteria="CpuUtilization">Cpu Utilization</th>
     91                                <th ts-criteria="UsedMemory">Memory</th>
     92                                <th ts-criteria="State">State</th>
    9393                                <th></th>
    9494                            </tr>
    9595                        </thead>
    96                         <tr ng-repeat="client in expiredClientPage.Clients">
     96                        <tr ng-repeat="client in expiredClientPage.Clients" ts-repeat>
    9797                            <td>{{($index + 1)+((curExpiredClientsPage-1)*(expiredClientsPageSize))}}</td>
    9898                            <td>{{client.Name}}</td>
  • branches/symbreg-factors-2650/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/exceptions/exceptions.cshtml

    r12778 r14825  
    3030                </div>
    3131                <div class="panel-body">
    32                     <table class="table table-hover table-condensed">
     32                    <table class="table table-hover table-condensed" ts-wrapper>
    3333                        <thead>
    3434                        <tr>
    3535                            <th>#</th>
    36                             <th>Job</th>
    37                             <th>Task</th>
    38                             <th>Username</th>
    39                             <th>Client</th>
    40                             <th>Date</th>
     36                            <th ts-criteria="JobName">Job</th>
     37                            <th ts-criteria="TaskId">Task</th>
     38                            <th ts-criteria="UserName">Username</th>
     39                            <th ts-criteria="ClientName">Client</th>
     40                            <th ts-criteria="Date">Date</th>
    4141                            <th></th>
    4242                        </tr>
    4343                        </thead>
    44                         <tr ng-repeat="exception in exceptionPage.Exceptions">
     44                        <tr ng-repeat="exception in exceptionPage.Exceptions" ts-repeat>
    4545                            <td>{{($index + 1)+((curExceptionsPage-1)*(exceptionsPageSize))}}</td>
    4646                            <td><a ng-href="#/statistics/jobs/{{exception.JobId}}">{{exception.JobName}}</a></td>
  • branches/symbreg-factors-2650/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/groups/groups.cshtml

    r12551 r14825  
    3333                </div>
    3434                <div class="panel-body">
    35                     <table class="table table-hover table-condensed">
     35                    <table class="table table-hover table-condensed" ts-wrapper>
    3636                        <thead>
    3737                        <tr>
    3838                            <th>#</th>
    39                             <th>Group Name</th>
    40                             <th>Cores</th>
    41                             <th>Cpu Utilization</th>
    42                             <th>Memory</th>
    43                             <th>Clients</th>
     39                            <th ts-criteria="Name">Group Name</th>
     40                            <th ts-criteria="UsedCores">Cores</th>
     41                            <th ts-criteria="CpuUtilization">Cpu Utilization</th>
     42                            <th ts-criteria="UsedMemory">Memory</th>
     43                            <th ts-criteria="OnlineClients">Clients</th>
    4444                            <th></th>
    4545                        </tr>
    4646                        </thead>
    47                         <tr ng-repeat="group in groupPage.Groups">
     47                        <tr ng-repeat="group in groupPage.Groups" ts-repeat>
    4848                            <td>{{($index + 1)+((curGroupsPage-1)*(groupsPageSize))}}</td>
    4949                            <td>{{group.Name}}</td>
  • branches/symbreg-factors-2650/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/jobs/jobs.cshtml

    r12778 r14825  
    3333                </div>
    3434                <div class="panel-body">
    35                     <table class="table table-hover table-condensed">
     35                    <table class="table table-hover table-condensed" ts-wrapper>
    3636                        <thead>
    3737                        <tr>
    3838                            <th>#</th>
    39                             <th>Job Name</th>
     39                            <th ts-criteria="Name">Job Name</th>
    4040                            @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
    41                                 <th>Username</th>
     41                                <th ts-criteria="UserName">Username</th>
    4242                            }
    43                             <th>Date Created</th>
     43                            <th ts-criteria="DateCreated">Date Created</th>
    4444                            <th>Progress</th>
    4545                            <th></th>
     
    4747                        </thead>
    4848                        @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
    49                             <tr ng-repeat="job in allUsersJobs">
     49                            <tr ng-repeat="job in allUsersJobs" ts-repeat>
    5050                                <td>{{$index + 1}}</td>
    5151                                <td>{{job.Name}}</td>
     
    9393                </div>
    9494                <div class="panel-body">
    95                     <table class="table table-hover table-condensed">
     95                    <table class="table table-hover table-condensed" ts-wrapper>
    9696                        <thead>
    9797                        <tr>
    9898                            <th>#</th>
    99                             <th>Job Name</th>
    100                             <th>Date Created</th>
    101                             <th>Date Completed</th>
    102                             <th>Tasks</th>
     99                            <th ts-criteria="Name">Job Name</th>
     100                            <th ts-criteria="DateCreated">Date Created</th>
     101                            <th ts-criteria="DateCompleted">Date Completed</th>
     102                            <th ts-criteria="TotalTasks|parseInt">Tasks</th>
    103103                            <th></th>
    104104                        </tr>
    105105                        </thead>
    106                         <tr ng-repeat="job in completedJobPage.Jobs">
     106                        <tr ng-repeat="job in completedJobPage.Jobs" ts-repeat>
    107107                            <td>{{($index + 1)+((completedJobCurPage-1)*(completedJobPageSize))}}</td>
    108108                            <td>{{job.Name}}</td>
  • branches/symbreg-factors-2650/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/users/users.cshtml

    r12584 r14825  
    3030                </div>
    3131                <div class="panel-body">
    32                     <table class="table table-hover table-condensed">
     32                    <table class="table table-hover table-condensed" ts-wrapper>
    3333                        <thead>
    3434                            <tr>
    3535                                <th>#</th>
    36                                 <th>Username</th>
     36                                <th ts-criteria="Name">Username</th>
    3737                                <th></th>
    3838                            </tr>
    3939                        </thead>
    40                         <tr ng-repeat="user in users">
     40                        <tr ng-repeat="user in users" ts-repeat>
    4141                            <td>{{$index + 1}}</td>
    4242                            <td>{{user.Name}}</td>
  • branches/symbreg-factors-2650/HeuristicLab.Services.WebApp.Statistics/3.3/statistics.js

    r12560 r14825  
    22(function () {
    33    var plugin = appStatisticsPlugin;
    4     plugin.dependencies = ['ngResource', 'ui.knob', 'ui.bootstrap', 'ngFitText'];
     4    plugin.dependencies = ['ngResource', 'ui.knob', 'ui.bootstrap', 'ngFitText', 'tableSort'];
    55    plugin.files = [
    66        'WebApp/statistics.css',
  • branches/symbreg-factors-2650/HeuristicLab.Tests

  • branches/symbreg-factors-2650/HeuristicLab.Tests/HeuristicLab-3.3/Samples/GaussianProcessRegressionSampleTest.cs

    r14185 r14825  
    5050      gpr.Seed = 1618551877;
    5151      SamplesUtils.RunAlgorithm(gpr);
    52       Assert.AreEqual(-940.39914958616748, SamplesUtils.GetDoubleResult(gpr, "NegativeLogLikelihood"));
    53       Assert.AreEqual(0.995614091354263, SamplesUtils.GetDoubleResult(gpr, "Training R²"));
     52      Assert.AreEqual(-940.60591737780555, SamplesUtils.GetDoubleResult(gpr, "NegativeLogLikelihood"));
     53      Assert.AreEqual(0.99560909041069334, SamplesUtils.GetDoubleResult(gpr, "Training R²"));
    5454    }
    5555
  • branches/symbreg-factors-2650/HeuristicLab.Tests/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4/SymbolicDataAnalysisExpressionTreeInterpreterTest.cs

    r14185 r14825  
    182182    }
    183183
     184    /// <summary>
     185    ///A test for Evaluate
     186    ///</summary>
     187    [TestMethod]
     188    [TestCategory("Problems.DataAnalysis.Symbolic")]
     189    [TestProperty("Time", "short")]
     190    public void ILEmittingInterpreterTestEvaluation() {
     191      var interpreter = new SymbolicDataAnalysisExpressionTreeILEmittingInterpreter();
     192      EvaluateTerminals(interpreter, ds);
     193      EvaluateOperations(interpreter, ds);
     194      EvaluateLaggedOperations(interpreter, ds);
     195      EvaluateSpecialFunctions(interpreter, ds);
     196    }
     197
    184198    [TestMethod]
    185199    [TestCategory("Problems.DataAnalysis.Symbolic")]
     
    187201    public void CompiledInterpreterTestEvaluation() {
    188202      var interpreter = new SymbolicDataAnalysisExpressionCompiledTreeInterpreter();
    189       // ADFs are not supported by the compiled tree interpreter
    190203      EvaluateTerminals(interpreter, ds);
    191204      EvaluateOperations(interpreter, ds);
     
    410423        try {
    411424          Evaluate(interpreter, ds, "(psi " + x + ")", 0, alglib.psi(x));
    412         }
    413         catch (alglib.alglibexception) { // ignore cases where alglib throws an exception
     425        } catch (alglib.alglibexception) { // ignore cases where alglib throws an exception
    414426        }
    415427      };
Note: See TracChangeset for help on using the changeset viewer.