Compositional optimization#55
Open
ashfaqfarooqui wants to merge 4 commits into
Open
Conversation
1. `ModularPlantLearnerWithoutTau` never adds any tau transitions, instead only the targets will be added. This will give a result that has a lot of unreachable states but this will be solved when removing all "non local variables". The benefit of this change is reduced memory allocation.
Solving the model `AGV` on my computer takes roughly: 60 seconds with this solver compared to 100 seconds with `ModularPlantLearner`.
2. `ModularPlantLearnerWithoutTauNew` is new upgraded solver that builds on previous version. This solver introduces a few major changes:
1. Instead of adding new states that should be expanded, the loop now adds all relevant outgoing transitions from those states, where *relevant* is the big emphasis.
In previous versions, expanding a new state required one query to the SUL for each event in the alphabet. This is unnecessary. Instead this new solver uses the following Theorem
Given a transition *t = <s,e,t>*, assume that the target *t* is a new state that needs to be explored according to the old established definitions. Then it can be proven that the only events out from this state that can add new value are events that is not part of the event mapping of any module that did not have any state variables changed by the transitions. That is, all events from modules *m* that satisfies `$P_{S(m)}(s) = P_{S(m)}(t)$` can be disregarded in the expansion of the target state *t*. This can in some cases drastically reduce the number of queries to the simulator and the computational complexity of the whole algorithm,
Solving the model `AGV` on my computer takes roughly: 5 seconds with this solver compared to 60 seconds with `ModularPlantLearnerWithoutTau`.
…urations on the transitions/actions. 2. Added the classes `ControllableCommand` and `UncontrollableCommand` to ModelDomain, this enables Symbols ti be generated dynamically on runtime. Is currently used to generate new, more expressive, events for the output Automata in Compositional Optimization solvers. 3. Added the dynamic model `WeldingRobots` similar to the example in [1], which can be modified to include different number of robots, tasks. This required the following change to *core*: - Operations has changed from `Map[Command, Predicate]` to `Map[String, Predicate]` buyt still allows `postGuards(c: Command)` to be used to check the predicate of a command. The reason is that dynamic models cannot use predefined Commands and instanciating the Commands, forexample into a `ControllableCommand` would require synchornization of these instances between differnet pars of the SUL. It could be achieved but Strings worrk just as well as Commands in this case. Which in turn required changes in all existing simulators. 4. Added a generic predicate `CUSTOM` and a generic action `Tranform` wchich allows for evaluation/transformation of a predicate/variable based on custom functions. This is used in the `WeldingRobotSimulation` to deal with bit vector evaluation and manipulation. 5. Added the (unfinished) solver `CompositionalOptimization` to include the new integrated modular learning and optimization algorithm. At the moment the solver extends the work from `ModularPlantLearner` with an integration of `TimedCodeSImulator` and some initial work with priority queues instead of lists. This will have to be continued before any conclusions can be drawn. [1] F.Hagebring, B.Lennartson (2019) Time-Optimal Control of Large-Scale Systems of Systemsusing Compositional Optimization.
…ith EventC/EventUC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.