Integrated crossover implementation splitting and recombining EMF models based on category theory (MDOver) #118
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.
The crossover implementation (ProblemPartCrossover) is provided as a Maven artifact and can be found at github.
Most important changes:
ProblemPartSpecifier: the crossover needs information about which parts of the meta model are invariant during optimization. To that end, a use case needs to provide an implementation of the interfaceIProblemPartSpecifier. In the mopt file the specification is provided in theproblemsection of the DSL:define problem part using <crossoverdefinition.problempart.CraProblemPartSpecifier>An example of the implementation for the CRA case would look like this:
crossover.strategy: problempartcan be defined in thesolversection of the DSL.CompoundVariationcalledMoeaRepairingOptimisationVariationwhich encapsulates all variations. By default a NOOP repair strategy is used which does nothing.SequentialRepairStrategycan be used by specifyingrep.strategy: sequentialin thesolversection of the DSL. This strategy will apply user defined Henshin rules after each evolution step. Note that the user defined rules will be applied in the order of their specification in the mopt file and that each rule will be applied as often as possible before the next rule will be tried.EvolverTypehas been added to the DSL. An example for a user specified repair rule is:repair using <cra-repair.henshin> unit "removeMultiAssignment"A full example mopt for the CRA case using ProblemPartCrossover with repair would look like this: