lava-optimization icon indicating copy to clipboard operation
lava-optimization copied to clipboard

Incrementally modify problems and re-solve

Open tim-shea opened this issue 2 years ago • 0 comments

User story

As a solution developer, I want to be able to incrementally modify my problem state and generate a new solution. I should be able to add or remove one or a set of any of the problem variable types (e.g. for a scheduling problem, the tasks, resources, or capabilities) and subsequently obtain a valid solution to the modified problem.

Conditions of satisfaction

  • Each problem type exposes a number of methods to add or remove problem-specific features.
  • Add and remove methods can accept a single item or a list of items.
  • Add and remove methods work at the same level of data specification as the problem constructor, i.e. they do not require the solution developer to obtain object references to the features which would be difficult to find.
  • Add and remove methods work at the feature level, not the node/constraint level. They do not require the solution developer to know or understand exactly how features get transformed to create nodes and constraints, and they do not expect the solution developer to correctly execute a series of operations or cleanup, e.g. removing one type of dependent feature before another, or removing all of the dependent features that were tied to a removed feature.

Not required but preferred

  • Modifying problem features is very fast, preferably much faster than solving the modified problem
  • Modifying problem features is O(1), and thus does not become a major scaling obstacle for very large problems.
  • Re-solving a problem after modifying features is fast, ideally faster than the initial solution
  • Adding and removing problem features can be performed during problem solving and modified features will be immediately incorporated into the solution

tim-shea avatar Aug 10 '23 13:08 tim-shea