Opened 2 years ago

Last modified 2 months ago

#2971 accepted feature request

Intervals for RegressionProblemData/SymbolicRegressionSolution

Reported by: chaider Owned by: chaider
Priority: medium Milestone: HeuristicLab 3.3.17
Component: Problems.DataAnalysis Version: trunk
Keywords: Cc:

Description (last modified by chaider)

  • Create a new view NamedIntervalView to represent the intervals
  • Add Intervals to InteractiveSymbolicDataAnalysisSolutionSimplifierView ==> shows calculated intervals for each node

ProblemData:

  • Add a new parameter to RegressionProblemData, which shows the variable ranges of the model
  • Allows to edit the boundaries of input parameters

Solution:

  • Add a new parameter to SymbolicRegressionSolution, which shows the derivates of the model within the NamedIntervalView

Change History (208)

comment:1 Changed 2 years ago by chaider

r16368 added new branch

comment:2 Changed 2 years ago by chaider

r16369 Added Problems.DataAnalysis

comment:3 Changed 2 years ago by chaider

r16370 Added Data

comment:4 Changed 2 years ago by chaider

r16371 Added Data.Views

comment:5 Changed 2 years ago by chaider

r16372

  • Added references to projects
  • Added build events

comment:6 Changed 2 years ago by gkronber

#1299 is related

comment:7 Changed 2 years ago by chaider

r16412 merged trunk into branch

comment:8 Changed 2 years ago by chaider

r16413

  • Added parameter VariableRanges to RegressionProblemData
  • Added VariableRanges class
  • Added View class for VariableRanges

comment:9 Changed 2 years ago by chaider

r16414 Added merge properties

comment:10 Changed 2 years ago by chaider

r16424 removed HeuristicLab.Data from branch

comment:11 Changed 2 years ago by chaider

r16426

  • Added NamedIntervals class
  • Set NamedIntervals Parameter in RegressionProblemData

comment:12 Changed 23 months ago by chaider

r16534 changed structure for NamedIntervals

comment:13 Changed 23 months ago by chaider

r16535 Added Problems.DataAnalysis.Views

comment:14 Changed 23 months ago by chaider

r16536 merged DataAnalysis.Views from trunk to branch

comment:15 Changed 22 months ago by chaider

r16544

  • Added editorconfig
  • Added Getter for intervals in NamedIntervals class
  • Changed GridView to show starting values of dataset

comment:16 Changed 22 months ago by chaider

  • Description modified (diff)
  • Summary changed from Add a new parameter to RegressionProblemData/SymbolicRegressionSolution, which shows variable ranges as intervals to Intervals for RegressionProblemData/SymbolicRegressionSolution

comment:17 Changed 22 months ago by chaider

r16545

  • Added ReadOnly field to NamedIntervals
  • Changes at cell validation of NamedIntervalsView
  • Added save on value changed
Last edited 22 months ago by chaider (previous) (diff)

comment:18 Changed 22 months ago by chaider

r16546 Added Problems.DataAnalysis.Symbolic.Views to branch

comment:19 Changed 22 months ago by chaider

r16547 Added serialization to Interval class

comment:20 Changed 22 months ago by chaider

r16548

  • Removed Storable from Intervals
  • Changed copy constructor from NamedIntervals class

comment:21 Changed 22 months ago by chaider

r16549 Added interval ranges to InteractiveSymbolicDataAnalysisSolutionSimplifierView

comment:22 Changed 22 months ago by chaider

r16556 Added derivates of intervals as result collection to solution view

comment:23 Changed 22 months ago by chaider

r16581

  • Check if treeNode exists for specific intervals in SimplifierView
  • GridView fills space in NamedIntevalsView

comment:24 Changed 22 months ago by chaider

r16586 Added IntervalConstraint Parameter and some fixes

comment:25 Changed 22 months ago by chaider

r16587

  • Added TextValueView
  • Added IntervalConstraint Parser
  • This two classes will be moved to another plugin

comment:26 Changed 22 months ago by chaider

r16588 Changed variableIntervals from ObservableDictionary to Dictionary

Last edited 22 months ago by chaider (previous) (diff)

comment:27 Changed 22 months ago by chaider

r16589

  • Added new Evaluator to evaulate Pearson RSquared with repsect to given constraints
  • changes in SymbolicRegressionSolution

comment:28 Changed 22 months ago by chaider

r16590:

  • Interval-Parser:
  • Changed Parser ==> after last group there can be now an infinite amount of whitepsaces
  • Save userinput as property
  • Save variable case-sensitive
  • NamedIntervals
  • Changed Storable attribute from IEnumerable to KeyValuePair, because old Persistance cant handle IEnumerable
  • Added SymbolicRegressionConstraintAnalyzer
  • SymbolicRegressionSingleObjectiveConstraintPearsonRSquaredEvaluator
  • Fixed checking if a given interval is in another interval

comment:29 Changed 22 months ago by chaider

r16591 Fixed checking if a given interval is in another interval

comment:30 Changed 22 months ago by chaider

r16592

  • Added ContainsInterval method in Interval
  • Some renaming
  • Added ConstraintAnalyzer to SymbolicRegressionProblem
  • Added Counter for constraint violations in analyzer

comment:31 Changed 22 months ago by chaider

r16593 changed cubic and square symbol at interval arithmetic

comment:32 Changed 22 months ago by chaider

r16596

  • Extended evaluator with linear scaling
  • Added constructor to IntervalConstraint

comment:33 Changed 21 months ago by gkronber

r16627: fixed update of interval results when solution changes (e.g. in the simplifier)

comment:34 Changed 21 months ago by gkronber

r16628: made branch compile with current version of trunk

comment:35 Changed 21 months ago by gkronber

r16632: fixed a small problem (trailing \r) in the parser for constraints

comment:36 Changed 21 months ago by gkronber

r16633: fixed exception message

comment:37 Changed 21 months ago by gkronber

r16634: disabled validation check in NamedIntervalsView because it is problematic when NamedIntervals are updated (e.g. while the algorithm is running)

comment:38 Changed 21 months ago by gkronber

r16635: fixed updating of IntervalResults for SymbolicRegressionSolution

comment:39 Changed 21 months ago by gkronber

r16636: set copy local for references to false, used project references for projects within the branch

comment:40 Changed 21 months ago by gkronber

I'm not sure how exactly this branch was created. However, it is effectively impossible to merge changes from the trunk to this branch. :(

comment:41 Changed 21 months ago by gkronber

r16637: merged changesets r16356:16565 from trunk/HeuristicLab.Data.Views to branch/HeuristicLab.Data.Views

comment:42 Changed 21 months ago by gkronber

r16638: merged r16527:16625 from trunk/HeuristicLab.Problems.DataAnalysis.Views to branch/HeuristicLab.Problems.DataAnalysis.Views

comment:43 Changed 21 months ago by gkronber

r16639: merged r16527:16565 from trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Views to branch/HeuristicLab.Problems.DataAnalysis.Symbolic.Views

comment:44 Changed 21 months ago by gkronber

r16640: merged r16565:16631 from trunk/HeuristicLab.Problems.DataAnalysis to branch/HeuristicLab.Problems.DataAnalysis (resolving all conflicts)

comment:45 Changed 21 months ago by gkronber

r16641: merged r16527:16625 from trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression to branch/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression (resolving all conflicts)

Branch is now up-to-date with trunk. Damage was self-inflicted because I added all the StorableType attributes in the branch.

comment:46 Changed 21 months ago by gkronber

r16642: fixed a StorableType attribute after merge from trunk

comment:47 Changed 21 months ago by gkronber

r16643: fixed project references (removing obsolete references to HEAL.Attic, since we are using packagereferences now)

comment:48 Changed 21 months ago by gkronber

r16644: removed duplicate usings of HEAL.Attic and unnecessary usings

comment:49 Changed 21 months ago by gkronber

r16645: added an evalutor which optimizes constants first and then checks the constraint violations

comment:50 Changed 21 months ago by gkronber

r16647: merged r16646 from trunk to branch

comment:51 Changed 21 months ago by gkronber

r16685: merged r16658 from trunk to branch

comment:52 Changed 21 months ago by gkronber

r16699: fixed a bug which caused an exception when loading problem instances with string variables (e.g. Miba instances)

comment:53 Changed 20 months ago by bburlacu

r16713: Make IntervalConstraintsParser class static, adapt code. Add SymbolicRegressionConstraintSatisfactionEvaluator.

comment:54 Changed 20 months ago by gkronber

When a RegressionProblemData is restored from an old file the intervals parameter is missing. As a consequence creating solutions fails.

--> An AfterDeserialization hook is necessary.

comment:55 Changed 20 months ago by chaider

r16730 Added validation for NamedInterval. Show validation error inside table.

comment:56 Changed 20 months ago by chaider

r16731 Added commented example input for constraints definition.

comment:57 Changed 20 months ago by chaider

r16732 Added \n for end-of-line termination to regex

comment:58 Changed 20 months ago by chaider

r16735 fixed unicode for derivation symbol

comment:59 Changed 20 months ago by gkronber

r16741: fixed method names (for compatibility with r16740)

comment:60 Changed 20 months ago by chaider

r16747 Added static CheckConstrain and CheckConstraints methods to SymbolicRegressionConstraintAnalyzer. Changed Apply method to use new CheckConstraints method

comment:61 Changed 20 months ago by chaider

r16756

  • Changed Interval Constraints View
  • Added View for successfully parsed Constraints
  • Save Constraints as IntervalConstraints

comment:62 Changed 20 months ago by chaider

r16759

  • Added commented infotext into IntervalConstraint Textbox
  • Modified copy constructor

