Opened 11 years ago

Closed 11 years ago

Last modified 9 years ago

#163 closed defect (done)

Changing the FunctionLibrary in a VariableInjector has no effect on the injected FunctionLibrary

Reported by: gkronber Owned by: gkronber
Priority: highest Milestone: HeuristicLab 3.3.0
Component: StructureIdentification Version: 3.0
Keywords: Cc:

Description (last modified by gkronber)

Howto reproduce:

  • Create a new sequential engine
  • Add VariableInjector and make it the initial operator
  • Open VariableInjector and add a !GPOperatorLibrary variable
  • Add functions 'Addition' 'Multiplication' 'Constant' to the !GPOperatorLibrary
  • Remove the entries 'Multiplication' and 'Addition' from the list of allowed sub-operators of 'Addition' in all three slots (leaving only 'Constant')
  • Reset and execute the engine.
  • Open global scope and inspect the list of allowed sub-operators of Addition in the injected function library

Expected result: All three slots should only allow 'Constant'

Actual result: Addition allows 'Addition' 'Multiplication' and 'Constant' in all three slots.

Change History (8)

comment:1 Changed 11 years ago by gkronber

  • Status changed from new to assigned

comment:2 Changed 11 years ago by gkronber

It seems only the lists of allowed sub-operators of each entry in the function-library are effected. When one of the other variables (for instance 'Tickets') is changed the value is also different in the finally injected function library.

comment:3 Changed 11 years ago by gkronber

  • Description modified (diff)

comment:4 Changed 11 years ago by gkronber

Added a quick and dirty fix for this with r423.

The problem is that the values of AllowedSubOperators, MinTreeSize and MinTreeHeight were recalculated from scratch in AddOperator. And when AddOperator is called in OperatorGroup.Clone() (and also OperatorGroup.Populate()) the manual changes are lost. The quick fix addresses this by removing the recalculation in AddOperator and adding a button to the GPOperatorLibraryView to reset the values of the three variables manually.

However a better fix is needed. We want the !GPOperatorLibrary to intelligently and automatically adapt the lists of allowed sub-operators when a new operator is added and when an operator is removed and also to adapt the values of MinTreeSize and MinTreeHeight when the list of allowed sub operators is changed. We could probably implement this by adding event-handlers for the change-events of the allowed sub-operators lists

comment:5 Changed 11 years ago by gkronber

  • Resolution set to fixed
  • Status changed from assigned to closed

The problem is fixed with r434 and changes related to #225 (esp. r431 and r432).

Automatic adaption of the constraints of each operator when new operators are added to the library doesn't work. The constraints have to be adapted manually after such changes.

Automatic adaption is not easy to implemented because we have to be careful to keep manual changes of the user. This is a problem when loading a function-library (operators are re-added).

comment:6 Changed 10 years ago by swagner

  • Milestone changed from 3.0 to Iteration 0

Milestone 3.0 deleted

comment:7 Changed 9 years ago by swagner

  • Milestone changed from Iteration 0 to Current

Milestone Iteration 0 deleted

comment:11 Changed 9 years ago by swagner

  • Milestone changed from Current to HeuristicLab 3.3.0

Milestone Current deleted

Note: See TracTickets for help on using tickets.