Opened 9 years ago

Closed 4 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 9 years ago by abeham

  • Status changed from new to accepted

comment:2 Changed 9 years ago by abeham

  • Version changed from 3.3.1 to branch

r4745

  • Created a branch of the trunk to explore parameter binding

comment:3 Changed 9 years ago by abeham

  • Description modified (diff)

r4757

  • worked on parameter binding (wip)

comment:4 Changed 9 years ago by abeham

r4758

  • worked on parameter binding (wip)

comment:5 Changed 9 years ago by abeham

r4770

  • worked on parameter binding

comment:6 Changed 9 years ago by abeham

r4787

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

comment:7 Changed 9 years ago by abeham

r4788

  • 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 9 years ago by abeham

r4790

  • 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 9 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 8 years ago by abeham

  • Priority changed from highest to medium

comment:11 Changed 4 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 4 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.