comment:63 Changed 20 months ago by chaider

r16761 removed semicolon

comment:64 Changed 20 months ago by chaider

r16770 Added Core Views

comment:65 Changed 20 months ago by chaider

r16771 Changed references

comment:66 Changed 20 months ago by chaider

r16772 Changed IntervalConstraints View

comment:67 Changed 20 months ago by chaider

r16773

  • Fixes and updates in IntervalConstraintView
  • Changed Parser

comment:68 Changed 20 months ago by chaider

r16774 Changed Parser and IntevalConstraint View

comment:69 Changed 20 months ago by chaider

r16775: merged r16757:16763 from trunk to branch

comment:70 Changed 20 months ago by chaider

r16776

  • Added Expression change event
  • Added errorProvider Validation

comment:71 Changed 20 months ago by chaider

r16777

  • Fixed Dispose problem
  • Added event handling for item selection

comment:72 Changed 20 months ago by chaider

r16778

  • Changed field numberOfDerivation
  • Added numberOfDerivation to Expression string
  • Added numberOfDerivation to parser

comment:73 Changed 20 months ago by chaider

  • Status changed from new to assigned

comment:74 Changed 20 months ago by chaider

  • Owner changed from chaider to mkommend
  • Status changed from assigned to reviewing

Should it be possible to change the Variable of the derivation in the Detail-View if so: Validating the Variable in the IntervalConstraintView needs to get the Target-Variable and the VariableList, therefore I need the ProblemData inside my IntervalConstraints.

comment:75 Changed 20 months ago by chaider

r16780

  • Added Target prefix for parsed onstraints in IntervalConstraintParser
  • Added isChecked validation for constraints in ConstraintAnalyzer

comment:76 Changed 20 months ago by chaider

r16781

  • Added isChecked validation for SymbolicRegressionSingleObjectiveConstraintConstOptEvaluator

comment:77 Changed 20 months ago by chaider

r16787 Fixed isChecked events

comment:78 Changed 20 months ago by chaider

r16790 removed HeuristicLab.Core.Views from branch

comment:79 Changed 20 months ago by chaider

r16791 removed HeuristicLab.Data.Views from branch

comment:80 Changed 20 months ago by mkommend

Review comments

  • Remove all resx (designer generated) files for the views
  • Check and correct all namespaces (e.g. NameInterval lies in HL.Problems.DataAnalysis.Implementation, What is HeuristicLab.Problems.DataAnalysis.Annotations?)
  • Remove and sort all usings
  • All methods should have Access modifies specified (e.g. ConstaintAnalyzer.CheckConstraint)
  • Remove commented code
  • Check if all classes contain a License Header (e.g. IntervalConstraintView)
  • Unify Encoding(e.g. RegressionProblemData is changed to use Western European instead of UTF8). I have personally never seen such a change.

HL.Problems.DataAnalysis.Symbolic.Views

  • Remove ProblemData casts in InteractiveSymbolicDataAnalysisSolutionSimplifierView

HL.Problems.DataAnalysis.Symbolic.Regression

  • Revert changes in SymbolicRegressionConstantOptimizationEvaluator (storable type attribute on EvaluationsCounter)
  • SymbolicRegressionConstraintAnalyzer
    • EnabledByDefault hides base member instead of overriding it!
    • Remove casts to RegressionProblemData
    • What is the purpose of the check in line 94?
    • What is the purpose of the check in line 110? How can it be that the variable of a constraint is null?
    • Reformat class to use longer lines than 80 char (e.g. line 112, 114, ...)
    • Line 111 should not be there are check for the target variable or variable in general?
    • Handling of error cases / exception in CheckConstraints
    • Please use results parameters for creating / updating results.
    • Don't misuse Dictionaries as result type
  • Is the SymbolicRegressionConstraintSatisfactionEvaluator necessary? Please check with bburlacu
  • SymbolicRegressionSingleObjectiveConstraintPearsonRSquaredEvaluator
    • Contains lots of commented code
    • What is the out parameter of CheckConstraintsViolations? Why is that necessary?
  • SymbolicRegressionSolution
    • Remove const string EstimatedDerivationInterval (it is not used at all)
    • Line 133: Initialize with empty type (null) if possible to avoid duplicate calculation
    • Adapt AfterDeserializationHook to include new results
    • Line 165 avoid cast and access to values via parameters
    • Line 172 error checking - What happens if the key is the targetVariable
    • Suggestion: What about making GetIntervalEvaluations static? What is your opinion on this?

