Skip to content
Snippets Groups Projects
  1. Oct 02, 2018
  2. Sep 27, 2018
  3. Sep 26, 2018
  4. Sep 25, 2018
  5. Sep 24, 2018
  6. Sep 17, 2018
  7. Sep 15, 2018
  8. Sep 13, 2018
    • Alexander Diewald's avatar
      Parameters: Improved defaults. · e9c52c60
      Alexander Diewald authored
      
      * The previous parameter set caused the optimizer to spend half of the
        iterations for random generation, not the search itself. Now, only the
        first 5 iterations are spent on the creation of the initial pool.
      * Adjust the default of the parallel execution to "true".
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      e9c52c60
    • Alexander Diewald's avatar
      Merge branch 'rover_partition_generation' into 'master' · e8ce9cc0
      Alexander Diewald authored
      Rover partition generation
      
      See merge request !3
      e8ce9cc0
    • Alexander Diewald's avatar
      Operators: Compare Operators by their type. · 4f59c39f
      Alexander Diewald authored
      
      * An injection exception occurred when launching the MOEA DSE a second
        time from the same AF3 instance. Here, operator modules that maintain
        an internal map keep the entries of the previous run (which are
        replaced). This triggered an equals check of operator keys when the
        operators for the next execution should be placed in the internal
        operator selector maps. Within the equals check, one operator (from
        the prev. execution) had an instance of the operator such that the
        comparision would be based on the operator instances. Thus, an
        operator would be instantiated by the given injector during the
        binding phase causing the Exception.
      * In order to obtain a correct operator representation in the internal
        maps an to resolve the above problem, base the Operator Key hash and
        equals method on the OperatorTypes only. We only allow one operator
        type per genotype anyways such that the new equals operation correctly
        implements the concept and "old" operator instances are cleaned out.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      4f59c39f
    • Alexander Diewald's avatar
      3f931a66
    • Alexander Diewald's avatar
      09a7e583
    • Alexander Diewald's avatar
      Multithreading: Thread-safe for large models. · 06475537
      Alexander Diewald authored
      
      * Use scope enter and exit calls to clean cached objects in thread-
        specific caches such as the PhenotypeCache that is used to collect the
        results of the decoders in  a single top-most decode() call.
      * Add the @ThreadedMethod annotation to trigger the Treaded scope entry
        and exit calls for cache handling. It denotes that the code within
        such an annotated method places objects the cache that need to be
        removed after exiting the method. An method interceptor is used for
        this purpose.
      * Pass Injectors to demanding classes such as the GuiceDecoder by the
        Provides mechanisms.
      * Extend the usage of the injector to generate objects (not DSE-process
        specific objects).
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      06475537
  9. Sep 09, 2018
    • Alexander Diewald's avatar
      DI: Add missing bits for parallel DSE processing. · f51fb646
      Alexander Diewald authored
      
      * Modify the Dependency Visitor such that it can also evaluate the
        providers of artifacts instead of the artifacts alone.
      * Install only those Decoders and Creators in the DSE Process that are
        actually needed to produce the result types.
      * Correct the ThreadScope implementation.
      * Add a thread-local cache for the parallelized decode phase that
        collects the created Phenotypes.
      * Modify the cache mechanism for the create phase similar to the
        thread-local cache of the decode phase.
      * Change the register mechanism of CreatorModules and OperatorModules
        such that they can be associated with their corresponding Genotype
        more easily.
      * CreatorModules used in the DSE process are now created by Guice to
        allow method interception (evil bug fixed).
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      f51fb646
  10. Sep 07, 2018
    • Alexander Diewald's avatar
      ExpFeatures: Use the ExplorationFeature service for OperatorModules. · 28aa3728
      Alexander Diewald authored
      
      * ExplorationFeatures:
      ** Add a method to the IExplorationFeatures that checks whether the
         available input system models justify the application of a certain
         feature. This is intended to detect cases where an ExplorationFeature
         would degenerate to a No-Op such that it is useless to be executed.
      ** Add a utility method that returns the set of ExplorationFeatures,
         which are enabled by the user (by a DseSpecificiation) and applicable
         to the given input system models.
      ** Change the ExplorationFeature(Service) such that a stronger coupling
         between Genotypes and its Creators and Operators exist: It is
         required to correctly register the operators with their corresponding
         Genotypes.
      * Copying:
      ** Add a "Copyable" interface that enforces the existence of a copy
         statement. This is the inverse approach as the Cloneable marker
         interface of Java.
      ** Add a mechanism that installs a default CopyModule if no specialized
         CopyModule is provided for a given Genotype. This implementation
         relies on the existence of the Copyable interface for each Genotype.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      28aa3728
  11. Aug 22, 2018
  12. Aug 12, 2018
    • Alexander Diewald's avatar
      Merge branch 'dependency_injection' into 'master' · 31ae470d
      Alexander Diewald authored
      Dependency injection
      
      See merge request !2
      31ae470d
    • Alexander Diewald's avatar
      Merge branch 'master' of https://git.fortiss.org/af3/exploration-alg.git into dependency_injection · e0d2e23f
      Alexander Diewald authored
      Conflicts:
      	org.fortiss.af3.exploration.alg/.classpath
      	org.fortiss.af3.exploration.alg/META-INF/MANIFEST.MF
      	org.fortiss.af3.exploration.alg/build.properties
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoder.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/problem/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/graph/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/graph/display/.ratings
      	org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/util/.ratings
      e0d2e23f
    • Alexander Diewald's avatar
      DI: Fully functional: Completely rework evaluation & data passing. · 4e0d3459
      Alexander Diewald authored
      
      * Switch the ExplorationEvaluationService to not rely on eclipse
        extension points but use java registration methods. This service has
        now a close relation to the ExplorationFeatureService that holds all
        ExplorationModules.
        Additional information and logic required for evaluation is found in
        the ExplorationEvaluationService.
      * Register the MappingEvaluatorObjective for DSML Expressions and the
        EvaluatorModules specific for the ParitionExploration.
      * Add the @Provides annotation to each evaluation function such that
        their method parameters are automatically injected by Guice.
      * Extract the parsing of IExpressions to parsers which are called from
        the corresponding IExplorationModules.
      * Provisioning interception:
        * Generalize the DecodingInterceptor into a ProvisionInterceptor such
          that it can be used for the create phase as well. Along, make the
          update mechanism via sub-modules providing same types optional (used
          only in the decode phase).
        * Add an Interceptor module such that already created Genotypes can be
          provided to other create methods that depend upon them. This avoids
          launching the create method for the same time several times, causing
          inconsistencies between the Genotypes.
        * Add a @Creates annotation for method interception binding.
      * Add additionally required @Provides annotation in the
        SystemModelAdaper.
      * Create a TaskMapper that encapsulates the Task -> ITaskAdapter
        associations. It is used, for instance, in the evaluators where the
        ExplorationTargets are defined on AF3 elements whereas the DSE
        internally works on reduced elements.
      * Remove the non-used cglib library.
      * Add the ByteBuddy library (v1.8.17) to be able to generate code at
        runtime. It is used to generate Provider Classes (using @Provides
        methods) that are supplied to the injectors of follow up phases (e.g.,
        decode -> evaluate) such that previous results are available to these
        injectors.
      * NOTE / IMPORTANT: This commit leaves several outdated and (now) unused
        classes in place. They will be removed in follow up commits.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      4e0d3459
  13. Aug 05, 2018
    • Alexander Diewald's avatar
    • Alexander Diewald's avatar
      DI: Decode phenotypes (same iteration, genotype) only once. · fdcd27a3
      Alexander Diewald authored
      
      * If a phenotype is requested as an input parameter by multiple
        decode methods, the decoding chain would be launched many times.
        In order to increase performance, remember the already decoded
        phenotypes in the GuiceDecoder and return them in case of subsequent
        requests.
      * Extend the decoding interceptor such that it request the map of
        already decoded phenotypes and looks for already decoded phenotypes.
        If one is found it is returned instaed of invoking the decode method.
      * All decode methods are now intercepted by the above mentioned
        interceptor. Decode methods MUST be annotated with "@Decodes" from now
        on.
      * Plugin-style decoders are still supported by marking Phenotypes if
        they are processed by sub-decoders. Otherwise, only sub-decoders would 
        be executed due to them placing the produced Phenotype in the above
        mentioned map.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      fdcd27a3
  14. 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
  15. 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
  16. Jul 31, 2018
  17. Jul 30, 2018
  18. 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
Loading