Skip to content
Snippets Groups Projects
  1. Nov 13, 2018
    • Alexander Diewald's avatar
      Introduce an Evaluate annotation · f90509b5
      Alexander Diewald authored
      
      * Replaces the identification of "evaluate" methods by a custom
        annotation that takes the parent Evaluator class as its argument to
        differentiate between evaluate methods across Evaluator boundaries.
        This is required by the binding mechanism of Guice.
      * Not yet ported Evaluators are not aligned with the new Annotation.
      * Bug Fixes:
      ** Register the MappingConstraintEvaluator.
      ** Correct the constructor of the MappingConstraintEvaluator.
      ** Fix parameter list of its evaluate method.
      
      Signed-off-by: default avatarAlexander Diewald <diewald@fortiss.org>
      f90509b5
  2. Nov 07, 2018
  3. Nov 06, 2018
  4. Oct 30, 2018
  5. Oct 02, 2018
  6. Sep 27, 2018
  7. Sep 26, 2018
  8. Sep 25, 2018
  9. Sep 24, 2018
  10. Sep 17, 2018
  11. Sep 15, 2018
  12. 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
  13. 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
  14. 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
  15. Aug 22, 2018
  16. 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
  17. 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
Loading