Ticket #1763 (assigned feature request)
Support changing of constants and variable weights in the simplifier for symbolic data analysis models
| Reported by: | bburlacu | Owned by: | bburlacu |
|---|---|---|---|
| Priority: | medium | Milestone: | HeuristicLab 3.3.x Backlog |
| Component: | Problems.DataAnalysis.Symbolic.Views | Version: | 3.3.7 |
| Keywords: | Cc: |
Description (last modified by bburlacu) (diff)
The SymbolicDataAnalysisExpressionTreeSimplifier should offer users the possibility of interactively changing constant values or variable weights.
Additionally, the tree model in the simplifier view should support the following operations:
- inserting an intermediate symbol between two nodes (ideally by selection or drag&drop from the available grammar)
- removing nodes/sub-trees (removing intermediate symbols or whole branches)
- "moving" nodes/sub-trees (manual simplification/collapsing or just some kind of copy/paste operation)
Change History
comment:2 Changed 16 months ago by bburlacu
- Status changed from new to accepted
r7388: Added a new context option for leaf nodes (ConstantTreeNode or VariableTreeNode) to change the value or variable weight respectively.
- Added new dialog: SymbolicExpressionTreeNodeChangeValueDialog
- Added new SymbolicExpressionTreeNodeChanged event and handler
- Changed the double click behavior to account for node value/weight changes
Overall the behavior has been slightly changed: if a node was folded(replaced by a ConstantTreeNode), then it is possible to change its value via the context menu. For all changed nodes the original value is kept in a dictionary, so the first double click will restore it. After that, a second double click will unfold the node.
comment:3 Changed 16 months ago by bburlacu
- Owner changed from bburlacu to mkommend
- Status changed from accepted to reviewing
comment:4 Changed 16 months ago by bburlacu
r7411: Improved ValueChangeDialog and overall behavior. Implemented pruning operation on background thread. TODO: Test, improve. This is a work-in-progress.
comment:5 Changed 16 months ago by bburlacu
r7422: The simplifier view now uses a clone of the current model, on which the actual simplification or tree pruning is applied. This fixes a crash when the user clicks on the Symbolic Regression Model while the background thread is pruning the tree (because it was trying to display the tree while it was being changed). Also took out the display part from the CalculateReplacementNodesAndNodeImpacts method and put it in a separate method.
comment:6 Changed 16 months ago by gkronber
- Summary changed from Improve SymbolicDataAnalysisExpressionTreeSimplifier to Support changing of constants and variable weights in the simplifier for symbolic data analysis models
comment:7 Changed 13 months ago by bburlacu
- Owner changed from mkommend to bburlacu
- Status changed from reviewing to assigned
- Description modified (diff)
comment:8 Changed 13 months ago by bburlacu
r7784: Moved replacement and impact values calculation code from view to separate files. Implemented simplifier actions: copy, cut, delete, insert node/subtree.
comment:9 Changed 11 months ago by gkronber
In this ticket there are no commits on the trunk. Should we move it to milestone 3.3.8?
comment:10 Changed 11 months ago by gkronber
- Owner changed from bburlacu to mkommend
- Status changed from assigned to reviewing
comment:11 Changed 11 months ago by mkommend
- Milestone changed from HeuristicLab 3.3.7 to HeuristicLab 3.3.8
comment:13 Changed 10 months ago by mkommend
- Owner changed from mkommend to bburlacu
- Status changed from reviewing to assigned
comment:14 Changed 10 months ago by bburlacu
- Owner changed from bburlacu to mkommend
- Status changed from assigned to reviewing
r8388: Rebranched the TreeSimplifier project to fix merging errors. Added functionality to insert symbols into the tree, fixed bug when deleting tree nodes.
comment:15 Changed 10 months ago by mkommend
r8390: Removed outdated branch HeuristicLab.TreeSimplifierView.
comment:16 Changed 10 months ago by mkommend
r8391: Removed unnecessary Plugin.cs files from repository.
comment:17 Changed 10 months ago by mkommend
r8392: Merged trunk changes into HeuristicLab.TreeSimplifier branch.
comment:18 Changed 10 months ago by mkommend
r8395: Removed unnecessary PreBuildEvent.cmd in projects.
comment:19 Changed 10 months ago by mkommend
- Owner changed from mkommend to bburlacu
- Status changed from reviewing to assigned
comment:20 Changed 6 months ago by mkommend
r8915: merged changes from trunk into the simplifier branch.
comment:21 Changed 6 months ago by bburlacu
r8916: Added HeuristicLab.Problems.DataAnalysis.Symbolic.Classification.Views and HeuristicLab.Problems.DataAnalysis.Symbolic.Regression.Views to the branch. Removed prune button, minor functionality improvements.
comment:22 Changed 6 months ago by mkommend
Review Comments:
- The view flickers when the tree is modified.
- Changing the variable / constant value does only react on enter (missing validated logic).
- Changing the variable does only react on enter.
- Remove the closing cross (upper right corner of the dialog) and add an OK and Cancel button.
- Delete node results in an exception if the tree consists only of one node.
- Add license header to all created source files
- TreeEditDialogs
- Do not use _ as prefix for private members
- Remove properties which just change the name of a member (e.g., NewValueTextBox, Caption)
- Do not call events directly. Always add OnEvent methods which include a null check before the event is called.
- Use OnEventName methods for event firing instead of registering to an event
- Use designer file for control configuration as much as possible (e.g., InteractiveSymbolicExpressionTreeChart context menu strip is configured in the ctor).
- Get rid of DisableTreeEditingMenuItems in InteractiveSymbolicExpressionTreeChart (just do not open den context menu if no entries should be displayed).
- Use using blocks for dialogs (e.g., using(var dialog = new Dialog())) for automatic disposing of allocated resources.
- Implement / remove TODO entries and commented code.
- Prepare the SymbolicExpressionTreeChart consistently for sub-classing.
- Refactor impact value calculation.
comment:23 Changed 6 months ago by bburlacu
- Owner changed from bburlacu to mkommend
- Status changed from assigned to reviewing
r8935: Bugfixes and refactoring as suggested in the comments above.
comment:24 Changed 6 months ago by mkommend
r8937: Merged recent trunk changes into the branch.
comment:25 Changed 6 months ago by mkommend
r8942: Merged changes from TreeSimplifier branch to Encodings.symbolicExpressionTreeEncoding.Views.
comment:26 Changed 6 months ago by mkommend
r8946: Merged remaining changes from the TreeSimplifier branch in the trunk and refactored impact values calculators.
comment:27 Changed 6 months ago by mkommend
- Owner changed from mkommend to bburlacu
- Status changed from reviewing to assigned
comment:28 Changed 6 months ago by mkommend
r8947: Deleted obsolete tree node change dialog.
comment:29 Changed 6 months ago by mkommend
comment:30 Changed 6 months ago by mkommend
r8960: Removed scaling in SymbolicRegressionSolutionImpactValuesCalculator as this does does not have any effect as long as the impact is calculated on the basis of the R².
comment:32 Changed 6 months ago by bburlacu
r8980: Refactored the tree simplifier. Improved tree/node edit operations.
comment:33 Changed 6 months ago by bburlacu
- Owner changed from bburlacu to mkommend
- Status changed from assigned to reviewing
r8981: Forgot to set DialogResult in the InsertNodeDialog, fixed two omissions in the InteractiveSymbolicExpressionTreeChart.
comment:34 Changed 6 months ago by bburlacu
r8986: Surrounded disposable graphics objects with using blocks.
comment:35 Changed 6 months ago by mkommend
r8990: Minor improvements and code simplification in symbolic data analysis simplifier.
comment:36 Changed 6 months ago by bburlacu
r8991: Fixed bug when displaying an invalid tree. Simplified operation set and renamed actions (delete -> remove, edit -> change).
comment:37 Changed 6 months ago by bburlacu
r9006: Refactored the tree simplifier again: moved tree editing functionality into the view, fixed minor display bugs.
comment:38 Changed 5 months ago by mkommend
- Owner changed from mkommend to bburlacu
- Status changed from reviewing to assigned
comment:39 Changed 5 months ago by bburlacu
r9043: Fixed tree chart visual node coloring issues and some corner-case tree editing bugs.
comment:40 Changed 5 months ago by bburlacu
r9046: Removed branch since the changes have already been integrated into the trunk.
comment:41 Changed 5 months ago by bburlacu
r9052: Very minor change in the CalculateImpactValue method for symbolic regression (renamed internal variable).
comment:42 Changed 5 months ago by mkommend
r9055: Minor refactoring in tree simplifier and according views. Additionally model updates are displayed in the according views.
comment:43 Changed 5 months ago by bburlacu
r9056: Disabled paste option when attempting to cut/paste a subtree into itself.
comment:44 Changed 5 months ago by bburlacu
r9057: Fixed bug in subtree cut/paste introduced with previous commit, simplified code.
comment:45 Changed 5 months ago by mkommend
- Owner changed from bburlacu to mkommend
- Status changed from assigned to reviewing
comment:46 Changed 5 months ago by mkommend
- Owner changed from mkommend to bburlacu
- Status changed from reviewing to readytorelease
comment:47 Changed 2 weeks ago by bburlacu
- Status changed from readytorelease to assigned
- Milestone changed from HeuristicLab 3.3.8 to HeuristicLab 3.3.x Backlog
r9445: We found a bug in the InteractiveSymbolicDataAnalysisSolutionSimplifierView: when the user removes one of the linear scaling nodes from the tree (using the new tree editing functionality) then clicks optimize, an exception is raised by the constants optimizer.
We removed the tree editing functionality from the trunk, to be added again and fixed after the release.

r7361: Updated project references, added build and solution files.