#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 16 years ago by gkronber
- Status changed from new to assigned
comment:2 Changed 16 years ago by gkronber
comment:3 Changed 16 years ago by gkronber
- Description modified (diff)
comment:4 Changed 16 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 16 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 16 years ago by swagner
- Milestone changed from 3.0 to Iteration 0
Milestone 3.0 deleted
comment:7 Changed 14 years ago by swagner
- Milestone changed from Iteration 0 to Current
Milestone Iteration 0 deleted
comment:11 Changed 14 years ago by swagner
- Milestone changed from Current to HeuristicLab 3.3.0
Milestone Current deleted
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.