Free cookie consent management tool by TermsFeed Policy Generator

Opened 13 years ago

Closed 8 years ago

#1258 closed enhancement (obsolete)

Explore possibilities of using data binding in HeuristicLab (parameter binding)

Reported by: abeham Owned by: architects
Priority: medium Milestone:
Component: Parameters Version: branch
Keywords: Cc:

Description (last modified by abeham)

It should be possible to define binding objects that can be attached to a parameter and that will manage keeping the parameter's ActualName and/or !Value up to date with another parameter.

Or in other words: Judith is a programmer developing HeuristicLab problem and algorithm plugins and she just hates writing a ton of UpdateX, ParameterizeY methods and create dozens of event handlers to make sure any change doesn't break the configuration of her problem or algorithm.

Alan is an HeuristicLab user that likes exploring algorithm ideas. However, he's unhappy that all the wiring magic is lost as soon as he converts an algorithm into a UserDefinedAlgorithm.

Change History (12)

comment:1 Changed 13 years ago by abeham

  • Status changed from new to accepted

comment:2 Changed 13 years ago by abeham

  • Version changed from 3.3.1 to branch


  • Created a branch of the trunk to explore parameter binding

comment:3 Changed 13 years ago by abeham

  • Description modified (diff)


  • worked on parameter binding (wip)

comment:4 Changed 13 years ago by abeham


  • worked on parameter binding (wip)

comment:5 Changed 13 years ago by abeham


  • worked on parameter binding

comment:6 Changed 13 years ago by abeham


  • Updated binding according to discussion
  • Added small test case for the TSP

comment:7 Changed 13 years ago by abeham


  • Changed event handler cache to be static and keeping the DynamicMethod
  • Added case when source property was null
  • Added regions to clarify code a little

comment:8 Changed 13 years ago by abeham


  • Added detection if a certain link in the chain implements INotifyPropertyChanged (still missing -> fire only on a change to the "right" property)
  • Added optional parameter LambdaExpression in the binding
  • Changed cloning behavior of binding -> bindings have to be cloned only after the clone is fully constructed

comment:9 Changed 13 years ago by abeham

According to epitzer serializing LambdaExpression is an arduous task and hardly possible. He tried to do that initially in the persistence, but gave up on it. He suggested a different way, by using binding transformers that provide a range of configurable transformations with a non-generic method signature object Transform(object). This is unfortunately a much less elegant solution.

Another problem is that the binding mechanism will not work on UserDefinedAlgorithm. It will fail once it tries to navigate over the properties which are defined in an algorithm, but which the UDA doesn't have.

comment:10 Changed 13 years ago by abeham

  • Priority changed from highest to medium

comment:11 Changed 8 years ago by abeham

  • Owner changed from abeham to architects
  • Status changed from accepted to assigned

Much of the wiring problem has been solved by other means, nowadays we do have a lot convenient methods for defining new problems (encodings and programmable problem). Users don't always need to write new plugins and we're trying to put into the GUI what can reasonably be done in the GUI with simple interfaces and little code to write.

This branch is outdated, the idea never worked to our expectations, there are still open points. If there are no objections I will close this ticket and kill the branch.

comment:12 Changed 8 years ago by abeham

  • Milestone HeuristicLab 3.3.x Backlog deleted
  • Resolution set to obsolete
  • Status changed from assigned to closed

r13559: terminated branch

Note: See TracTickets for help on using tickets.