HL.Problems.DataAnalysis ==

  • RegressionProblemData
    • Add variable ranges and constraints to the according interface
    • Move comment message to parsedConstraint as this has nothing todo with the ProblemData. Adapt comment to actually use reasonable variable names that actually occur in the problem data
  • NamedInterval
    • cloning ctor line 38 - create new interval from existing one to be extra safe although intervals are immutable
    • Remove unused method InsertMany
    • Why is there an add method, but no other manipulations methods? Furthermore, there are no events present that indicate changes to the underlying collection/dictionary.
    • Maybe its better to expose an observable dictionary directly?!
  • IntervalConstraint
    • Not all setters fire the changed event.
    • IsCheck should be renamed to either Check or Enabled
    • I would remove the default ctor and the ctor with just a name, cause these are useless
  • Remove ITextValue from the plugin (see ticket #2931).
  • ParsedConstraint
    • LicenseHeader is missing
    • Contains unused using
    • Never expose protected fields
    • Is the reference to the problemData really necessary? I have seen that you forward the problemData to the parser for variable validation. Is there no other way around?
    • Cloning constructor does not clone the values.
    • Ctor base calls are missing.
    • Ctors should forward to each other

HL.Problems.DataAnalysis.View

  • IntervalConstraintView
    • ctor line 31 set derivationInput.Checked to false, because the content is always null at this time
    • UpdateControls line 97 - select emptyItem if constraint is no derivation
    • UpdateExpression - make method static that returns a string
    • Create a separate formater parse that is the inverse to the constraint parser
    • lowerboundInput_Validating use preconditions and early exit (e.g. line 152 if(double.IsNan(value)) { e.Cancel = true; return;}
    • Check calls to UpdateControls! These shouldn't be necessary in most cases, because the changed event should automatically trigger a GUI update!
    • TextValueView and Type will soon be integrated with #2391 and should be afterwards removed from this branch

Testing

  • Variable Ranges - Clicking on columns names for sorting throws an exception
  • White space in IntervalConstraint commented text
  • Parser does not work with variable containing a white space in their name (e.g. PowerMeter problem data)
  • Creation of new constraint by the plus button does not work
  • Genetic Programming - Symbolic Regression Sample does not work anymore (Exception during execution). A possible reason might be that variable ranges are missing.
Last edited 20 months ago by mkommend (previous) (diff)

comment:81 Changed 20 months ago by mkommend

  • Owner changed from mkommend to chaider
  • Status changed from reviewing to assigned

comment:82 Changed 20 months ago by chaider

r16800 Several changes regarding review comments

comment:83 Changed 20 months ago by chaider

r16809

  • Added possibilty to use variables with whitespaces or derivation in constraint-definitions

comment:84 Changed 20 months ago by chaider

r16810 Added AfterDeserialization hook to RegressionProblemData to add VariableRanges and IntervalConstraints

comment:85 Changed 20 months ago by chaider

r16817 fixed sorting of columns in NamedIntervalsView

comment:86 Changed 20 months ago by gkronber

The branch cannot be compiled with the current trunk!

comment:87 Changed 20 months ago by gkronber

In r16800 the datatype for variableRanges was changed from Dictionary<...> to IDictionary<...> in method CheckConstraintViolations

https://dev.heuristiclab.com/trac.fcgi/changeset/16800/branches/2971_named_intervals/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression/3.4/SingleObjective/Evaluators/SymbolicRegressionSingleObjectiveConstraintPearsonRSquaredEvaluator.cs

However, since IntervalInterpreter in the trunk expects Dictionary this fails.

comment:88 Changed 20 months ago by gkronber

I made the necessary changes to trunk in order to fix this. See #2966, r16822

comment:89 Changed 20 months ago by gkronber

r16823: also use IDictionary instead of Dictionary in SimplifierView

comment:90 Changed 20 months ago by gkronber

  • r16824: merged changes from trunk/HeuristicLab.Problems.DataAnalysis to branch
  • r16825: merged r16763 from trunk/HeuristicLab.Problems.DataAnalysis.Symbolic.Regression to branch
Last edited 20 months ago by gkronber (previous) (diff)

comment:91 Changed 20 months ago by chaider

r16830 fixed review comments

comment:92 Changed 20 months ago by chaider

r16841 added getter and setter for variable ranges and interval constraints

comment:93 Changed 20 months ago by chaider

r16843 Removed Properties/Annotations.cs

comment:94 Changed 20 months ago by chaider

r16844

  • removed/reordered usings
  • removed storabletype in ConstantOptimizationEvaluator
  • Added/Changed License informations

comment:95 Changed 20 months ago by chaider

r16845 Changed nodeIntervals in InteractiveSymbolicDataAnalysisSolutionSimlifierView

comment:96 Changed 20 months ago by chaider

r16846 Added SymbolicRegressionConstraintAnalyzer to AfterDeserailization Hook

comment:97 Changed 20 months ago by chaider

r16851 Refactored Constraint Evaluator and Analyzer

comment:98 Changed 19 months ago by chaider

r16862 Changed some views

comment:99 Changed 19 months ago by chaider

r16865 Added variable block-symbol (') for constraint parser

comment:100 Changed 19 months ago by chaider

r16866 changed ConstraintParser description text and example to meet new parser requirements

comment:101 Changed 19 months ago by chaider

r16870 changed content events in ParsedConstraintView

comment:102 Changed 19 months ago by chaider

r16879 Removed unused parser method

comment:103 Changed 19 months ago by chaider

r16880

  • Disabled variable input field in IntervalConstraintView
  • Added update definition method in IntervalConstraintView
  • Added onChanged event for definition

comment:104 Changed 19 months ago by chaider

r16881

  • removed unused constructors
  • changed creation of IntervalConstraint in IntervalConstraintParser

comment:105 Changed 19 months ago by chaider

r16882 Added TODO issue for floating point calculation

comment:106 Changed 19 months ago by chaider

r16883 merged trunk into branch

comment:107 Changed 19 months ago by chaider

r16884 fixed storable problem within RegressionProblemData

comment:108 Changed 19 months ago by chaider

r16885

  • removed/fixed usings
  • removed .resx file

comment:109 Changed 19 months ago by chaider

r16886 Added Storable-Attribues to IntervalConstraint

comment:110 Changed 19 months ago by chaider

r16887

  • Changed resizing to all cells instead of headers
  • Update OnContentChangedMethod

comment:111 Changed 19 months ago by chaider

r16888 fixed NamedIntervalsView

comment:112 Changed 19 months ago by chaider

r16895 Changed IntervalConstraint

comment:113 Changed 19 months ago by chaider

r16896 Renaming and moving files:

Renamed: NamedIntervals => IntervalCollection

ParsedConstraint => ProblemDataConstraint

NamedIntervalsView => IntervalCollectionView

Folder Parser => Interval Moved: IntervalCollectionView from Regression/IntervalCollectionView => ./IntervalCollectionView

Interval, IntervalCollection from /Implementation => /Implementation/Interval

comment:114 Changed 19 months ago by chaider

r16898

  • Added all fields to IntervalConstraintView
  • Rearanged fields
  • Updated NumberOfDerivation event

comment:115 Changed 19 months ago by chaider

r16900

  • Added field Target to IntervalConstraint
  • Prefixed Target-Item with Target:
  • Removed prefixed Target: at derivations ==> show target field instead

comment:116 Changed 19 months ago by chaider

r16903 Added variable definition without escape chars

comment:117 Changed 19 months ago by chaider

r16904 Renamed NamedIntervals to IntervalCollection

comment:118 Changed 19 months ago by chaider

r16904 Changed OnRemoved event int ParsedConstraintView ==> Removing the constraint_changed event

comment:119 follow-up: Changed 19 months ago by gkronber

The combobox for #Derivation and checkboxes in the "Interval Constraints Detail" are not disabled (set readonly).

Last edited 19 months ago by gkronber (previous) (diff)

comment:120 Changed 19 months ago by chaider

r16917 Reformated code and added null-condition to Intervals

comment:121 in reply to: ↑ 119 Changed 19 months ago by chaider

Replying to gkronber:

The combobox for #Derivation and checkboxes in the "Interval Constraints Detail" are not disabled (set readonly).

The #Derivation is only disabled at the Target-Constraint, because there we don't have a derivation. For the Derivation-Constraints it should be possible to change the number of derivation in the "Interval Constraints Detail View". The checkboxes should also be changeable in the Detail-View (inclusive or exclusive upper- or lower-bound and disabled/enabled)

comment:122 Changed 19 months ago by chaider

r16918

  • changed VariableIntervals from ObservableDictionary to IDictionary
  • Added methods to get single intervals and all intervals

comment:123 Changed 19 months ago by chaider

r16919 updated description text for constraints input

comment:124 Changed 19 months ago by chaider

r16920 Fixed displayed value in #Derivation-field for target constraints

Last edited 19 months ago by chaider (previous) (diff)

comment:125 Changed 19 months ago by chaider

r16921

  • Changed getInterval method to return Interval instead of KeyValuePair
  • Calling getMethods from IntervalsCollection

comment:126 Changed 19 months ago by chaider

r16924 Added isEnabled to constructor

comment:127 Changed 19 months ago by chaider

r16925 Set the dictionary to private, renamed methods, added methods to operate on dictionary

comment:128 Changed 19 months ago by chaider

r16927 use methodes to operate on IntervalCollection dictionary

comment:129 Changed 19 months ago by chaider

r16928 Fixed cloning in ProblemDataConstraint

comment:130 Changed 19 months ago by chaider

r16930

  • removed setter from VariableRanges and IntervalConstraints
  • changed protected method in sealed class to private

comment:131 Changed 19 months ago by chaider

r16932 Use partial differential directly in strings instead of unicode

comment:132 Changed 19 months ago by gkronber

    public ProblemDataConstraint() :base () {
      this.Input = exampleInput;
      this.constraints = new CheckedItemList<IntervalConstraint>();
      this.ProblemData = null;
    }

    public ProblemDataConstraint(IRegressionProblemData problemData) : base() {
      this.Input = exampleInput;
      this.constraints = new List<IntervalConstraint>();
      

Why do you use CheckedItemList in the first ctor and List in the second?

comment:133 Changed 19 months ago by gkronber

Persistence of problems with intervals doesn't work at all.

It is never allowed to access data members of objects as long as serialization is not complete. You have many storable properties where in the setter you update the GUI. For example

    [Storable]
    public bool InclusiveUpperBound {
      get => inclusiveUpperBound;
      set {
        if (inclusiveUpperBound != value) {
          inclusiveUpperBound = value;
          UpdateExpression();
          OnChanged();
        }
      }

This fails because value is not yet completely restored by HEAL.Attic. Attach the Storable property to the backing field instead.

    [Storable(Name = "InclusiveUpperBound")]
    private bool inclusiveUpperBound;
    public bool InclusiveUpperBound {
      get => inclusiveUpperBound;
      set {
        if (inclusiveUpperBound != value) {
          inclusiveUpperBound = value;
          UpdateExpression();
          OnChanged();
        }
      }
    }

In ProblemDataConstraint.cs the property can be set to any enumerable (even a WhereSelect iterator!). It is strange to set the field to a lazy(!) enumerable and HEAL.Attic does not support serialization of lazy enumerables.

 [Storable]
    public IEnumerable<IntervalConstraint> Constraints {
      get => constraints;
      set {
        if (constraints == value) return;
        constraints = value;
        OnChanged();
      }
    }

`

comment:134 Changed 19 months ago by chaider

r16935 fixed persisting of problems

  • Attached Storable propperty to backing fields
  • Changed the lazy enumerable of the Constraints field

comment:135 Changed 19 months ago by chaider

r16936 Added #Derivation combobox and checkboxes to EnableStateOfControls to lock it while running

comment:136 Changed 19 months ago by chaider

r16937 Removed Name from Storable attribute and initialized constraints with empty List

comment:137 Changed 19 months ago by chaider

r16938 Added Changed event for ProblemDataConstraint

  • Updated parseBtn_Click

comment:138 Changed 19 months ago by chaider

r16957 Fixed parsing of seperator between lower- and upper-bound to match exactly two points

comment:139 Changed 19 months ago by chaider

r16959 Changed unicode to derivative symbol in exampleInput

comment:140 Changed 19 months ago by chaider

r16960 Removed unused ReadOnly property from IntervalCollection

comment:141 Changed 19 months ago by chaider

r16963 Added OnTextChange event for constraints input; Added lock of constraints input

comment:142 Changed 19 months ago by chaider

r16964 Changed setter conditions to precondiation checks

comment:143 Changed 19 months ago by chaider

  • Owner changed from chaider to mkommend
  • Status changed from assigned to reviewing

comment:144 Changed 16 months ago by mkommend

r17144: Merged trunk changes into branch.

comment:145 Changed 16 months ago by mkommend

r17145: Corrected naming of IntervalCollection and according view.

comment:146 Changed 16 months ago by mkommend

r17146: Renamed views and updated error messages in constraint parser.

comment:147 Changed 16 months ago by gkronber

  • Milestone changed from HeuristicLab 3.3.16 to HeuristicLab 3.3.17

comment:148 Changed 16 months ago by gkronber

Last edited 16 months ago by gkronber (previous) (diff)

comment:149 Changed 16 months ago by gkronber

r17211: added clean script

comment:150 Changed 15 months ago by chaider

r17249 Added label which indicates unparsed changes at constaints input view

comment:151 Changed 15 months ago by chaider

r17250 Added exception handling for constraint parser

comment:152 Changed 15 months ago by chaider

r17256: Added info text and info text color to ProblemDataConstraint

comment:153 follow-up: Changed 14 months ago by gkronber

Interval for cbrt(-8) produces [NaN, NaN] but should be [-2, -2].

comment:154 Changed 14 months ago by chaider

r17300 Fixed calculation of cubic roots (negative numbers)

comment:155 in reply to: ↑ 153 Changed 14 months ago by chaider

Replying to gkronber:

Interval for cbrt(-8) produces [NaN, NaN] but should be [-2, -2].

Cubic root for negative numbers should work now. (r17300)

comment:156 Changed 14 months ago by gkronber

Interval also does not yet support abs() and aq() functions.

comment:157 follow-up: Changed 14 months ago by chaider

r17304 merged trunk into branch

comment:158 Changed 14 months ago by gkronber

r17313: merged r17301:17305 from trunk:Interval.cs to branch:Interval.cs

comment:159 in reply to: ↑ 157 Changed 14 months ago by gkronber

Replying to chaider:

r17304 merged trunk into branch

I suspect some warnings in the merge were ignored because changes to Interval.cs have not been merged in r17304 (because the files are in a different folder in the branch than in the trunk).

I have therefore merged the changes to the file Interval.cs in r17313 explicitly.

comment:160 follow-up: Changed 13 months ago by chaider

Remove the distinction between open/closed/partial opened intervals to simplify the calculation of interval arithmetic.

comment:161 Changed 12 months ago by chaider

  • Owner changed from mkommend to chaider
  • Status changed from reviewing to assigned

comment:162 Changed 12 months ago by chaider

r17368 Merged trunk into branch

comment:163 in reply to: ↑ 160 Changed 12 months ago by chaider

Replying to chaider:

Remove the distinction between open/closed/partial opened intervals to simplify the calculation of interval arithmetic.

r17370 Removed the possibility of declaring open and closed intervals. All intervals are closed intervals now.

comment:164 Changed 12 months ago by chaider

r17372 Changed partial dependence plot range to interval range

comment:165 Changed 12 months ago by chaider

  • Owner changed from chaider to mkommend
  • Status changed from assigned to reviewing

comment:166 Changed 8 months ago by chaider

r17482 Fixed constraint satisfied check for the const opt constraint evaluator

comment:167 Changed 8 months ago by mkommend

r17501: Merged trunk changes into branch, corrected project files (output path for all configurations, reference paths), resolved merge conflicts in InteractiveSymbolicDataAnalysisSolutionSimplifierView.

comment:168 Changed 8 months ago by mkommend

r17504: Added property in ProblemDataConstraints for EnabledConstraints.

comment:169 Changed 8 months ago by mkommend

r17505: Minor change in Interval ctor.

comment:170 Changed 8 months ago by mkommend

r17506: Further minor refactorings and renaming of members.

comment:171 Changed 8 months ago by mkommend

Review Comments

HeuristicLab.Problems.DataAnalysis.Symbolic.Views-3.4

InteractiveSymbolicDataAnalysisSolutionSimplifierView

  • Error handling for unknown symbols of the interval interpreter is missing. Currently the whole simplifier becomes unusable if an unknown symbol to the interval interpreter is encountered (e.g., cube, power).

HeuristicLab.Problems.DataAnalysis.Symbolic.Regression-3.4

Symbolic Regression Solution

  • IntervalEvaluation should be renamed to ModelBounds (including all related methods, fields, strings, ...).
  • Error handling for unkown symbols!

SymbolicRegressionConstraintAnalyzer

  • I also suspect that errors wrt. unkown symbols are not handled and it is not defined what happens if those symbols are encountered.
  • Please use results parameter when writing storing results. This is much easier than creating results on your own.

SymbolicRegressionSingleObjectiveConstraintPearsonRSquaredEvaluator

  • Why are not the Constraints first checked in the Calculate method?
  • Can we refactor the whole Calculate method instead of duplication the source? For example to something like this
      public static double Calculate(ISymbolicDataAnalysisExpressionTreeInterpreter interpreter, ISymbolicExpressionTree solution, double lowerEstimationLimit, double upperEstimationLimit, IRegressionProblemData problemData, IEnumerable<int> rows, bool applyLinearScaling) {
          var constraints = problemData.IntervalConstraints.Constraints.Where(x => x.Enabled);
          var variableRanges = problemData.VariableRanges.GetIntervals();
          if (!SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied(constraints, variableRanges, solution)) {
            return 0;
          }
    
          var r2 = SymbolicRegressionSingleObjectivePearsonRSquaredEvaluator.Calculate(interpreter, solution, lowerEstimationLimit, upperEstimationLimit, problemData, rows, applyLinearScaling);
          return r2;
        }
    

SymbolicRegressionSingleObjectiveConstraintConstOptEvaluator

  • It would be better to check for constraints before evaluating the quality, because if the constaints are not satisfied constants optimization is superfluos.
  • The method HasConstraintVioluations is obsolete and should be changed to a call to SymbolicRegressionConstraintAnalyzer.ConstraintsSatisfied

comment:172 Changed 8 months ago by chaider

r17507 Added HeuristicLab.Problems.DataAnalysis.Symbolic to branch

comment:173 Changed 8 months ago by chaider

r17508 Modified paths

comment:174 Changed 8 months ago by chaider

r17509:

  • Added cube, cuberoot, absolute and analytical quotient to IntervalInterpreter
  • Extended the IsCompatible method in IntervalInterpreter (removed power, root because not implemented in DerivativeCalculator
  • Added checks for known symbols at InteractiveSymbolicDataAnalysisSolutionSimplifierView and SymbolicRegressionSolution
  • Renamed IntervalEvaluation to ModelBounds
Last edited 8 months ago by chaider (previous) (diff)

comment:175 Changed 8 months ago by chaider

  • Owner changed from mkommend to chaider
  • Status changed from reviewing to assigned

comment:176 Changed 8 months ago by chaider

r17510

  • Changed constraint violation table to ResultParameter
  • Changed symbol check to include DerivativeCalculator symbols
  • Moved SymbolicRegressionConstraintAnalyzer to plugins root
  • Added Power and Root to IntervalInterpreter

comment:177 Changed 8 months ago by chaider

r17511

  • Checked ConstraintSatisfied before calculating r2
  • Removed code duplications in SymbolicRegressionSingleObjectiveConstraintPearsonRSquaredEvaluator and SymbolicRegressionSingleObjectiveConstraintConstOptEvaluator

comment:178 Changed 8 months ago by chaider

r17512 Check if the derived tree contains not allowed symbols

comment:179 Changed 7 months ago by chaider

  • Owner changed from chaider to mkommend
  • Status changed from assigned to reviewing

comment:180 Changed 7 months ago by mkommend

r17536: Corrected view name of ProblemDataConstraintView. r17537: Reordered known symbols in interval interpreter. r17538: Changed logic when intervals are calculated in symbolic regression solutions and simplifier.

Last edited 7 months ago by mkommend (previous) (diff)

comment:181 Changed 7 months ago by mkommend

  • Owner changed from mkommend to chaider
  • Status changed from reviewing to assigned

Please test the implemented functionality with the GP sample on the start page.

comment:182 Changed 7 months ago by chaider

r17542 fixed bounds check in interval cstr

comment:183 follow-up: Changed 6 months ago by mkommend

ToDos:

  • Correct build configurations (release, debug, output paths, references, ...)
  • Interval calculation for Root symbol is not implemented correctly
  • Test the whole implementation!

comment:184 Changed 6 months ago by chaider

  • Status changed from assigned to accepted

comment:185 in reply to: ↑ 183 Changed 6 months ago by chaider

Replying to mkommend:

ToDos:

  • Correct build configurations (release, debug, output paths, references, ...)
  • Interval calculation for Root symbol is not implemented correctly
  • Test the whole implementation!

As discussed with mkommend, the constraint related parts will be removed from this ticket and implemented in another ticket together with new evaluators, analyzers and other constraint related features.

comment:186 Changed 6 months ago by chaider

r17547 Removed constraint related parts from branch

comment:187 Changed 6 months ago by chaider

r17548 removed ProblemDataConstraint, ConstraintEvaluator and ConstraintAnalyzer

comment:188 Changed 6 months ago by chaider

r17549 Updated root symbol

comment:189 Changed 6 months ago by chaider

r17552 Updated paths

comment:190 Changed 6 months ago by chaider

r17553 Added check if ModelBounds can be calculated

comment:191 Changed 6 months ago by chaider

r17555 changed getter/setter from modelbounds

comment:192 Changed 6 months ago by chaider

  • Owner changed from chaider to mkommend
  • Status changed from accepted to reviewing

Added cases for root:

root(0, 0) = 0 https://www.wolframalpha.com/input/?i=root%280%2C+0%29
root(0, not 0) = undef https://www.wolframalpha.com/input/?i=root%280%2C+1%29
root(-1, 0) = complex inf.

Discuss with mkommend: Shorten edge cases of root to be always undefined

comment:193 Changed 6 months ago by mkommend

r17561: Corrected path of Hl.Problems.DataAnalysis.Symbolic project.

comment:194 Changed 6 months ago by chaider

r17562 removed root/power symbols

comment:195 Changed 6 months ago by chaider

r17563 removed SymbolicRegressionSingleObjectiveConstraintConstOptEvaluator from branch

comment:196 Changed 6 months ago by mkommend

r17564: Minor changes in interval collection and interval interpreter.

comment:197 Changed 6 months ago by chaider

r17565 fixed bug in gridview in IntervalCollectionView

comment:198 Changed 6 months ago by mkommend

r17572: Removed groupbox in IntervalCollectionView.

comment:199 Changed 6 months ago by mkommend

r17579: Merged branch into trunk.

comment:200 Changed 6 months ago by mkommend

  • Status changed from reviewing to readytorelease
  • Version changed from branch to trunk

comment:201 Changed 6 months ago by chaider

  • Owner changed from mkommend to chaider
  • Status changed from readytorelease to assigned
  • Version changed from trunk to branch

comment:202 Changed 6 months ago by chaider

  • Status changed from assigned to accepted

comment:203 Changed 6 months ago by mkommend

r17580: Forgot to commit merge infos and outdated interval class file.

comment:204 Changed 6 months ago by mkommend

  • Version changed from branch to trunk

comment:205 Changed 6 months ago by chaider

r17583 Modified sqrt symbol: added negative square root to interval

comment:206 Changed 6 months ago by chaider

r17584 Updated unit tests for interval

comment:207 Changed 6 months ago by chaider

Discuss the inclusion of both sqrt results (with inclusion of both parts AQ will always ends with [-inf. .. inf]).

comment:208 Changed 2 months ago by chaider

r17754 Added some trigonometric function tests for IA

Note: See TracTickets for help on using tickets.