Opened 3 years ago

Last modified 2 years ago

#2921 assigned enhancement

Results aggregation view for run collections

Reported by: bburlacu Owned by: bburlacu
Priority: medium Milestone:
Component: Operators.Views Version: trunk
Keywords: Cc:


When publishing results it is often necessary to aggregate different experimental measurements (solution quality, number of evaluations, execution time, etc) and provide different statistics. It would be therefore useful to be able to aggregate these results in tabular form, including different statistical indicators (median, mean, stdev) and the possibility to group them by different criteria.

Change History (3)

comment:1 Changed 3 years ago by bburlacu

  • Status changed from new to accepted

r15940: Implement result aggregation view.

comment:2 Changed 3 years ago by bburlacu

  • Owner changed from bburlacu to pfleck
  • Status changed from accepted to reviewing

comment:3 Changed 2 years ago by pfleck

  • Owner changed from pfleck to bburlacu
  • Status changed from reviewing to assigned

Initially, I did not find the view - the files exist but are not added to the .csproj file.

The functionality is quite handy and I can imagine using it when reporting results, but the implementation is not yet "production ready".


  • Group by
    • Group-by comboboxes should not allow text input. Use DropDownStyle.DropDownList instead.
    • There should results even if not grouping is selected, just aggregate over all the runs.
    • There should be an "unselect" option for group-by, e.g. an empty first row to unselect the grouping.
    • The list of group-by comboboxes should be dynamically, i.e. if the first criterion was selected, the seconds appears; if the second is also selected, a third appears. If if a middle group-by is unselected, the other ones should move up instead.
  • Statistics
    • The "Show" group-box should be named "Statistics".
    • The order of the statistics is strange. Maybe we can use a similar order as the preprocessing: Min, Max, Median, Average, StdDev, Variance, 25th Percentile, 75th Percentile, Most Common Value
  • Group "similar" statistics.
    • What does similar mean? Maybe we can come up with a better description or could use a tooltip.
    • Checking the checkbox and changing the statistics orresults causes the "statistics grouping" gets lost.
  • "Transpose matrix" should be renamed in "Transpose results" or simply "Transpose".
  • Layout
    • The left "configuration" and right "results" part of the view should be placed in a splitpanel in order to allow the user to adjust the size.
    • The control margins are inconsistent.
      • Right margin of the group-by textboxes, compared to the "Show" and "Results" list.
      • The bottom margin of the "Results" behaves strange, i.e. it flickers for me. Maybe this is the result because it is anchored at bottom and autosize is true.


  • Add the files to the .csproj.
  • License headers are missing.
  • Put class into HeuristicLab.Optimization.Views namespace.
  • Is it possible to use ItemView instead of AsynchronousContentView as base class?
  • OnContentChanged
    • Check if Content == null.
    • First line, the results are not used.
    • Put base-call on top of the method.
  • Implement Register/UnregisterContentEvents to keep the results up-to-date if the Runs are added/removed. (You could use RunCollectionChartAggregationView as a reference)
  • GetCompatibleResults
    • Will potentially throw an Exception if RunCollection is empty.
    • The method assumes that all Runs in the RunCollection have the same variables and types. This could potentially result in an error if this is not the case.
  • AggregateResults
    • This method is very long and does different things. Please refactor it into smaller methods that are easier to understand.
    • Do not explicitly throw an Exception. If necessary, throw a more specific Exception.
  • Transpose could potentially be simplified as matrix.CloneAsMatrix().Transpose().
  • IsCompatible, GetValues
    • Checking for PercentValue is not necessary since it already is a DoubleValue.
  • Event Handlers
    • aggregateByComboBox_SelectedIndexChanged is not bound to any event.
    • Why are some event handlers wrapped with a BeginInvoke? If cross-threading is really an issue, use InvokeRequired and Invoke instead.
    • orderByStatisticCheckbox_CheckedChanged: The code for changing the order based on whether to sort by result name or statistic should be done in the AggregateResults method (or in on of the method it calls).
  • Please name all the controls (e.g. the resultsGroupBox has a name, the statistics groupbox is only named groupBox1.
Note: See TracTickets for help on using tickets.