Skip to content
Snippets Groups Projects
  1. Aug 04, 2018
    • Alexander Diewald's avatar
      DI: Add decoder plugin mechanism. · e11234f6
      Alexander Diewald authored
      
      * Update Guice to a self-compile version that allows overriding
        @Provides methods.
      * Create an "@PluginDecoder" annotation along with a MethodInterceptor
        that intercepts such annotated decode methods. It launches all decode
        methods that provide the same phenotype prior to executing itself
        (sub-decoding). These sub-decoders are providing updates to the
        phenotype before the actual decoding is executed.
        NOTE: Sub-decoder methods must be annotated with the "@Named("XYZ")"
        key where XYZ is the class name of the decoder. This is required to
        avoid @Provides methods that would return the same type.
      * Re-create the DecoderModules by the Guice Injector before passing them
        to the GuiceDecoder such that Method Interceptors can be installed
        before the GuiceDecoder is instantiated.
      * Correct the integration of the PlatformCommunicationGraphEncoding.
      * Add more required @Provides Methods to the SystemModelAdapter.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      e11234f6
  2. Aug 01, 2018
    • Alexander Diewald's avatar
      DSE-Process: Add an ExplorationFeature service. · fdd0872a
      Alexander Diewald authored
      
      * The IExplorationFeatureService allows to add extensions to the DSE
        process that consist of sub-modules, e.g., Variables, Evaluations,
        or additional operations on existing encodings.
      * While the IExplorationFeatureService is used to manage all existing
        extensions, the activated ones (configuration) is passed to the DSE
        by the exploration backend. Currently, the activated features are hard
        coded, but shall be moved to the UI.
      * Consequently, the IExplorationModuleService has bee removed. Its
        functionality has been moved to the ExplorationFeature abstract class
        that are single features registered with the
        IExplorationFeatureService.
      * The activated features now govern the installation of the sub-modules
        (Creators, Decoders), instead of the previous
        IExplorationModuleService.
      * When setting up the Opt4J exploration, the activated decoder
        configuration is now checked for consistency to avoid circular
        dependencies and duplicate responsibilities of decoders to create a
        phenotype.
      * An IExplorationFeature type is added to the MOEA ecore model to allow
        referencing exploration features from EMF classes.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      fdd0872a
  3. Jul 30, 2018
    • Alexander Diewald's avatar
      DI: Enable DI-based creators. · 07a0d830
      Alexander Diewald authored
      
      * Add a mechanism to analyze the Guice dependency graph to
        collect the set of genotypes that is required to obtain a
        requested Phenotype. The code is a modified version of
        the dependency graphs calculated within Guice's Grapher
        extension). The list of required Genotypes determines
        the list of creators to be launched.
      * Use OperatorModules from Opt4J to inject them into the fw
        instead of using custom ones (conflicting inheritance
        hierarchy).
      * Register Variables at the service level (Genotypes,
        Creators, Operators).
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      07a0d830
  4. Jul 14, 2018
    • Alexander Diewald's avatar
      DI: Base the DSE architecture on DI. · dea0bffa
      Alexander Diewald authored
      
      * Create a top-most injector (DSE injector) when the explorer is
        created. It hosts the Opt4J injector and allows accessing data from
        the DSE from within Opt4J Modules.
      * Enable Multi-Operator bindings (multiple operators from which one is
        selected to be applied on the same Genotype-Type) by the Operator's
        type. This is required to allow injecting DSE-wide parameters, e.g.,
        system model data.
        * Use a OperatorKey to allow registering Operators Objects or their
          Classes in the selection map.
        * Operators registered by their type are initialized lazily when they
          are delivered by the OperatorSelector on request.
      * Remove various dependencies on the SystemModelAdapter (Use DI where
        data is needed). This allows to break up very complex inheritance
        hierarchies.
      * Extend the SystemModelAdapter to use @Provides annotations that are
        used in opt4j modules (e.g. decoders) to obtain system model data.
      * Some of the old custom factories are now initialized with a null value
        for the SystemModelAdapter since they will be removed soon due to the
        use of DI.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      dea0bffa
    • Alexander Diewald's avatar
      DI: Update Opt4J for fixed child injector behavior. · c4fedc10
      Alexander Diewald authored
      
      * Self-build version that allows to embed the opt4j injector as a child
        injector.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      c4fedc10
    • Alexander Diewald's avatar
  5. Jul 10, 2018
    • Alexander Diewald's avatar
      DI: First "operational" decoding chain. · 0498c90c
      Alexander Diewald authored
      
      * Refactoring: Remove unneeded Generics from several encodings and
        adapters. It is not possible in Guice to bind arbitrary Generics
        without additional concepts and a lot of implementation work. Thus,
        reduce the use of generics where possible.
      * Modify the decoders to contain Provides methods that are resolved by
        the Guice injector to resolve the execution order.
      * Reduce a lot of boilerplate code from the Decoders that was required
        by the old JGraphT-based Decoding.
      * Only support FailSafeTaskMappingEntries for now: The genericification
        shall be discussed anyways.
      * Register the guicified decoders in the Service registration class
        ExplorationAlg.
      * Don't allow double registration of Guice Modules in the
        ExplorationModule service.
      * Add a ThreadLocalScope that may be required for parallelization to
        ensure using the correct genotypes in the decoders.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      0498c90c
  6. Jul 04, 2018
    • Alexander Diewald's avatar
      DI: Prototype for ExplorationModule service based decoding. · 7b045f36
      Alexander Diewald authored
      
      * YELLOW: ExplorationExceptions.
      * Add ExplorationServiceRuntimeExceptions for cases where no exceptions
        may be thrown (e.g., startup methods).
      * Modify the ExplorationModule service such that instances of them must
        be registered instead of their types (no-arg constructors).
      * Add the ExplorationModule service to the plugin startup class.
      * Register the FailSilentTaskMappingDecoder.
      * Adjust the FailSilent- and FaultTolerantTaskMappingDecoder such that
        they use the new Guice DI mechanism.
      * Remove the creation methods of the above decoders from the DSE
        factories.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      7b045f36
  7. Jul 03, 2018
  8. Jul 02, 2018
  9. Jun 27, 2018
    • Alexander Diewald's avatar
      Guice: Proof of concept impl for decoder dependencies. · 81a3cabc
      Alexander Diewald authored
      
      * Testwise implementation of a decoding mechanism that is intended to
        replace the current dependency declaration and resolution mechanism
        with the Guice framework. This step should allow to reduce a lot of
        boilerplate code and ease maintenance.
      * The mechanism is is based on the "Providers" and "@Provide"
        annotation in combination with "@Inject" fields that declare the
        input dependencies.
      * TODOs:
      ** Switch all decoders to the new mechanism.
      ** Reduce the mountain of abstraction code that is not really required
         to configure the DSE.
      ** Implement a service mechanism that binds the guice modules belonging
         to an exploration feature.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      81a3cabc
  10. Jun 26, 2018
    • Alexander Diewald's avatar
      DSE-DI: Cleanup for DI-based decoders (DI --> Guice). · 540c157b
      Alexander Diewald authored
      
      * Create a GuiceDecoder class that serves as a container at which
        Guice-based decoders can be registered. It calls the Decoder that
        provides the demanded output encoding (Provides annotation). The
        Guice injector will be responsible to resolve the dependencies between
        the decoders.
      * Simplify the Phenotype classes such that there exists only a single
        phenotype that can host sub-phenotypes.
      * Also remove the generic from the phenotype that declares it's primary
        input genotype: There is almost no gain in terms of safety/robustness
        versus a ton of code complications.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      540c157b
  11. Jun 08, 2018
  12. Apr 27, 2018
  13. Apr 17, 2018
  14. Mar 28, 2018
    • Alexander Diewald's avatar
      Exploration(.*): Fix containment relations. · a865d755
      Alexander Diewald authored
      When using a non-z3 backend (here: the unofficial MOEA backend) that makes a more extensive use of the ExplorationSolution, invalid models can be produced. The reason for this behavior are faulty containment relations since the produced model fragments of the DSE were not contained in any other EObject. Here, it shall be noted that the SuperSets themselves are not intended as containers as of now since they are also used to pass around references to the relevant elements of a DSE.
      
      Furthermore, one warning was produced due to an EAttribute not being set (noticeable on the console).
      
      Technical details:
      
      * getCastedType(...): Used to avoid ugly casting in client code. The DSE language is based on generic IModelElements, whereas the Sets/SuperSets are strict w.r.t. to the types to provide guarantess for the DSE I/O.
      * The ExplorationSpecification now contains the the map of input parameters passed to the DSE (Tracing), but not its elements (!).
      * ExplorationSolution: 
      * * Contains the returned SuperSetMap.
      * * Added a "pool" for SuperSets: They are accessible via the SuperSetMap.
      * * Added a element "pool" for the generated elements referenced by the returned SuperSets.
      * DSMLModelElementFactory: Creating Sets now requires a reference to the SuperSet (reduced code redundancy; can be used for robustness checking later).
      * Adapt to the meta-model changes when using SuperSets/Sets (esp in the smt plugin).
      refs 3353
      a865d755
    • Alexander Diewald's avatar
      9bec3c26
    • Alexander Diewald's avatar
      Exploration.alg: Exponential penalty funcion for NoEmptyPartitionConstraint. · 5f9e344c
      Alexander Diewald authored
      * Using exponential functions for the penalty calculation of constraints is common practice and favored over pure potential functions.
      refs 3257
      5f9e344c
  15. Mar 22, 2018
  16. Mar 19, 2018
  17. Mar 14, 2018
  18. Mar 08, 2018
  19. Mar 07, 2018
    • Alexander Diewald's avatar
      Exploration.alg: Add the partition model export. · 9f05e450
      Alexander Diewald authored
      * Add SuperSets to the transformation interface: The dependency handling is still missing.
      * Transformation for generated partitions.
      * Transformation for Partition to ExecutionUnit allocations.
      * transformation for Task to Partition Allocations.
      refs 3257
      9f05e450
  20. Feb 27, 2018
  21. Feb 21, 2018
    • Alexander Diewald's avatar
      Exploration: DSE project MM improvements & DSE Backend Unification · fbefcaea
      Alexander Diewald authored
      =================
      | Exploration
      
      exploration.ecore
      =================
      - ExplorationSpecification
        - targets: non-contained (Migrator!)
        - Add superSet reference to pass required SuperSets to the DSE backend.
      - Remove ExplorationSolution interface: No Migration needed.
      - Rename ExplorationSolutionSet --> ExplorationSolution
        - Deprecated inputModelAdapter: No migration needed, only used in MOEA.
        - Renaming: targetSpecification --> explorationSpec
          - targetSpecification marked @deprecated
          - No mirgator needed: Class was not used in previous stable releases.
      - Add EClass SuperSetMap: Relates types of elements to SuperSets
        - solution: EJavaClassToSuperSetMap (containment!)
      - Add EClass EJavaClassToSuperSetMap: internal map of "SuperSetMap"
        - key: Class
        - Value: SuperSet (NO containment!)
      - ExplorationSolution
        - Renamed solutionModelMap -> solutionSets
          (Type EJavaClassToEJavaObjectMap -> EJavaClassToSuperSetMap)
        - Adjust EOperations to modifications in backend map.
      - SingleExplorationSolution
        - Add the solution state for single solutions.
        - Adjust EOperations to modifications in backend map.
      - Removed EJavaClassToEJavaObjectMap
      
      dseproject.ecore
      ================
      - DSE:
        - Add EReference target: ExplorationTarget (containment)
        - Remove explorationSpecification (Migrator!)
      - Add an ExplorationTargetPool that contains all ExplorationTargets of a DSE
        project.
      - DSERun:
        - Add EReference explorationSolution (containment)
        - Remove EReference visualization (Migrator!)
        
      dsl_v2.ecore
      ============
      - Overwrite the accept method for the Sum expression: Do not return null if the
        associated set is empty, evaluate to Zero, instead.
      
      New Migrators
      =============
      - DSEExplorationTargetContainmentMigrator
        Migrates the set of explorationTargets to the DSE project
      - VisualizationToExpSolutionMigrator:
        Migrates the Visualization data to the ExplorationSolution representation that
        allows a better traceability.
        
      Other Business
      ==============
      - Adjust plugin.xml to account for recently removed Objective- and
        ConstraintExpression classes. Now, ExplorationObjective and
        ExplorationConstraint is used.
        
      =================
      | Exploration.alg
      
      - Adjust the Opt4JBackend to be comply to the new DSE Backend Specification
      - The output type detection in the base decoder is more robust.
      - The ITaskAdapter temporally references its corresponding component to ease
        the refactoring of the DSE backend interface. This shall not be needed when
        the transformation framework is integrated again.
      - Temporally transform the internal solutions to a superset of
        ComponentToExecutionUnitAllocations to create s solution model. Workaround
        until the transformation framework is integrated again.
      - Misc adjustment for backend changes.
      
      =================
      | Exploration.smt
      
      - Adjust the Z3Backend to be comply to the new DSE Backend Specification
      - Base the results of the DeploymentRun2 and SolverRun2 on the
        ExplorationSolution (see above).
      
      ================
      | Exploration.ui
      
      - Adjust the GUI logic to account for the changed containment relations.
      - Update the DSE project import wizard for the Meta-Model changes.
      - Move the ExplorationSolutionVisualizationUtils class to the UI plugin (here).
        It is used to transform ExplorationSolutions to a Visualization representation
        (i.e., DataSetCollection).
      - Use doubles instead of ints in the SpiderChartUtils. Although not a proper
        solution, this covers more cases... Instead the generic should be reflected.
      refs 3273
      fbefcaea
  22. Feb 13, 2018
    • Alexander Diewald's avatar
      Exploration(.*): Remove outdated EClasses. · 0ac78eeb
      Alexander Diewald authored
      * No migration needed due to the eClasses' abstract/interface nature.
      * Removed ObectiveExpression
      * Removed ConstraintExpression
      * Removed ExplorationTargetExpression
      * Removed GenericObjective
      * Removed GenericConstraint
      refs 3273
      0ac78eeb
  23. Feb 12, 2018
Loading