diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings index 8732d84450cc26fa68181840cd8cd337f44370b5..17c79725732f008672f0b57d113f9d111aa421d1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/annotation/valueprovider/.ratings @@ -1,3 +1,3 @@ ComponentImplDiversityRefValueProvider.java d2cbe7d1acefd9941a766ea7cf2ac958a4347ef6 RED -MaxReplicationBoundValueProvider.java 697ecf4593ec7fd29992b25b782ddf20f191c975 RED -MinReplicationBoundValueProvider.java 3e806929a039c49b83455b637bf16c079a9e9c29 RED +MaxReplicationBoundValueProvider.java 78cde3b9543ff06c9310f96de8ad24e9feacc5d4 RED +MinReplicationBoundValueProvider.java 7ef7176ae0f4e64ad0e0923f09f3bc8fe0a14b67 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings index 7997c2ae4b0347225485224440a03937d3d9c88d..1264a044e27f191598aa1de703f7d5a3a19b0f33 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/backend/.ratings @@ -1 +1 @@ -Opt4JDseBackend.java 2d4b0c96fcda02bf428fb5a6c02a48bbef74374b RED +Opt4JDseBackend.java 50254b3b5058ed77e8a868f3545fde16153217b1 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings index 14e19ce8e9d28acfdfc4197b18bd089da87491f9..f208d7d88821902bd3762ca21a3f1a0ac40f21c1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/.ratings @@ -1,6 +1,6 @@ CompositeExplorationSolution.java 528283a3dd57500539b2e11dd3d3eb35512de9b8 RED -DSEFactory.java 069d001586ce88cb320537b1411b1a3b8649003b RED -Explorer.java c857d21f603d09447953d3e4929aedb76b1b1bfd RED +DSEFactory.java 98b9133b3f33fe8c2d61f8bdab8ac97508872a6e RED +Explorer.java 9e0020b6a55bb035a41fb1bf4a1b709a7d6353f6 RED ImplicitExplorationTargetFactory.java 0b10dc4e8385bbdee0217dac783203080eb723f0 RED SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED -TaskMappingFactory.java eb8e4a8b70f9465b849dd5700f603f55aa26363e RED +TaskMappingFactory.java 14671417668c58cbfd97bb1fcebf0874895314e8 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java index 5400412739026bd3fe813ced9551f386779600aa..8712f4416d47f010b7348a293f8744ea97a29f00 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java @@ -18,6 +18,7 @@ package org.fortiss.af3.exploration.alg.dse; import static org.fortiss.tooling.kernel.utils.EcoreUtils.pickFirstInstanceOf; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.activation.UnsupportedDataTypeException; @@ -58,7 +59,11 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.taskmapping.ins import org.fortiss.af3.exploration.alg.dse.evaluator.ArchitectureEvaluator; import org.fortiss.af3.exploration.alg.dse.sysmodel.FailSilentExecModelFactory; import org.fortiss.af3.exploration.alg.dse.sysmodel.FaultDetectionVotingExecModelFactory; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IMemoryUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.fortiss.af3.exploration.moea.model.feature.SafetyExploration; @@ -72,6 +77,7 @@ import org.jgrapht.experimental.dag.DirectedAcyclicGraph.CycleFoundException; * @author diewald */ public class DSEFactory { + private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; /** The instance (singleton) of the {@link DSEFactory}. */ private static final class InstanceHolder { @@ -88,6 +94,11 @@ public class DSEFactory { return InstanceHolder.INSTANCE; } + // FIXME: Remove this method: it violates the sigleton pattern. + public void init(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + this.systemModelAdapter = systemModelAdapter; + } + /** * Creates/Registers the sub problem definitions that compose the overall architectural * exploration problem. @@ -107,9 +118,7 @@ public class DSEFactory { @SuppressWarnings("unchecked") public <C, S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> void createSubProblems(ArchitectureExplorationProblemModule archExpProblemModule, - DseSpecification dse, - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execDepGraph) throws Exception { + DseSpecification dse, DecoderDependencyGraph execDepGraph) throws Exception { // Java-limitation: it is not possible to pass the generic to the static methods. TaskMappingFactory<S, T> tmFactory = (TaskMappingFactory<S, T>)TaskMappingFactory.getInstance(); @@ -120,15 +129,12 @@ public class DSEFactory { sfExplorationModule.getAdapters().parallelStream() .forEach(a -> a.initializeAdapter(systemModelAdapter)); systemModelAdapter.addSafetyFunctionAdapters(sfExplorationModule.getAdapters()); - createSafetyFunctionArchProblem(archExpProblemModule, systemModelAdapter, execDepGraph); + createSafetyFunctionArchProblem(archExpProblemModule, execDepGraph); } - createPartitionMappingProblem(archExpProblemModule, dse, systemModelAdapter, execDepGraph); - createPlatformCommunicationGraphProblem(archExpProblemModule, systemModelAdapter, - execDepGraph); - createAbstractTaskMappingProblem(tmFactory, archExpProblemModule, dse, systemModelAdapter, - execDepGraph); - createTaskMappingInstantiationProblem(tmFactory, archExpProblemModule, dse, - systemModelAdapter, execDepGraph); + createPartitionMappingProblem(archExpProblemModule, dse, execDepGraph); + createPlatformCommunicationGraphProblem(archExpProblemModule, execDepGraph); + createAbstractTaskMappingProblem(tmFactory, archExpProblemModule, dse, execDepGraph); + createTaskMappingInstantiationProblem(tmFactory, archExpProblemModule, dse, execDepGraph); } /** @@ -148,20 +154,18 @@ public class DSEFactory { @SuppressWarnings("unchecked") private <C, T extends SafetyFunctionArchEncoding<C>> void createSafetyFunctionArchProblem( ArchitectureExplorationProblemModule archExpProblemModule, - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) throws Exception { // These suppress warnings are required since type erasure in Java does not allow to pass // XY<Z>.class. @SuppressWarnings("rawtypes") SafetyFunctionArchCreator sfCreator = - new SafetyFunctionArchCreator<C>(systemModelAdapter, execDepGraph); + new SafetyFunctionArchCreator(systemModelAdapter.getSafetyFunctionAdapters(), + execDepGraph); @SuppressWarnings("rawtypes") SFEncodingDecoder sfEncodingDecoder = new SFEncodingDecoder<>(); - @SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder = - new SFGraphDecoder<C>(systemModelAdapter); - @SuppressWarnings("rawtypes") SFMappingDecoder sfMappingDecoder = - new SFMappingDecoder<C>(systemModelAdapter); + @SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder = new SFGraphDecoder(); + @SuppressWarnings("rawtypes") SFMappingDecoder sfMappingDecoder = new SFMappingDecoder(); @SuppressWarnings("rawtypes") SFMappingConstraintDecoder sfMappingConstraintDecoder = - new SFMappingConstraintDecoder<C>(systemModelAdapter); + new SFMappingConstraintDecoder(); sfCreator.registerAssocDecoders(sfEncodingDecoder); sfCreator.registerAssocDecoders(sfGraphDecoder); @@ -174,6 +178,7 @@ public class DSEFactory { sfDecoders.add(sfMappingDecoder); sfDecoders.add(sfMappingConstraintDecoder); + execDepGraph.addCreatedEncoding(sfCreator.getCreatedEncodingType()); archExpProblemModule.registerSubProblem(SafetyFunctionArchEncoding.class, sfCreator, sfDecoders); } @@ -186,8 +191,6 @@ public class DSEFactory { * problem. * @param dse * The design space exploration description. - * @param systemModelAdapter - * The adapter to model of the system on which the dse is executed. * @param execDepGraph * Dependency graph defining the execution order. * @throws CycleFoundException @@ -196,11 +199,12 @@ public class DSEFactory { @SuppressWarnings("unchecked") private void createPartitionMappingProblem( ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) throws CycleFoundException { Class<PartitionMappingEncoding> pmEnodingClass = PartitionMappingEncoding.class; - PartitionMappingCreator pmCreator = - new PartitionMappingCreator(systemModelAdapter, execDepGraph); + PartitionMappingCreator pmCreator = new PartitionMappingCreator(execDepGraph, + (Collection<IExecutionUnitAdapter<?>>)(Collection<?>)systemModelAdapter + .getDeploymentTargets(), + systemModelAdapter.getDeployableComponents().size()); @SuppressWarnings("rawtypes") List<ComposableDecoder> pmDecoders = new ArrayList<>(); PartitionMappingIdentityDecoder pmDecoder = new PartitionMappingIdentityDecoder(); @@ -209,6 +213,7 @@ public class DSEFactory { pmDecoders.add(pmDecoder); pmDecoders.add(tiraDecoder); pmCreator.registerAssocDecoders(pmDecoder); + execDepGraph.addCreatedEncoding(pmCreator.getCreatedEncodingType()); archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders); } @@ -220,16 +225,25 @@ public class DSEFactory { @SuppressWarnings("unchecked") private void createPlatformCommunicationGraphProblem( ArchitectureExplorationProblemModule archExpProblemModule, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) throws CycleFoundException { Class<PlatformCommunicationGraphEncoding> pmEnodingClass = PlatformCommunicationGraphEncoding.class; - PlatformCommunicationGraphCreator pmCreator = - new PlatformCommunicationGraphCreator(systemModelAdapter, execDepGraph); + PlatformCommunicationGraphCreator pmCreator = new PlatformCommunicationGraphCreator( + execDepGraph, + (Collection<IExecutionUnitAdapter<?>>)(Collection<?>)systemModelAdapter + .getDeploymentTargets(), + (Collection<IMemoryUnitAdapter<?>>)(Collection<?>)systemModelAdapter + .getMemoryUnits(), + (Collection<IGatewayUnitAdapter<?>>)(Collection<?>)systemModelAdapter + .getGatewayUnits(), + (Collection<ITransmissionUnitAdapter<?>>)(Collection<?>)systemModelAdapter + .getTransmissionUnits(), + systemModelAdapter.getResouceConnections()); @SuppressWarnings("rawtypes") List<ComposableDecoder> pmDecoders = new ArrayList<>(); PartitionMappingDecoderGraph pmgDecoder = new PartitionMappingDecoderGraph(); pmDecoders.add(pmgDecoder); + execDepGraph.addCreatedEncoding(pmCreator.getCreatedEncodingType()); archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders); } @@ -246,8 +260,6 @@ public class DSEFactory { * problem. * @param dse * The design space exploration description. - * @param systemModelAdapter - * The adapter to model of the system on which the dse is executed. * @param execDepGraph * Dependency graph defining the execution order. * @throws Exception @@ -257,11 +269,10 @@ public class DSEFactory { private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> void createAbstractTaskMappingProblem(TaskMappingFactory<S, T> tmFactory, ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) throws Exception { Class<AbstractTaskMappingEncoding> tmEnodingClass = AbstractTaskMappingEncoding.class; AbstractTaskMappingCreator tmCreator = - tmFactory.createAbstractTaskMappingCreator(dse, systemModelAdapter, execDepGraph); + tmFactory.createAbstractTaskMappingCreator(dse, execDepGraph); @SuppressWarnings("rawtypes") List<ComposableDecoder> abstrTaskDecoders = new ArrayList<>(); AbstractTaskMappingDecoder<?, ?> atmDecoder = tmFactory.createAbstractTaskMappingDecoder(systemModelAdapter, dse); @@ -272,6 +283,7 @@ public class DSEFactory { tmCreator.registerAssocDecoders(atmDecoder); tmCreator.registerAssocDecoders(idtDecoder); + execDepGraph.addCreatedEncoding(tmCreator.getCreatedEncodingType()); archExpProblemModule.registerSubProblem(tmEnodingClass, tmCreator, abstrTaskDecoders); } @@ -289,8 +301,6 @@ public class DSEFactory { * problem. * @param dse * The design space exploration description. - * @param systemModelAdapter - * The adapter to model of the system on which the dse is executed. * @param execDepGraph * Dependency graph defining the execution order. * @throws Exception @@ -300,7 +310,6 @@ public class DSEFactory { private <S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> void createTaskMappingInstantiationProblem(TaskMappingFactory<S, T> tmFactory, ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) throws Exception { // These suppress warnings are required since type erasure in Java does not allow to pass // XY<Z>.class. @@ -312,7 +321,7 @@ public class DSEFactory { @SuppressWarnings("rawtypes") MessageDecoder msgDecoder = tmFactory.createMessageDecoder(systemModelAdapter); @SuppressWarnings("rawtypes") TaskMappingCreator tmCreator = - tmFactory.createTaskMappingCreator(dse, systemModelAdapter, execDepGraph); + tmFactory.createTaskMappingCreator(dse, execDepGraph); @SuppressWarnings("rawtypes") List<ComposableDecoder> instTaskDecoders = new ArrayList<>(); instTaskDecoders.add(tgDecoder); instTaskDecoders.add(acycTgDecoder); @@ -320,6 +329,7 @@ public class DSEFactory { instTaskDecoders.add(tmDecoder); tmCreator.registerAssocDecoders(instTaskDecoders); + execDepGraph.addCreatedEncoding(tmCreator.getCreatedEncodingType()); archExpProblemModule.registerSubProblem(InstantiatedTaskMappingEncoding.class, tmCreator, instTaskDecoders); } @@ -329,9 +339,8 @@ public class DSEFactory { * concrete architecture exploration problem, i.e. the {@link ArchitectureExplorationCreator} * calls the creators of the genotypes composing the architecture exploration problem. */ - public ArchitectureExplorationCreator createArchitectureExplorationCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new ArchitectureExplorationCreator(dse, systemModelAdapter); + public ArchitectureExplorationCreator createArchitectureExplorationCreator() { + return new ArchitectureExplorationCreator(); } /** @@ -366,10 +375,8 @@ public class DSEFactory { * DSE. * It delegates the subproblems to sub decoders, e.g. a decoder for the task mapping problem. */ - public ArchitectureDecoder createArchitectureDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execdepGraph) { - return new ArchitectureDecoder(systemModelAdapter, execdepGraph); + public ArchitectureDecoder createArchitectureDecoder(DecoderDependencyGraph execdepGraph) { + return new ArchitectureDecoder(execdepGraph); } /** @@ -378,8 +385,7 @@ public class DSEFactory { * It delegates the evaluation of the overall problem to sub-decoders, e.g. an evaluator of the * power consumption of a TT-schedule. */ - public ArchitectureEvaluator createArchitectureEvaluator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new ArchitectureEvaluator(systemModelAdapter); + public ArchitectureEvaluator createArchitectureEvaluator() { + return new ArchitectureEvaluator(); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java index 806837be7ba3b946ffd58948b73d8e589618844b..ca337e8dc13f299de0b27b4629f2afe54279cfc1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/Explorer.java @@ -87,6 +87,7 @@ public class Explorer { } // Extract external models to add them to the available input models. + // TODO: readd support for "external" EMF models for(ExplorationTarget<?> expTarget : expSpec.getTargets()) { if(expTarget instanceof ExternalModelTarget) { Collection<EObject> extModels = @@ -94,7 +95,6 @@ public class Explorer { for(EObject extModel : extModels) { @SuppressWarnings("unchecked") Class<? extends EObject> modelType = (Class<? extends EObject>)extModel.eClass().getInstanceClass(); - systemModelAdapter.putInputModel(modelType, extModel); } } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java index cdb34c19f1b7888ccbcfea187a4a5338c7852e69..ec27a950fe9120a27aa18721164bae268d6a03c0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java @@ -96,16 +96,13 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * * @param dse * design space exploration model defined in the GUI - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture * @param execDepGraph * Dependency graph defining the execution order. * @return instance of an {@link AbstractTaskMappingCreator}. */ public AbstractTaskMappingCreator createAbstractTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) { - return new AbstractTaskMappingCreator(dse, systemModelAdapter, execDepGraph); + return new AbstractTaskMappingCreator(dse, execDepGraph); } /** @@ -113,15 +110,12 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * * @param dse * design space exploration model defined in the GUI - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture * @param execDepGraph * Dependency graph defining the execution order. * @return instance of a {@link TaskMappingCreator}. */ // TODO: document execDepGraph param. public TaskMappingCreator<S, T> createTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -132,15 +126,12 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * * @param dse * design space exploration model defined in the GUI - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture * @param abstractEnc * encoding that may contain abstract task which need to be instantiated. * @return instance of a {@link TaskMappingCreator}. */ // TODO: update doc public TaskMappingCreator<S, T> createTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, AbstractTaskMappingEncoding abstractEnc) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings index b88f42483b86ce2365e2304303afbea1ae7eaf34..b4cea5d757fb8cdc91d11c623aabff492f5de198 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/.ratings @@ -1 +1,2 @@ -ArchitectureExplorationCreator.java 5bbd448f433da0e455e026f9452b7bccf67e4905 RED +ArchitectureExplorationCreator.java d0a638d783ec90959bf1f95af42ea5a15606ebd2 RED +InitialEncodingProvider.java a265e1b07f9f5e7dfb3a7dd808240c39ad25f4f9 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java index d4bf0d59597b6d849ab55da9c838643195c968d3..1d101999bf56eca36a607b45c7e8fddb5fe06b67 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/ArchitectureExplorationCreator.java @@ -18,12 +18,8 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.ArchitectureExplorationEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.CompositeCreatorBase; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.problem.Creator; -import com.google.inject.Inject; - /** * {@link Creator} of the {@link ArchitectureExplorationEncoding} of an architectural exploration * problem, that consists of sub encodings. Refer to {@link ComposableGenotype} for further @@ -33,18 +29,6 @@ import com.google.inject.Inject; */ public class ArchitectureExplorationCreator extends CompositeCreatorBase<ArchitectureExplorationEncoding> { - - /** DSE specification */ - protected DseSpecification dse; - - /** Constructor. */ - @Inject - public ArchitectureExplorationCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - this.dse = dse; - } - /** {@inheritDoc} */ @Override public ArchitectureExplorationEncoding createComposite() { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java new file mode 100644 index 0000000000000000000000000000000000000000..d19f0843418c111181d7f359559c23f4864c1e91 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/InitialEncodingProvider.java @@ -0,0 +1,86 @@ +/*-------------------------------------------------------------------------+ +| Copyright 2018 fortiss GmbH | +| | +| Licensed under the Apache License, Version 2.0 (the "License"); | +| you may not use this file except in compliance with the License. | +| You may obtain a copy of the License at | +| | +| http://www.apache.org/licenses/LICENSE-2.0 | +| | +| Unless required by applicable law or agreed to in writing, software | +| distributed under the License is distributed on an "AS IS" BASIS, | +| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | +| See the License for the specific language governing permissions and | +| limitations under the License. | ++--------------------------------------------------------------------------*/ +package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; +import org.opt4j.core.Genotype; + +/** + * Holds encodings which are generated from the input models. In contrast to {@link Genotype}s, they + * are not considered as variables by the optimizer. + * Nevertheless, this provider may also hold {@link Genotype} encodings for the case that an + * exploration feature is disabled, but it's outputs would be required by dependent features. The + * provider is responsible to provide the required inputs iff these inputs can be constructed from + * the input models. + * + * @author diewald + */ +public class InitialEncodingProvider { + /** Holds the instance. */ + private volatile static InitialEncodingProvider INSTANCE; + + /** Constructor. */ + private InitialEncodingProvider() { + // Prevent direct instantiation of this singleton. + } + + /** Returns the instance of this singleton. */ + public static synchronized InitialEncodingProvider getInstance() { + if(INSTANCE == null) { + INSTANCE = new InitialEncodingProvider(); + } + return INSTANCE; + } + + /** + * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@code this} + * {@link SystemModelAdapter} by their corresponding types. + */ + private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings = + new HashMap<>(); + + /** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */ + public <T extends IExplorationEncoding> void registerInputEncoding(T encoding) { + @SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass(); + assert (!inputEncodings.containsKey( + encodingType)) : "You are trying to add an encoding to the input encoding whose type is already registered. This is not supported"; + inputEncodings.put(encodingType, encoding); + } + + /** Returns the input encoding of the given type. */ + @SuppressWarnings("unchecked") + public <T extends IExplorationEncoding> T getInputEncoding(Class<T> encodingType) { + return (T)inputEncodings.get(encodingType); + } + + /** + * Returns the collection of {@link IExplorationEncoding} types that are availably through + * {@code this} {@link SystemModelAdapter}. + */ + public Set<Class<? extends IExplorationEncoding>> getRegisteredEncodingTypes() { + return inputEncodings.keySet(); + } + + /** Empties the currently held encodings. */ + public void clearEncodings() { + inputEncodings.clear(); + } +} diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings index ec4315b53f38c11d946adb7b377bdb6dacca5d0e..b6c77c3ab45670bbfcfc21b45065260528ca28d3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings @@ -1 +1 @@ -PartitionMappingCreator.java c5536fccefbe437360efe9fe8a60409991192243 RED +PartitionMappingCreator.java 624850b3bbf31e965005ed1acf8622e81f1103b6 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java index 7849120558e41c2b3ce76c6a6d82ebf126d1634a..6c83f8a857b0fa1e1bf90121a91d58038ed5d9d0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/PartitionMappingCreator.java @@ -15,6 +15,8 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.partitionmapping; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding.CREATE_STARTEGY; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase; @@ -22,7 +24,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.opt4j.core.problem.Creator; @@ -33,29 +35,34 @@ import org.opt4j.core.problem.Creator; * @author diewald */ public class PartitionMappingCreator extends ComposableCreatorBase<PartitionMappingEncoding> { + /** Physical execution units. */ + private Collection<IExecutionUnitAdapter<?>> execUnits; + + /** Number of tasks to allocate to partitions. */ + int numTasks; /** Constructor. */ - public PartitionMappingCreator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph depGraph) { - super(systemModelAdapter, depGraph); + public PartitionMappingCreator(DecoderDependencyGraph depGraph, + Collection<IExecutionUnitAdapter<?>> execUnits, int numTasks) { + super(depGraph); + this.execUnits = execUnits; + this.numTasks = numTasks; } /** {@inheritDoc} */ @Override public PartitionMappingEncoding createComposable(FlatGenotypeMap createdGenotypes, FlatPhenotypeMap<Phenotype> decodedPhenotypes) { - // TODO In order to correctly choose the create strategy here, we'd need to know the - // population size. For now, we assume an initial population size of 25. - final int INIT_POP_SIZE = 25; - // "Probability distribution" for the strategy selection: | 1 | 23 | 1 | ==> 25 - int strategySelIdx = RandomExploration.getInstance().nextInt(INIT_POP_SIZE); + // "Probability distribution" for the strategy selection: |1|numTasks - 2|1| ==> numTasks + int strategySelIdx = RandomExploration.getInstance().nextInt(numTasks); switch(strategySelIdx) { case 0: - return new PartitionMappingEncoding(systemModelAdapter, CREATE_STARTEGY.MIN_SET); + return new PartitionMappingEncoding(execUnits, numTasks, CREATE_STARTEGY.MIN_SET); case 24: - return new PartitionMappingEncoding(systemModelAdapter, CREATE_STARTEGY.MAX_SET); + return new PartitionMappingEncoding(execUnits, numTasks, CREATE_STARTEGY.MAX_SET); default: - return new PartitionMappingEncoding(systemModelAdapter, CREATE_STARTEGY.RANDOM_SET); + return new PartitionMappingEncoding(execUnits, numTasks, + CREATE_STARTEGY.RANDOM_SET); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings index 98d16b028d0e71aae562862f2cd15eaa6635f490..8581fab183fd7b440ada1fc4e78bd8385033085d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings @@ -1 +1 @@ -PlatformCommunicationGraphCreator.java 072bb6445dc182931ef28e47dbaad19ae87cc3d6 RED +PlatformCommunicationGraphCreator.java fd016186eea8e716f9f6699b46c5d386acf2db8a RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java index 9427662c76976c40febfb02b1ec83b4da6417d4b..54301f92ded2065b76a45ad27aeb6a8dcbac01fb 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/PlatformCommunicationGraphCreator.java @@ -15,14 +15,26 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.platform; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.FlatGenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IMemoryUnitAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITransmissionUnitAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; +import org.jgrapht.DirectedGraph; +import org.jgrapht.Graphs; +import org.jgrapht.graph.DefaultDirectedGraph; +import org.jgrapht.graph.DefaultEdge; /** * @@ -30,24 +42,76 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; */ public class PlatformCommunicationGraphCreator extends ComposableCreatorBase<PlatformCommunicationGraphEncoding> { + /** Execution Units present in the input models. */ + private Collection<IExecutionUnitAdapter<?>> execUnits; + /** Memories present in the input models. */ + private Collection<IMemoryUnitAdapter<?>> memoryUnits; + /** Gateways present in the input models. */ + private Collection<IGatewayUnitAdapter<?>> gatewayUnits; + /** Transmission Units present in the input models. */ + private Collection<ITransmissionUnitAdapter<?>> transmissionUnits; + /** Connections between resources present in the input models. */ + private Collection<IResourceConnectionAdapter> resourceConnections; + /** Constructor. */ - public PlatformCommunicationGraphCreator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph depGraph) { - super(systemModelAdapter, depGraph); + public PlatformCommunicationGraphCreator(DecoderDependencyGraph depGraph, + Collection<IExecutionUnitAdapter<?>> execUnits, + Collection<IMemoryUnitAdapter<?>> memoryUnits, + Collection<IGatewayUnitAdapter<?>> gatewayUnits, + Collection<ITransmissionUnitAdapter<?>> transmissionUnits, + Collection<IResourceConnectionAdapter> resourceConnections) { + super(depGraph); + this.execUnits = execUnits; + this.memoryUnits = memoryUnits; + this.gatewayUnits = gatewayUnits; + this.transmissionUnits = transmissionUnits; + this.resourceConnections = resourceConnections; } /** {@inheritDoc} */ @Override public PlatformCommunicationGraphEncoding createComposable(FlatGenotypeMap createdGenotypes, FlatPhenotypeMap<Phenotype> decodedPhenotypes) { - PlatformCommunicationGraphEncoding pcgEncoding = new PlatformCommunicationGraphEncoding( - systemModelAdapter, systemModelAdapter.createGraph()); - // Debug code - // if(isDebugVerboseEnabled()) { - // pcgEncoding.display(); - // } - return pcgEncoding; + DirectedGraph<IResourceAdapter<?>, DefaultEdge> tempPlatformCommGraph = + new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class); + DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph = + new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class); + + // Add all resources present in the platform as vertices to the "connection graph" + Graphs.addAllVertices(tempPlatformCommGraph, execUnits); + Graphs.addAllVertices(tempPlatformCommGraph, memoryUnits); + Graphs.addAllVertices(tempPlatformCommGraph, gatewayUnits); + Graphs.addAllVertices(tempPlatformCommGraph, transmissionUnits); + + // Successively connect the resources in the graph. The edges are given within the + // collection resource connectors are assumed to be fully connected. + for(IResourceConnectionAdapter connection : resourceConnections) { + // We add edges for each receiver in order to support broadcast connections + for(IResourceAdapter<?> currentReceiverResource : connection.getTargetResources()) { + // If the current resource is a child of a {@link TransmissionUnit} (like a NoC + // router), respect the direction of connections such that complex networks are + // correctly reflected. + if(connection + .getConnectionType(currentReceiverResource) == ConnectionType.OUTGOING) { + Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(), + currentReceiverResource); + } else if(connection + .getConnectionType(currentReceiverResource) == ConnectionType.INCOMING) { + Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource, + connection.getSourceResource()); + } else { + // Add the edges of a single connection. We add to edges for each connection + // such that an undirected graph is generated effectively. It is required to use + // this "trick" in order to be able to use the standard shortest path + // algorithms. + Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(), + currentReceiverResource); + Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource, + connection.getSourceResource()); + } + } + } + return new PlatformCommunicationGraphEncoding(platformGraph); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings index 20c6ada402194e67d871eb2aaba16673f5e7c659..a6d95f4febd71947302f178f93ab1061fcd54de8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/.ratings @@ -1 +1 @@ -SafetyFunctionArchCreator.java 26770ef069fd786ecf579cbb761a1071073c975d RED +SafetyFunctionArchCreator.java 29178efd61d31c86d719a8fac9a110745e3cf5aa RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java index eea946000bedef55ccbe394d6efb59dd8327d22f..e15712cd3dbf2a62f38c5dcad6cf101fff8525e1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/safetyfunctionarch/SafetyFunctionArchCreator.java @@ -15,12 +15,14 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.safetyfunctionarch; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.FlatGenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISafetyFunctionAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import com.google.inject.Inject; @@ -33,12 +35,15 @@ import com.google.inject.Inject; */ public class SafetyFunctionArchCreator<C> extends ComposableCreatorBase<SafetyFunctionArchEncoding<C>> { + /** Collection of safety functions present in the system. */ + Collection<ISafetyFunctionAdapter<C>> sfAdapters; /** Constructor. */ @Inject - public SafetyFunctionArchCreator(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter, + public SafetyFunctionArchCreator(Collection<ISafetyFunctionAdapter<C>> sfAdapters, DecoderDependencyGraph execDepGraph) { - super(systemModelAdapter, execDepGraph); + super(execDepGraph); + this.sfAdapters = sfAdapters; } /** {@inheritDoc} */ @@ -48,8 +53,7 @@ public class SafetyFunctionArchCreator<C> FlatPhenotypeMap decodedPhenotypes) { // It is clear that the generic is right. However, the compiler does not get it. Thus, // suppress the corresponding Warnings. - return new SafetyFunctionArchEncoding(systemModelAdapter.getSafetyFunctionAdapters(), true, - true); + return new SafetyFunctionArchEncoding(sfAdapters, true, true); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings index 049b045ec5a5b679a316f32fa856fd9508249624..5c511d7e9aac6e74a0be16e8b3bd8f9e78fd7981 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings @@ -1,4 +1,4 @@ -AbstractTaskMappingCreator.java 1e4473c63abb2aa49b0d85a96ad0de025f42bebb RED -FailSilentTaskMappingCreator.java ec7daa0d1bd3c42eedc69a5d955269e7ff3798d0 RED -FaultDetectionVotingTaskMappingCreator.java 34efb7f7574f833aac75c8f4f80d4d5da0dd9c37 RED -TaskMappingCreator.java e5aa46677ddc797f92847dfe3179a22424a780f8 RED +AbstractTaskMappingCreator.java f0cee5bfa4e83539c2b7ad2ac8e66c1457c39ab5 RED +FailSilentTaskMappingCreator.java e21d4f6d6ed24fb42adeb9cd9f7b0069aeb40fd5 RED +FaultDetectionVotingTaskMappingCreator.java 8b18ef5401d28cc61ba4ce3545c16d531289549e RED +TaskMappingCreator.java 154b1528e3b96078a4f00a633adce5fbe6233151 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java index f8bcc0e592e19886759962b980f25484c1b19c69..813a927b1b10b29e7707f4207901d3e0a3529b43 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java @@ -24,7 +24,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.exploration.moea.model.DseSpecification; @@ -44,10 +43,8 @@ public class AbstractTaskMappingCreator /** Constructor */ @Inject - public AbstractTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execDepGraph) { - super(dse, systemModelAdapter, execDepGraph); + public AbstractTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { + super(dse, execDepGraph); } /** @@ -69,7 +66,7 @@ public class AbstractTaskMappingCreator createdGenotypes.get(AbstractTaskMappingEncoding.class); PartitionMappingEncoding partEnc = createdGenotypes.get(PartitionMappingEncoding.class); assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes."; - return new AbstractTaskMappingEncoding(dse, systemModelAdapter, partEnc, atgEnc, atmEnc); + return new AbstractTaskMappingEncoding(dse, partEnc, atgEnc, atmEnc); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java index e26e68115bd4c4fc3ad2c456a577156820977b5f..7375dc0d4c424606672e0fd88a2f97bf2f0c58ea 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java @@ -25,7 +25,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.exploration.moea.model.DseSpecification; @@ -44,10 +43,8 @@ public class FailSilentTaskMappingCreator * (execution model = fail-silent) */ @Inject - public FailSilentTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execDepGraph) { - super(dse, systemModelAdapter, execDepGraph); + public FailSilentTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { + super(dse, execDepGraph); } /** {@inheritDoc} */ @@ -62,7 +59,7 @@ public class FailSilentTaskMappingCreator assert (atmEnc != null) : "The required abstract task mapping encoding could not be found in the map of already decoded phenotypes."; PartitionMappingEncoding partEnc = createdGenotypes.get(PartitionMappingEncoding.class); assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes."; - return new FailSilentTaskMappingEncoding(dse, systemModelAdapter, partEnc, atgEnc, atmEnc); + return new FailSilentTaskMappingEncoding(dse, partEnc, atgEnc, atmEnc); } // TODO: remove this method: use the identifier from the encoding, instead. diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java index c1991126ae6537d97f53ac62b2eefcab9c7e1c59..0b8ce4eb8f73d3fa0fa1d3ef0d4ffec2e2be253e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java @@ -25,7 +25,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.exploration.moea.model.DseSpecification; @@ -45,9 +44,8 @@ public class FaultDetectionVotingTaskMappingCreator extends */ @Inject public FaultDetectionVotingTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) { - super(dse, systemModelAdapter, execDepGraph); + super(dse, execDepGraph); } /** {@inheritDoc} */ @@ -62,8 +60,7 @@ public class FaultDetectionVotingTaskMappingCreator extends assert (atmEnc != null) : "The required abstract task mapping encoding could not be found in the map of already decoded phenotypes."; PartitionMappingEncoding partEnc = createdGenotypes.get(PartitionMappingEncoding.class); assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes."; - return new FaultDetectionVotingTaskMappingEncoding(dse, systemModelAdapter, partEnc, atgEnc, - atmEnc); + return new FaultDetectionVotingTaskMappingEncoding(dse, partEnc, atgEnc, atmEnc); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java index 576da44e2c6d60430d2a0ecaa2ac0e26800f9b64..1b09ee1d49cd4a8424d922fa605463f810063c78 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java @@ -21,7 +21,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.create.ComposableCreatorBase; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.Genotype; import org.opt4j.core.problem.Creator; @@ -42,10 +41,8 @@ public abstract class TaskMappingCreator<S extends TaskMappingEntry<ITaskAdapter /** Constructor. */ @Inject - public TaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execDepGraph) { - super(systemModelAdapter, execDepGraph); + public TaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { + super(execDepGraph); this.dse = dse; } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings index 0f4a0e17f142d1283e093e570c34e2392c870a94..c2323e22d537ba3e9131040bb83ca81789da25bc 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/.ratings @@ -1 +1 @@ -MessageEncoding.java f52ba1f6179357209a1fd265238746102a1c3728 RED +MessageEncoding.java 523e16c2ec3d890b6715bfcd24ab39da4f850621 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings index 069573fa6a1bf56259a5dc15a353071b5637dd09..36e5d7bc48fd4097c975b8422473c9f75501acd2 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings @@ -1,3 +1,3 @@ Partition.java b870fdd306818d8195b662daee9546feebb28e18 RED -PartitionMappingEncoding.java 345a25f0324c07a8e4c5b83d2cabeae2ba7c9608 RED +PartitionMappingEncoding.java 45388dce4228074541b17410baabf30f9c22f858 RED PartitionMappingEntry.java 2f8f082e6bcd49dbe2f5ba88724850b54b20d637 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java index d298d291d8ae741714ee1bc08c446cd6e7a868be..0bad93c34b5d0abcb90034e3882211057643c218 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java @@ -23,8 +23,8 @@ import java.util.Map; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration; /** @@ -52,12 +52,11 @@ public class PartitionMappingEncoding extends /** Constructor. */ // TODO: The strategy can be replaced by lambdas for a cleaner design. - public PartitionMappingEncoding(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, + public PartitionMappingEncoding(Collection<IExecutionUnitAdapter<?>> targetSet, int numTasks, CREATE_STARTEGY strategy) { + this.targetSet = targetSet; // Number of tasks to deploy // TODO: This does not consider task replicas yet. - int taskNum = systemModelAdapter.getDeployableComponents().size(); - targetSet = systemModelAdapter.getDeploymentTargets(); if(strategy == CREATE_STARTEGY.MIN_SET) { for(IResourceAdapter<?> target : targetSet) { Partition part = new Partition(); @@ -65,7 +64,7 @@ public class PartitionMappingEncoding extends } } else if(strategy == CREATE_STARTEGY.RANDOM_SET) { for(IResourceAdapter<?> target : targetSet) { - int randMaxPartitions = RandomExploration.getInstance().nextInt(taskNum); + int randMaxPartitions = RandomExploration.getInstance().nextInt(numTasks); // Ensure at least one partition per phys. execution unit. randMaxPartitions = (randMaxPartitions < 1) ? 1 : randMaxPartitions; for(int i = 0; i < randMaxPartitions; ++i) { @@ -75,7 +74,7 @@ public class PartitionMappingEncoding extends } } else if(strategy == CREATE_STARTEGY.MAX_SET) { for(IResourceAdapter<?> target : targetSet) { - for(int i = 0; i < taskNum; ++i) { + for(int i = 0; i < numTasks; ++i) { Partition part = new Partition(); allocationMap.put(part, new PartitionMappingEntry(part, target)); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings index 1a3629389d11d4d12156a1c2877fa769c7e62773..d5a16a58dda581a60afc1af2c6111c6167b389d3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings @@ -1 +1 @@ -PlatformCommunicationGraphEncoding.java 5cd55e1eb23fdb27389dd95ef7edaf16bb4bc01e RED +PlatformCommunicationGraphEncoding.java 69cdf4968c8572f70b4360b0c027cf6cbfd28a92 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java index 2aa5bb16ea543fbc22af665bdcada91c71d921e8..e44f92b6a282bcb9dff02ed1a81653af69bb215d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java @@ -20,7 +20,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.graph.display.JGraphTVisualizer; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.jgrapht.DirectedGraph; @@ -36,25 +35,17 @@ import org.jgrapht.graph.DefaultEdge; */ public class PlatformCommunicationGraphEncoding implements IExplorationEncoding, ComposableGenotype, ComposablePhenotype<PartitionMappingEncoding>, Cloneable { - - /** Representation of input system model */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** The graph representing the communication structure of a platform. */ protected DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph; /** Constructor for the initial version of the Graph w/o available Partitions. */ public PlatformCommunicationGraphEncoding( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph) { - this.systemModelAdapter = systemModelAdapter; this.platformGraph = platformGraph; } /** Copy constructor. */ - protected PlatformCommunicationGraphEncoding( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + protected PlatformCommunicationGraphEncoding() { } /** Creates a Dialog that illustrates this {@link DirectedGraph}. */ @@ -82,9 +73,7 @@ public class PlatformCommunicationGraphEncoding implements IExplorationEncoding, @SuppressWarnings("unchecked") @Override public PlatformCommunicationGraphEncoding newInstance() { - PlatformCommunicationGraphEncoding pcgEncoding = - new PlatformCommunicationGraphEncoding(systemModelAdapter, this.platformGraph); - return pcgEncoding; + return new PlatformCommunicationGraphEncoding(platformGraph); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings index 4d759b43f02c1143ac95296fd93c785818de2b44..d5190aa79eabbd397dce962885f87a14fe02b356 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/.ratings @@ -1,5 +1,5 @@ -AbstractTaskGraphEncoding.java 5978cc6ab893cbd36e337da149b23f728885a923 RED -InstantiatedAcyclicTaskGraphEncoding.java d350697fc6ce436f0eb7466be1462b922f35f1ef RED -InstantiatedTaskGraphEncoding.java 9ac64514fb83bbc4f0258b3fc40ac40bd76a5f83 RED -SafeTaskGraphEncoding.java 2df896a20d2f1759b07de59385df00440a20e8a2 RED -TaskGraphEncoding.java 2b90454bea36e75301633fdeec83cf9a874d7269 RED +AbstractTaskGraphEncoding.java 40dfbbfac60f8c595e7e673e9e709736a1b9e091 RED +InstantiatedAcyclicTaskGraphEncoding.java 4541bb1f0c79aafbc88b49c0cbbe7c973153e1af RED +InstantiatedTaskGraphEncoding.java 01b03a6de225f5890a4a9764f127045c4748e14e RED +SafeTaskGraphEncoding.java 03cb22320614f1ad4c16fbe68acbe045ca7e89ef RED +TaskGraphEncoding.java be6960a7221e7383afc17be8734e982b1529db2f RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java index fd50f6bdb7a8f889bad359a52524b24d6d5ce7ee..3d297b8c0af9ebe6127102b88d4fcaff286146dc 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/AbstractTaskGraphEncoding.java @@ -15,6 +15,8 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; @@ -31,8 +33,8 @@ public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C> extends TaskGraphEncoding<G, C, DefaultTaskGraph<?>> { /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ - public AbstractTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public AbstractTaskGraphEncoding(Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) { + super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs); } /** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java index 67998b5b51bca104adcc270a0a0e0edaddb04af7..db1d1698e65c57928cbec26ce8f31855f636ab64 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedAcyclicTaskGraphEncoding.java @@ -38,16 +38,8 @@ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMapp /** * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}. */ - public InstantiatedAcyclicTaskGraphEncoding( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter, - Collection<DefaultTaskGraph<?>> taskGraphs) { - super(systemModelAdapter, AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs)); - } - - /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ - public InstantiatedAcyclicTaskGraphEncoding( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public InstantiatedAcyclicTaskGraphEncoding(Collection<DefaultTaskGraph<?>> taskGraphs) { + super(AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs)); } /** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java index cf1f8f170d773719dc18232745d6ae0e54a5d745..9b4f735d2e86a0e0c1991e4692c0d08a73763cc0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/InstantiatedTaskGraphEncoding.java @@ -35,15 +35,9 @@ public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntr /** * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}. */ - public InstantiatedTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter, - Collection<DefaultTaskGraph<?>> taskGraphs) { - super(systemModelAdapter, taskGraphs); - } - - /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ public InstantiatedTaskGraphEncoding( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) { + super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs); } /** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java index 5a2726db0a69d64b6535ed461bc7165989a107f1..7a845dd47445c026c153c59df72b651ee3925181 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/SafeTaskGraphEncoding.java @@ -15,9 +15,13 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; /** @@ -28,10 +32,13 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; */ public class SafeTaskGraphEncoding<C> extends AbstractTaskGraphEncoding<SafetyFunctionArchEncoding<C>, C> { + /** Collection of task graphs extracted from the input models. */ + Collection<TaskGraph> originalTaskGraphs; /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ - public SafeTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public SafeTaskGraphEncoding(Collection<TaskGraph> originalTaskGraphs) { + super((Collection<? extends DefaultTaskGraph<?>>)originalTaskGraphs); + this.originalTaskGraphs = originalTaskGraphs; } /** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */ @@ -39,6 +46,19 @@ public class SafeTaskGraphEncoding<C> super(encoding); } + /** + * Detects whether the {@link TaskGraph} of the input system model references any tasks of the + * internal {@link TaskGraph}s and returns the first matching {@link TaskGraph}. + */ + public TaskGraph getOriginalTaskGraph(ITaskAdapter<?> task) { + for(TaskGraph currTG : originalTaskGraphs) { + if(currTG.containsTask(task)) { + return currTG; + } + } + return null; + } + /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java index 3890f90dce7151bda197f44cd7eb60a842fc62aa..cab6a9c268ff19a2efe4c165b5a56dc5e1623a49 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskgraph/TaskGraphEncoding.java @@ -19,14 +19,12 @@ import static org.fortiss.af3.exploration.alg.util.GraphUtils.getGraphOf; import java.util.Collection; import java.util.HashSet; -import java.util.stream.Collectors; import org.eclipse.emf.ecore.EObject; import org.fortiss.af3.component.model.Component; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; @@ -41,10 +39,6 @@ import org.opt4j.core.Genotype; */ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> implements IExplorationEncoding, ComposablePhenotype<G>, Cloneable { - - /** References the {@link SystemModelAdapter} which adapts the input models. */ - protected SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** {@link TaskGraph} that represents the deployable components and their signals. */ protected Collection<T> taskGraphs; @@ -64,24 +58,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> * Constructor that initializes {@code this} encoding with the collection of * {@link ITaskAdapter}s as they are extracted from the input models. */ - @SuppressWarnings("unchecked") - public TaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - - taskGraphs = (Collection<T>)systemModelAdapter.getTaskGraphs().stream().map(tg -> tg.copy()) - .collect(Collectors.toSet()); - - replicableComponents.addAll(systemModelAdapter.getReplicableComponents()); - deployableComponents.addAll(systemModelAdapter.getDeployableComponents()); - } - - /** - * Constructor that initializes {@code this} encoding with the collection of - * {@link ITaskAdapter}s as they are extracted from the input models. - */ - public TaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter, - Collection<T> taskGraphs) { - this(systemModelAdapter); + public TaskGraphEncoding(Collection<T> taskGraphs) { this.taskGraphs = taskGraphs; this.deployableComponents.clear(); @@ -117,11 +94,6 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> // present in the system model adapter. TaskGraph taskGraph = getGraphOf(task, taskGraphs); - // Find the right Task Graph, in case the task does not exist in any of the task graphs of - // this encoding. - if(taskGraph == null) { - taskGraph = findTGBySystemModel(systemModelAdapter.getTaskGraph(task)); - } // TODO: This should be transformed into an exception. assert (taskGraph != null) : "The task to be added could be neither found in this encoding, nor the input models."; @@ -133,44 +105,30 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> } } - /** - * Detects whether the {@link TaskGraph} of the input system model references any tasks of the - * internal {@link TaskGraph}s and returns the first matching {@link TaskGraph}. - */ - private TaskGraph findTGBySystemModel(TaskGraph systemTG) { - for(TaskGraph currTG : taskGraphs) { - if(currTG.containsAnyTaskOf(systemTG.getTasks())) { - return currTG; - } - } - return null; - } - /** * Adds all signals defined in the input models for the given * {@link ITaskAdapter} which must be contained in any of the internal * {@link TaskGraph}s. */ - public void addSignalsOf(ITaskAdapter<C> task) { + public void addSignalsOf(ITaskAdapter<C> task, TaskGraph origTaskGraph) { // The given task must be in the any of the task graphs! T taskGraph = getGraphOf(task, taskGraphs); // TODO: This should be transformed into an exception. assert (taskGraph != null); - TaskGraph systemTG = systemModelAdapter.getTaskGraph(task); Collection<SignalAdapterWeightedEdge> incomingEdges = - systemTG.getGraph().incomingEdgesOf(task); + origTaskGraph.getGraph().incomingEdgesOf(task); Collection<SignalAdapterWeightedEdge> outgoingEdges = - systemTG.getGraph().outgoingEdgesOf(task); + origTaskGraph.getGraph().outgoingEdgesOf(task); for(SignalAdapterWeightedEdge edge : incomingEdges) { - ITaskAdapter<?> source = systemTG.getGraph().getEdgeSource(edge); + ITaskAdapter<?> source = taskGraph.getGraph().getEdgeSource(edge); taskGraph.getGraph().addEdge(source, task, edge); } for(SignalAdapterWeightedEdge edge : outgoingEdges) { - ITaskAdapter<?> target = systemTG.getGraph().getEdgeTarget(edge); + ITaskAdapter<?> target = taskGraph.getGraph().getEdgeTarget(edge); taskGraph.getGraph().addEdge(task, target, edge); } } @@ -259,7 +217,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> * Returns the deployable (software) component that are present in the internal * {@link TaskGraph}s. May contain "abstract" {@link Component}s. */ - public Collection<ITaskAdapter<?>> getDeployableComponents() { + public Collection<ITaskAdapter<?>> getTasks() { // return deployableComponents; Collection<ITaskAdapter<?>> deplComp = new HashSet<>(); for(T tg : taskGraphs) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings index a92b55cd861fc4e5254a57e7b89444c9e22b80ca..ceadd362632ba2ad7136e6fb2f14626d250df447 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings @@ -1,2 +1,2 @@ -TaskMappingEncoding.java 930be52f3d4940c4905ce901e8376ea076caf2c7 RED +TaskMappingEncoding.java 978f19bbba5b01c9b5157292775610d2a40df378 RED TaskMappingEntry.java 8872e14a5d29f267ce2be78e9a3f3f817f16edd2 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java index 63ca9e12982bd26ca42dd0567f2d951f98a6e2bb..49480f278fb9d8c40710ef8b8fc574b325c62a54 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java @@ -41,7 +41,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.encoding.Con import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry; @@ -52,7 +51,6 @@ import org.fortiss.af3.exploration.model.ExplorationConstraint; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.fortiss.af3.exploration.moea.model.predefined.ComponentMultiAllocationConstraint; import org.fortiss.af3.exploration.moea.model.predefined.ComponentMultiDislocationConstraint; -import org.fortiss.af3.platform.model.ExecutionUnit; import org.fortiss.tooling.common.util.LambdaUtils; import com.google.common.collect.HashMultimap; @@ -100,14 +98,14 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T /** Deployable component adapters that shall not be considered by the redundancy operator. */ protected Collection<ITaskAdapter<?>> fixAllocatedComponents; - /** Representation of input system */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** * Collection of deployable {@link ITaskAdapter}s represented by {@code this} * mapping. */ - protected Collection<S> deployableComponents; + protected Collection<S> tasks; + + /** Collection of {@link Partition}s to deploy {@link Task}s to. */ + protected Collection<Partition> partitions; /** The input {@link TaskGraphEncoding} that contains the tasks and their signals. */ protected TaskGraphEncoding<?, ?, ?> tgEncoding; @@ -123,37 +121,19 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * system. */ @SuppressWarnings("unchecked") - public TaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding) { + public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding, + TaskGraphEncoding<?, ?, ?> tgEncoding) { this.dse = dse; - this.systemModelAdapter = systemModelAdapter; this.tgEncoding = tgEncoding; this.partMappingEncoding = partMappingEncoding; - this.deployableComponents = (Collection<S>)tgEncoding.getDeployableComponents(); + this.tasks = (Collection<S>)tgEncoding.getTasks(); + this.partitions = partMappingEncoding.getRequesters(); disallowedAllocations = createDisallowedAllocationMap(); allowedAllocations = createAllowedAllocationMap(); fixAllocatedComponents = createFixAllocationCollection(); } - /** - * Constructor that optionally initializes the encoding to a random encoding. - * - * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. - */ - public TaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize) - throws ExplorationException { - this(dse, systemModelAdapter, new PartitionMappingEncoding(systemModelAdapter, null), - new TaskGraphEncoding<>(systemModelAdapter)); - if(initialize) { - resetEncoding(); - } - } - /** * Constructor that optionally initializes the encoding to a random encoding * @@ -161,11 +141,9 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public TaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding, - boolean initialize) throws ExplorationException { - this(dse, systemModelAdapter, partMappingEncoding, tgEncoding); + public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding, + TaskGraphEncoding<?, ?, ?> tgEncoding, boolean initialize) throws ExplorationException { + this(dse, partMappingEncoding, tgEncoding); if(initialize) { resetEncoding(); } @@ -178,12 +156,11 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public TaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding, + public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding, + TaskGraphEncoding<?, ?, ?> tgEncoding, TaskMappingEncoding<ITaskAdapter<?>, ?> incompleteEncoding) throws ExplorationException { - this(dse, systemModelAdapter, partMappingEncoding, tgEncoding); + this(dse, partMappingEncoding, tgEncoding); completeEncoding(incompleteEncoding); } @@ -220,16 +197,16 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T // components (-> marker) to not be processed by subsequent operators. private Collection<ITaskAdapter<?>> createFixAllocationCollection() { Collection<ITaskAdapter<?>> fixAllocatedComponents = new HashSet<>(); - for(ITaskAdapter<?> compAdp : deployableComponents) { + for(ITaskAdapter<?> compAdp : tasks) { Optional<ComponentMultiDislocationConstraint> constr = dse.getTargetSpecification().getTargets().stream() .filter(c -> (c instanceof ComponentMultiDislocationConstraint)) .map(ComponentMultiDislocationConstraint.class::cast) .filter(c -> c.getComponent() == compAdp.getObject()).findAny(); - if(constr.isPresent()) { - fixAllocatedComponents.add( - systemModelAdapter.getDeployableComponentOf(constr.get().getComponent())); - } + // if(constr.isPresent()) { + // fixAllocatedComponents.add( + // systemModelAdapter.getDeployableComponentOf(constr.get().getComponent())); + // } } return fixAllocatedComponents; } @@ -253,26 +230,27 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T private Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> createDisallowedAllocationMap() { Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> rval = HashMultimap.create(); - Collection<ComponentMultiDislocationConstraint> forbiddenDeploymentConstraints = - getChildrenWithType(dse, ComponentMultiDislocationConstraint.class); - - for(ComponentMultiDislocationConstraint currentConstraint : forbiddenDeploymentConstraints) { - for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter - .getDeployableComponents()) { - if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) { - // TODO: Remove dependency on AF3 here. - Collection<ExecutionUnit> forbiddenAF3TargetsOfComponent = - currentConstraint.getExecutionUnits(); - for(IExecutionUnitAdapter<?> currentForbiddenTargetUnit : systemModelAdapter - .getDeploymentTargets()) { - if(forbiddenAF3TargetsOfComponent - .contains(currentForbiddenTargetUnit.getObject())) { - rval.put(currentComponentAdapter, currentForbiddenTargetUnit); - } - } - } - } - } + // Collection<ComponentMultiDislocationConstraint> forbiddenDeploymentConstraints = + // getChildrenWithType(dse, ComponentMultiDislocationConstraint.class); + // + // for(ComponentMultiDislocationConstraint currentConstraint : + // forbiddenDeploymentConstraints) { + // for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter + // .getDeployableComponents()) { + // if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) { + // // TODO: Remove dependency on AF3 here. + // Collection<ExecutionUnit> forbiddenAF3TargetsOfComponent = + // currentConstraint.getExecutionUnits(); + // for(IExecutionUnitAdapter<?> currentForbiddenTargetUnit : systemModelAdapter + // .getDeploymentTargets()) { + // if(forbiddenAF3TargetsOfComponent + // .contains(currentForbiddenTargetUnit.getObject())) { + // rval.put(currentComponentAdapter, currentForbiddenTargetUnit); + // } + // } + // } + // } + // } return rval; } @@ -288,30 +266,31 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T getChildrenWithType(dse, ComponentMultiAllocationConstraint.class); Collection<ITaskAdapter<?>> constrainedComponentAdps = new HashSet<>(); - for(ComponentMultiAllocationConstraint currentConstraint : allowedDeploymentConstraints) { - for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter - .getDeployableComponents()) { - if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) { - constrainedComponentAdps.add(currentComponentAdapter); - - // TODO: Remove dependency on AF3 here. - Collection<ExecutionUnit> allowedAF3TargetsOfComponent = - currentConstraint.getExecutionUnits(); - for(IExecutionUnitAdapter<?> currentAllowedTargetUnit : systemModelAdapter - .getDeploymentTargets()) { - if(allowedAF3TargetsOfComponent - .contains(currentAllowedTargetUnit.getObject())) { - rval.put(currentComponentAdapter, currentAllowedTargetUnit); - } - } - } - } - } + // for(ComponentMultiAllocationConstraint currentConstraint : allowedDeploymentConstraints) + // { + // for(ITaskAdapter<?> currentComponentAdapter : systemModelAdapter + // .getTasks()) { + // if(currentComponentAdapter.getObject() == currentConstraint.getComponent()) { + // constrainedComponentAdps.add(currentComponentAdapter); + // + // // TODO: Remove dependency on AF3 here. + // Collection<ExecutionUnit> allowedAF3TargetsOfComponent = + // currentConstraint.getExecutionUnits(); + // for(IExecutionUnitAdapter<?> currentAllowedTargetUnit : systemModelAdapter + // .getDeploymentTargets()) { + // if(allowedAF3TargetsOfComponent + // .contains(currentAllowedTargetUnit.getObject())) { + // rval.put(currentComponentAdapter, currentAllowedTargetUnit); + // } + // } + // } + // } + // } - for(ITaskAdapter<?> curDeplComp : deployableComponents) { + for(ITaskAdapter<?> curDeplComp : tasks) { // TODO: create a field for the deployment targets. if(!constrainedComponentAdps.contains(curDeplComp)) { - systemModelAdapter.getDeploymentTargets().forEach(t -> rval.put(curDeplComp, t)); + partitions.forEach(t -> rval.put(curDeplComp, t)); } } @@ -328,7 +307,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T // ITaskAdapter<?> origComponent = systemModelAdapter // .getDeployableComponentOf((EObject)deployableComponent.getObject()); // return allowedAllocations.get(origComponent); - return Collections.emptySet(); + return allowedAllocations.get(deployableComponent); } /** @@ -397,7 +376,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T public void completeEncoding(TaskMappingEncoding<?, ?> incompleteEncoding) throws ExplorationException { ArrayList<S> allocComponents = new ArrayList<>(); - allocComponents.addAll(deployableComponents); + allocComponents.addAll(tasks); if(incompleteEncoding != null) { allocComponents.removeAll(incompleteEncoding.getRequesters()); @@ -420,7 +399,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T public void resetEncoding() throws ExplorationException { assert (false); allocationMap.clear(); - createEncoding(deployableComponents); + createEncoding(tasks); } /** @@ -433,8 +412,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T */ protected void createEncoding(Collection<S> allocatableComponents) throws ExplorationException { double selRandOrFixedInit = rand.nextDouble(); - List<IExecutionUnitAdapter<?>> execTargets = - new ArrayList<>(systemModelAdapter.getDeploymentTargets()); + List<IExecutionUnitAdapter<?>> execTargets = new ArrayList<>(partitions); int roundRobinAllocIdx = rand.nextInt(execTargets.size()); List<S> compColl = new ArrayList<>(allocatableComponents); @@ -444,13 +422,16 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T for(S deployableComponent : compColl) { List<Partition> validExecTargets = new ArrayList<>(); - if(allowedAllocations.containsKey(deployableComponent)) { - List<IExecutionUnitAdapter<?>> physicalExecTargets = allowedAllocations - .get(deployableComponent).stream().collect(Collectors.toList()); - for(IExecutionUnitAdapter<?> physExecUnit : physicalExecTargets) { - validExecTargets.addAll(partMappingEncoding.getRequesters(physExecUnit)); - } - } + validExecTargets.addAll((Collection<Partition>)(Collection<?>)allowedAllocations + .get(deployableComponent)); + // TODO: reenable the constraints twds. phys exec Units. + // if(allowedAllocations.containsKey(deployableComponent)) { + // List<IExecutionUnitAdapter<?>> physicalExecTargets = allowedAllocations + // .get(deployableComponent).stream().collect(Collectors.toList()); + // for(IExecutionUnitAdapter<?> physExecUnit : physicalExecTargets) { + // validExecTargets.addAll(partMappingEncoding.getRequesters(physExecUnit)); + // } + // } if(selRandOrFixedInit < fixToRandomRatio) { generateRandomDeployment(deployableComponent); @@ -525,9 +506,11 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T // is given if(deploymentTargets == null || deploymentTargets.isEmpty()) { deploymentTargets = new ArrayList<Partition>(); - for(IResourceAdapter<?> physResource : allowedAllocations.get(deployableComponent)) { - deploymentTargets.addAll(partMappingEncoding.getRequesters(physResource)); - } + deploymentTargets.addAll(partitions); + // TODO: Reenable when the constraints twds phys exec units are operational again. + // for(IResourceAdapter<?> physResource : allowedAllocations.get(deployableComponent)) { + // deploymentTargets.addAll(partMappingEncoding.getRequesters(physResource)); + // } } // Remove any disallowed mapping @@ -635,8 +618,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T for(ComponentMultiAllocationConstraint cons : constraints) { if(cons.getComponent() == deployableComponent.getObject()) { removeTask(deployableComponent); - List<IExecutionUnitAdapter<?>> physExecList = - new ArrayList<>(systemModelAdapter.getDeploymentTargets()); + List<IExecutionUnitAdapter<?>> physExecList = new ArrayList<>(partitions); List<Partition> execList = new ArrayList<>(); LambdaUtils.forEach(physExecList, e -> execList .addAll(partMappingEncoding.getRequesters((IResourceAdapter<?>)e))); @@ -753,10 +735,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T return str; } - /** - * Returns all independent {@link DefaultTaskGraph}s contained in this - * {@link SystemModelAdapter}. - */ + /** Returns all independent {@link DefaultTaskGraph}s contained in this encoding. */ public TaskGraphEncoding<?, ?, ?> getTaskGraphEncoding() { return tgEncoding; } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings index be62ba9ca9419f7d01bbf26fb21c82b7cdc10f4c..80ee49551aeba8c89e6ee4067602ba4957c3251d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings @@ -1,2 +1,2 @@ -AbstractTaskMappingEncoding.java 631cdcc84f476354eadd07abb21106d2390815bb RED +AbstractTaskMappingEncoding.java 285c8a15dda294bee34119d914e46bd8f0864283 RED AbstractTaskMappingEntry.java 0bef4c1102baf6bfbddc759fd103cf18df4b5553 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java index bc825e86933f217a0008cc9578a057f83d1074fb..bf776e421a54365968dbd4876ca942db9698b736 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java @@ -28,7 +28,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.Genotype; @@ -46,10 +45,9 @@ public class AbstractTaskMappingEncoding * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - AbstractTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, SafeTaskGraphEncoding<?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + SafeTaskGraphEncoding<?> tgEncoding) { + super(dse, partEnc, tgEncoding); } /** @@ -59,31 +57,15 @@ public class AbstractTaskMappingEncoding * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public AbstractTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, SafeTaskGraphEncoding<?> tgEncoding, - boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, partEnc, tgEncoding, initialize); + public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + SafeTaskGraphEncoding<?> tgEncoding, boolean initialize) throws ExplorationException { + super(dse, partEnc, tgEncoding, initialize); } /** Copy Constructor. */ - public AbstractTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); - } - - /** - * Constructor that optionally initializes the encoding to a random encoding - * - * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. - */ - public AbstractTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize) - throws ExplorationException { - super(dse, systemModelAdapter, initialize); + public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + TaskGraphEncoding<?, ?, ?> tgEncoding) { + super(dse, partEnc, tgEncoding); } /** @@ -93,11 +75,10 @@ public class AbstractTaskMappingEncoding * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public AbstractTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> atgEnc, - boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, partEnc, atgEnc, initialize); + public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> atgEnc, boolean initialize) + throws ExplorationException { + super(dse, partEnc, atgEnc, initialize); } /** @@ -110,11 +91,10 @@ public class AbstractTaskMappingEncoding * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public AbstractTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> atgEnc, - AbstractTaskMappingEncoding partialEncoding) throws ExplorationException { - super(dse, systemModelAdapter, partEnc, atgEnc, partialEncoding); + public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> atgEnc, AbstractTaskMappingEncoding partialEncoding) + throws ExplorationException { + super(dse, partEnc, atgEnc, partialEncoding); } /** {@inheritDoc} */ @@ -142,7 +122,7 @@ public class AbstractTaskMappingEncoding @Override public AbstractTaskMappingEncoding newInstance() { try { - return new AbstractTaskMappingEncoding(dse, systemModelAdapter, true); + return new AbstractTaskMappingEncoding(dse, null, null, true); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); @@ -153,8 +133,7 @@ public class AbstractTaskMappingEncoding @Override public AbstractTaskMappingEncoding clone() { AbstractTaskMappingEncoding clonedEncoding; - clonedEncoding = new AbstractTaskMappingEncoding(dse, systemModelAdapter, - partMappingEncoding, tgEncoding); + clonedEncoding = new AbstractTaskMappingEncoding(dse, partMappingEncoding, tgEncoding); Map<AbstractTaskMappingEntry, AbstractTaskMappingEntry> copyAssocMap = new HashMap<>(); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings index a815873fa8fe5acd8f5a9e35dd9d81a888375788..962cb0eb5dc192721645bc90e10665d7cd6ebf96 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings @@ -1,6 +1,6 @@ -FailSilentTaskMappingEncoding.java 1457b164ab20624575f4bcbd3e9263c2d9c029c5 RED +FailSilentTaskMappingEncoding.java 6cd0c0d865f7930e9c1ef5aa24006c1c118f9ad8 RED FailSilentTaskMappingEntry.java 28c15e958f6208c1c65e5076bc7c3be26d7a2dc9 RED -FaultDetectionVotingTaskMappingEncoding.java 95d5befaeb9185f2ebe5ee5ff0d5e58412afcd03 RED +FaultDetectionVotingTaskMappingEncoding.java dee2b30029af89891814450e064cbfdb70af3124 RED FaultDetectionVotingTaskMappingEntry.java c6f6588154665d765b506850a78d8a434000c843 RED -InstantiatedTaskMappingEncoding.java 564ee5ab7d5eaf98a134dd92faee35cc30d038fd RED +InstantiatedTaskMappingEncoding.java 35e480631da67eebd5e52d20485b6a76c9f030ec RED InstantiatedTaskMappingEntry.java 06181aa57ffb0c269c4dac8047cdccc2ae7afdd9 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java index 61622c70e3e04243c513c463dc3c1824d9062761..e5a362b79a9f1b78a09b4b18b6538ed4bf4dfbfe 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java @@ -24,7 +24,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.moea.model.DseSpecification; @@ -40,17 +39,15 @@ public class FailSilentTaskMappingEncoding * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - FailSilentTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding) { + super(dse, partEnc, tgEncoding); } /** Copy Constructor. */ - FailSilentTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + TaskGraphEncoding<?, ?, ?> tgEncoding) { + super(dse, partEnc, tgEncoding); } // TODO: Check whether the two constructors below are actually needed. @@ -61,35 +58,20 @@ public class FailSilentTaskMappingEncoding * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public FailSilentTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, - boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, partEnc, tgEncoding, initialize); - } - - /** - * Constructor that optionally initializes the encoding to a random encoding - * - * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. - */ - public FailSilentTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize) + public FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, initialize); + super(dse, partEnc, tgEncoding, initialize); } /** * Constructor which derives the resulting {@link FailSilentTaskMappingEncoding} from the given * {@link AbstractTaskMappingEncoding}. */ - public FailSilentTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, + public FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding, abstractEncoding); + super(dse, partEnc, tgEncoding, abstractEncoding); } /** {@inheritDoc} */ @@ -116,7 +98,7 @@ public class FailSilentTaskMappingEncoding @Override public FailSilentTaskMappingEncoding newInstance() { try { - return new FailSilentTaskMappingEncoding(dse, systemModelAdapter, true); + return new FailSilentTaskMappingEncoding(dse, null, null, true); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); @@ -128,8 +110,7 @@ public class FailSilentTaskMappingEncoding public FailSilentTaskMappingEncoding clone() { // TODO: Here, we should maintain the mapping. FailSilentTaskMappingEncoding clonedEncoding; - clonedEncoding = new FailSilentTaskMappingEncoding(dse, systemModelAdapter, - partMappingEncoding, tgEncoding); + clonedEncoding = new FailSilentTaskMappingEncoding(dse, partMappingEncoding, tgEncoding); return clonedEncoding; } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java index 2d7b0bdb194b3fc436f5b401e817ca7b4964f21d..e906d793528ba8a329b3549ead4b904135ce73bb 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java @@ -23,7 +23,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.moea.model.DseSpecification; @@ -39,10 +38,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding) { + super(dse, partEnc, tgEncoding); } // TODO: Check whether the two constructors below are actually needed. @@ -54,24 +52,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends * {@link ITaskAdapter}. */ public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, partEnc, tgEncoding, initialize); - assert (false) : "Never here any more."; - } - - /** - * Constructor that optionally initializes the encoding to a random encoding - * - * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. - */ - public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize) - throws ExplorationException { - super(dse, systemModelAdapter, initialize); + super(dse, partEnc, tgEncoding, initialize); assert (false) : "Never here any more."; } @@ -80,10 +63,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends * the given {@link AbstractTaskMappingEncoding}. */ public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding, abstractEncoding); + super(dse, partEnc, tgEncoding, abstractEncoding); } /** {@inheritDoc} */ @@ -112,7 +94,7 @@ public class FaultDetectionVotingTaskMappingEncoding extends @Override public FaultDetectionVotingTaskMappingEncoding newInstance() { try { - return new FaultDetectionVotingTaskMappingEncoding(dse, systemModelAdapter, true); + return new FaultDetectionVotingTaskMappingEncoding(dse, null, null, true); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); @@ -127,8 +109,7 @@ public class FaultDetectionVotingTaskMappingEncoding extends // TODO: Here, we should maintain the mapping. FaultDetectionVotingTaskMappingEncoding clonedEncoding = null; try { - clonedEncoding = - new FaultDetectionVotingTaskMappingEncoding(dse, systemModelAdapter, false); + clonedEncoding = new FaultDetectionVotingTaskMappingEncoding(dse, null, null, false); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java index a616471c347402fbf90e352225cd4cba43cba4a2..f56533609ddf90863cda19ccb108be76c4d90ff0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java @@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.Genotype; @@ -48,16 +47,14 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask * system model. */ protected InstantiatedTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + super(dse, partEnc, tgEncoding); } /** Copy Constructor. */ protected InstantiatedTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + super(dse, partEnc, tgEncoding); } // TODO: Check whether the two constructors below are actually needed. @@ -68,35 +65,20 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask * if no valid allocation targets can be identified for one * {@link ITaskAdapter}. */ - public InstantiatedTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, - boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, partEnc, tgEncoding, initialize); - } - - /** - * Constructor that optionally initializes the encoding to a random encoding - * - * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. - */ - public InstantiatedTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, boolean initialize) + public InstantiatedTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize) throws ExplorationException { - super(dse, systemModelAdapter, initialize); + super(dse, partEnc, tgEncoding, initialize); } /** * Constructor which derives the resulting {@link InstantiatedTaskMappingEncoding} from the * given {@link AbstractTaskMappingEncoding}. */ - public InstantiatedTaskMappingEncoding(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, + public InstantiatedTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) { - super(dse, systemModelAdapter, partEnc, tgEncoding); + super(dse, partEnc, tgEncoding); this.constraintMap = abstractEncoding.copyConstraintMap(null); instantiateAbstractEntries(abstractEncoding); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings index cba6099fd05ed0a0d3c13c4c8d06e1c99ca92a60..a0053d4e9934c12a204d2fe68bdb3f10bce95ca7 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings @@ -1,4 +1,4 @@ ComposableCreator.java 14cb174847cd3a0882bc4fd17cf8cbe18b2b7f36 RED -ComposableCreatorBase.java 1973a3b7381a283020361df273ef7cdf3bfd3948 RED +ComposableCreatorBase.java 336e1e319b4a7650851eddf0417f6dd6726afff7 RED CompositeCreator.java 65ab9f283191b081e40e8587431fd0a95f1daca6 RED -CompositeCreatorBase.java c701656ca99b43c8e868216c0399de635595ca7a RED +CompositeCreatorBase.java ac356e2a17e5929c965f14766d85e609eaf011d2 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java index e6437bb41078b289151b16b3bb31d9763a7a297f..69bbbb7a7b5fd5ee1401d7c11958a9982ff17451 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java @@ -34,7 +34,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.decode.ConstraintGenerationDecoder; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.exploration.alg.util.ExplorationAlgDebugUtils; import org.opt4j.core.Genotype; @@ -48,10 +47,6 @@ import org.opt4j.core.problem.Decoder; */ public abstract class ComposableCreatorBase<G extends ComposableGenotype> implements ComposableCreator<G> { - - /** References the input models */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** References the {@link ComposableDecoder}s that decode the created {@link Genotype}. */ private List<ComposableDecoder<G, ? extends ComposablePhenotype<G>>> subDecoders = new ArrayList<>(); @@ -67,12 +62,10 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> * References the {@link DecoderDependencyGraph} which defines execution orders and which * {@link Phenotype}s are needed within the DSE. */ - DecoderDependencyGraph depGraph; + private DecoderDependencyGraph depGraph; /** Default constructor that requires a representation of the input models. */ - public ComposableCreatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph depGraph) { - this.systemModelAdapter = systemModelAdapter; + public ComposableCreatorBase(DecoderDependencyGraph depGraph) { this.depGraph = depGraph; } @@ -106,12 +99,10 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> decodeCreatedGenotype( G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes, Set<Class<? extends Genotype>> createdGenotypeTypeSet) throws DecodingException { - FlatPhenotypeMap<Phenotype> phenotypes = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); + FlatPhenotypeMap<Phenotype> phenotypes = new FlatPhenotypeMap<>(); Collection<Class<? extends IExplorationEncoding>> reqPhenotypeTypes = depGraph.getAllRequiredTypes(); - FlatPhenotypeMap<Phenotype> intermediatePhenos = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); + FlatPhenotypeMap<Phenotype> intermediatePhenos = new FlatPhenotypeMap<>(); intermediatePhenos.addAll(decodedPhenotypes); Optional<? extends ComposableDecoder<G, P>> idDecoder = @@ -164,10 +155,8 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> identityDecodeCreatedGenotype(G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes) throws DecodingException { - FlatPhenotypeMap<Phenotype> phenotypes = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); - FlatPhenotypeMap<Phenotype> intermediatePhenos = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); + FlatPhenotypeMap<Phenotype> phenotypes = new FlatPhenotypeMap<>(); + FlatPhenotypeMap<Phenotype> intermediatePhenos = new FlatPhenotypeMap<>(); intermediatePhenos.addAll(decodedPhenotypes); // If an identity decoder is present, execute it before any other decoder to ensure all diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java index 0a609d7abdb37405c1079a47a30ea252eb41eadc..88bb3e8d2af3c40ef563649bf599d3dbe2268805 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/CompositeCreatorBase.java @@ -24,13 +24,10 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.opt4j.core.genotype.CompositeGenotype; import org.opt4j.core.problem.Creator; -import com.google.inject.Inject; - /** * Base class of the {@link Creator} for {@link CompositeGenotype}s. It handles the creation of the * {@link ComposableGenotype}s comprising this {@link CompositeGenotype}. @@ -45,18 +42,6 @@ public abstract class CompositeCreatorBase<G extends CompositeGenotype<Class<? e */ private List<ComposableCreator<? extends ComposableGenotype>> subCreators = new LinkedList<>(); - /** Representation of input system. */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - - /** - * Default Constructor that requires a {@link SystemModelAdapter} such that {@link Creator}s are - * aware of the input models. - */ - @Inject - public CompositeCreatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } - /** {@inheritDoc} */ @Override public G create() { @@ -81,8 +66,7 @@ public abstract class CompositeCreatorBase<G extends CompositeGenotype<Class<? e public <N extends ComposableGenotype, P extends ComposablePhenotype<N>> void createSubGenotypes(G compositeGenotype) throws DecodingException { FlatGenotypeMap createdGenotypes = new FlatGenotypeMap(); - FlatPhenotypeMap<Phenotype> decodedPhenotypes = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); + FlatPhenotypeMap<Phenotype> decodedPhenotypes = new FlatPhenotypeMap<>(); for(ComposableCreator<? extends ComposableGenotype> creator : subCreators) { @SuppressWarnings("unchecked") ComposableCreator<N> castedCreator = diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings index 35d587cc6f6f157122a14d74eae8986c2b779127..667938f7a0e30e09c7a8a2d1c89e66c153a5d687 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings @@ -1,5 +1,5 @@ ComposableDecoder.java 197abec80b880e25fccfc66d61b471b0b5d7e10f RED ComposableDecoderBase.java 4f366cc6c0f8ca929cac43d9c5de675cbafbb132 RED CompositeDecoder.java 9d34dd0b342e6433ab894974f9430531ce2de39a RED -CompositeDecoderBase.java 9f992f1cb91e7575ad10393f013872a67015581d RED +CompositeDecoderBase.java 1bc1860ed616010f7f459ed6579989f155f607c2 RED PhenotypeDecoder.java 44079e8545aaf8b8729919f0b07c774c3ca0df06 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java index fad862eba7c9f4237021104d3fe379213b5e9311..15d6562ec6fef8d5287a851c68ca054ef2af9182 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java @@ -32,7 +32,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.CompositePhenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.jgrapht.experimental.dag.DirectedAcyclicGraph.CycleFoundException; import org.opt4j.core.Genotype; @@ -47,10 +46,6 @@ import org.opt4j.core.problem.Decoder; */ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? extends ComposableGenotype>, ComposableGenotype>, P extends CompositePhenotype<?>> implements CompositeDecoder<C, P> { - - /** representation of the input models. */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** * References the {@link DecoderDependencyGraph} which defines execution orders and which * {@link Phenotype}s are needed within the DSE. @@ -87,9 +82,7 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e private boolean isDecoderRegistrationChecked = false; /** Default constructor that requires a representation of the input models. */ - public CompositeDecoderBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph depGraph) { - this.systemModelAdapter = systemModelAdapter; + public CompositeDecoderBase(DecoderDependencyGraph depGraph) { this.depGraph = depGraph; } @@ -112,18 +105,14 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e * sub-Decoders produces an error. * @throws MissingDependencyException * if some required {@link IExplorationEncoding} of a {@link ComposableDecoder} is - * not provided by another one, a {@link ComposableCreator}, or the - * {@link SystemModelAdapter}. + * not provided by another one, a {@link ComposableCreator}. */ public <SP extends Genotype, CG extends ComposableGenotype, CP extends ComposablePhenotype<CG>> P decodeInternal(C genotype) throws DecodingException, MissingDependencyException { Map<Class<CP>, CP> subPhenotypes = new HashMap<>(); - FlatPhenotypeMap<Phenotype> decodedPhenotypes = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); - + FlatPhenotypeMap<Phenotype> decodedPhenotypes = new FlatPhenotypeMap<>(); if(!isDecoderRegistrationChecked) { isDecoderRegistrationChecked = true; - for(ComposableDecoder<?, ?> decoder : depGraph.getOperatorExecOrder()) { if(registeredSubDecoders.containsKey(decoder)) { @SuppressWarnings("unchecked") ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>> castedDecoder = diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings index 9215094dc6a330d2097476a53ce7d120ffa411a9..3740a0d2aca6de461b75cb799f96c2d6a1bf8109 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings @@ -1,3 +1,3 @@ ComposableEvaluator.java 5882908b5b90aa31bcf806cbfca047d2d0725640 RED CompositeEvaluator.java 185b9a6776a419ce0fc2adae31eced97c0d756d5 RED -CompositeEvaluatorBase.java a496b7824e5d5fcff8414c18df93a1fec3d43601 RED +CompositeEvaluatorBase.java a7e7f0d30206ef74b7c6f4b8f1244433ec3f8cc6 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java index 53a0844fd01fbcfd16c1ef0f74bcee7c8903f50a..0cce028e760172b35356fbc569d9417559cc665c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java @@ -16,7 +16,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.evaluate; import static org.fortiss.af3.exploration.alg.service.ExplorationService.getService; -import static org.fortiss.af3.exploration.alg.service.IExplorationTransformationService.TransformationContext.DSE_INTERNAL; import static org.fortiss.af3.exploration.alg.util.ExplorationAlgUtils.pickInstanceOf; import java.util.Collection; @@ -34,7 +33,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.EvaluatorWrapper; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMultiMap; import org.fortiss.af3.exploration.alg.service.IExplorationEvaluatationService; import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator; @@ -57,10 +55,6 @@ import com.google.common.collect.MutableClassToInstanceMap; */ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> implements CompositeEvaluator<P> { - - /** Representation of the input models. */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Flag to mark that marks the top-most evaluator in the composite structure. */ protected boolean isTopLevelEvaluator = false; @@ -82,12 +76,8 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> new SubClassToInstanceMultiMap<>( (Class<? extends ComposablePhenotype<?>>)ComposablePhenotype.class); - /** - * Default constructor which requires a {@link SystemModelAdapter} to access the input models. - */ - public CompositeEvaluatorBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - + /** Constructor. */ + public CompositeEvaluatorBase() { if(!ComposableEvaluator.class.isAssignableFrom(getClass())) { isTopLevelEvaluator = true; } @@ -144,11 +134,12 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> ClassToInstanceMap<EObject> transformedModels = MutableClassToInstanceMap.create(); if(isTopLevelEvaluator && !requiredTransformedModelTypes.isEmpty()) { try { - transformedModels = - getService(IExplorationTransformationService.class).getTransformedModels( - DSE_INTERNAL, null, phenotypeTypeMap.asExplorationEncoding(), - systemModelAdapter.getInputModels(), requiredTransformedModelTypes, - null); + // TODO: Readd the transformation service to the evaluators. + // transformedModels = + // getService(IExplorationTransformationService.class).getTransformedModels( + // DSE_INTERNAL, null, phenotypeTypeMap.asExplorationEncoding(), + // systemModelAdapter.getInputModels(), requiredTransformedModelTypes, + // null); } catch(Exception e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -254,8 +245,7 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> */ private <G extends Genotype, CP extends CompositePhenotype<?>, SP extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> constructPhenotypeMap(CP phenotype) { - FlatPhenotypeMap<Phenotype> phenotypeTypeMap = - new FlatPhenotypeMap<Phenotype>(systemModelAdapter); + FlatPhenotypeMap<Phenotype> phenotypeTypeMap = new FlatPhenotypeMap<>(); @SuppressWarnings("unchecked") LinkedList<SP> subPhenotypes = new LinkedList<SP>((Collection<? extends SP>)phenotype.getSubPhenotypes()); while(!subPhenotypes.isEmpty()) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings index 14cc86ade91d15412d52fda702bf1096d4fa8c10..2d24dbfd517bf4bdb672c2b2aa665bd1226321fc 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/.ratings @@ -1,2 +1,2 @@ -DecoderDependencyGraph.java e0f55416161a46d7fb0663fe3d358aacd3db32ae RED +DecoderDependencyGraph.java a67fe21e5c6e54e426fd3a8502b92275592794ca RED DecoderEdge.java 364767c6d4b15b02830e1c58a47f28f6e3bf3fcb RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java index 02273be7471344ffab828a9b5a9ac06710a2329c..8c706a8208cea2b70541625fdcdc42253e03bb3a 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/graph/DecoderDependencyGraph.java @@ -26,7 +26,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.decode.ConstraintGenerationDecoder; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.graph.DependencyGraph; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.opt4j.core.problem.Creator; @@ -39,20 +38,13 @@ import org.opt4j.core.problem.Decoder; */ public class DecoderDependencyGraph extends DependencyGraph<IExplorationEncoding, ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>>, DecoderEdge<ComposableGenotype, ComposablePhenotype<?>>> { - - /** - * Set of {@link IExplorationEncoding} types that can be obtained from the SystemModelAdapter. - */ - protected Set<Class<? extends IExplorationEncoding>> sysModelEncodings; - + // TODO: Move to the parent? /** Internal graph representation for the execution order of {@link Creator}s. */ private HashSet<ComposableCreator<?>> registeredCreators = new HashSet<>(); /** Constructor. */ - public DecoderDependencyGraph(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - Set<Class<? extends IExplorationEncoding>> pTypeCollection) { + public DecoderDependencyGraph(Set<Class<? extends IExplorationEncoding>> pTypeCollection) { super(pTypeCollection, IExplorationEncoding.class); - sysModelEncodings = systemModelAdapter.getRegisteredEncodingTypes(); } /** {@inheritDoc} */ @@ -65,8 +57,7 @@ public class DecoderDependencyGraph extends if(!dependencyDagGraph .containsVertex((Class<? extends IExplorationEncoding>)reqEnc) && !registeredCreators.stream() - .anyMatch(c -> c.getCreatedEncodingType().equals(reqEnc)) && - !sysModelEncodings.contains(reqEnc)) { + .anyMatch(c -> c.getCreatedEncodingType().equals(reqEnc))) { throw new MissingDependencyException(dec, (Class<? extends IExplorationEncoding>)reqEnc, ""); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings index 307eb0fd9f13017066405d40413f1c833e2773ce..97ce0da15ba645017ea1ae28a4785f84dc2d4cd5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/.ratings @@ -1,5 +1,5 @@ ComposablePhenotype.java c480ccbf2ed93bdb5a0ec5461629475bff033e18 RED CompositePhenotype.java 8706a2d636e49472dd5160dc8a0c871801f4fb69 RED CompositePhenotypeBase.java dc30951b9b55fef23ba657c54fef512a8886ec93 RED -FlatPhenotypeMap.java dd51eb1e3ed9a0c4ec67eac8c28342f0e98735fe RED +FlatPhenotypeMap.java f6d74992bbdcc84d358c27616b13c512ef7841b1 RED Phenotype.java 3b01d5fc912747b3409fe2868447f395dafd860c RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java index 7c5e0ac81125946728caeb29e220e54f78bba646..f1145eabf572655f886f203edc4c89ca585473e2 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/phenotype/FlatPhenotypeMap.java @@ -16,10 +16,13 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype; import java.util.Collection; +import java.util.HashMap; +import java.util.Map; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.InitialEncodingProvider; import org.fortiss.af3.exploration.alg.service.ExplorationEncodingMap; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; +import org.opt4j.core.problem.Creator; /** * Allows to capture the already created/decoded {@link Phenotype}s and pass them to their successor @@ -30,11 +33,12 @@ import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; * @author diewald */ public class FlatPhenotypeMap<T extends Phenotype> extends ExplorationEncodingMap<T> { - - /** Constructor. */ - public FlatPhenotypeMap(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - } + /** + * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@link Creator}s by + * their corresponding types. + */ + private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings = + new HashMap<>(); /** * Returns the {@link Phenotype} of the given type. If no {@link Phenotype} of the given type @@ -47,20 +51,17 @@ public class FlatPhenotypeMap<T extends Phenotype> extends ExplorationEncodingMa if(IExplorationEncoding.class.isAssignableFrom(subGenotypeClass)) { @SuppressWarnings("unchecked") Class<IExplorationEncoding> inputEncoding = (Class<IExplorationEncoding>)subGenotypeClass; - assert (systemModelAdapter != null) : "The SystemModelAdapter is required for CompositePhenotypes as an alternate source of input encodings."; @SuppressWarnings("unchecked") P encoding = - (P)systemModelAdapter.getInputEncoding(inputEncoding); + (P)InitialEncodingProvider.getInstance().getInputEncoding(inputEncoding); phenotype = encoding; } } - return phenotype; } /** * Determines whether {@code this} {@link FlatPhenotypeMap} contains {@link ComposablePhenotype} - * s of all given types, or it is able to retrieve the demanded types via the - * {@link SystemModelAdapter}. + * s of all given types, or it is able to retrieve the demanded types via the {@link Creator}s. */ @SuppressWarnings("unchecked") public <P extends T> boolean containsAll(Collection<Class<?>> phenoCollection) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings index 5d5b5e7702e66ad8fb06590808b00db73a8a1c31..2b396e582401fec112545cd14e27e94956a2656a 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/.ratings @@ -1,4 +1,4 @@ -MutateAllocation.java 39fdbaf0e9bf57743f157a561fa954f4bd907871 RED +MutateAllocation.java 0994667e10022be731b4cb6c04a59d0b562eb575 RED MutateRedundancy.java 916b93f4ee2eb953033daa38273cc2360234c89e RED MutateRedundancyDecrement.java 38c930eb6d5648d58e31d5c0bb39f7edf50f9a87 RED MutateRedundancyIncrement.java 5256080dcaab5482c33915fd8c78e0bb3c3fbcd6 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java index b63e0a893ab26b764e0b129bb3ae97cc5d2c0d5e..7694d58c2fffb29b1f3bd8189e7085142e47cd04 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateAllocation.java @@ -107,9 +107,11 @@ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partit // This respects {@link ExcludeDeploymentConstraint}s. if(encoding.hasLimitedDeployment(deployableComponent)) { - List<IExecutionUnitAdapter<?>> physExecUnits = - new ArrayList<>(encoding.getAllowedAllocations(deployableComponent)); - List<Partition> targets = encoding.getAllowedPartitionTargets(physExecUnits); + // List<IExecutionUnitAdapter<?>> physExecUnits = + // new ArrayList<>(encoding.getAllowedAllocations(deployableComponent)); + // List<Partition> targets = encoding.getAllowedPartitionTargets(physExecUnits); + List<Partition> targets = new ArrayList<>((Collection<Partition>)(Collection<?>)encoding + .getAllowedAllocations(deployableComponent)); int selExecU = max(0, rand.nextInt(targets.size()) - 1); selectedEntry.resetTarget(targets.get(selExecU)); } else { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings index 4027b6e6a3108d7bf8328972947ad4beadf8f468..5609b269b682993040ac6ee7e31e7e26af391024 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/.ratings @@ -1,6 +1,6 @@ ArchExpSubDecoder.java b53315dae39fd6afdae22e2412af5cf9dff5e574 RED -ArchitectureDecoder.java 676d76512f665c3d52ff06a84c65f7d272e33975 RED -ArchitectureExplorationProblemModule.java ebed1fbcb71842bf8f2940c5f6a266568acd8184 RED +ArchitectureDecoder.java 9a002b7e7ecf05835276dd0302faf0bd7c3aa656 RED +ArchitectureExplorationProblemModule.java 650201476e17b6c7df1b9844e69fe979d20f04f6 RED DseProblemModuleBase.java ad44baebb3c417c3778672f10ae4f3e61f1fa932 RED EvaluatorWrapper.java 47ff0b2df7f75e232fa269b55750f0e2c408b08c RED ExplorationGoalPriorityMultiEvaluator.java 0f900f86c8adc14b69d95bb8eb3a34ea1ed2d41e RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java index cdd3b5aedd85fe3f1916678673a8759927fd1640..bae36d87b95e63c9a0c451711fd34f170729abbb 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureDecoder.java @@ -23,7 +23,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.graph.DecoderDependencyGraph; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.ArchitectureSolution; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.core.Genotype; import org.opt4j.core.genotype.CompositeGenotype; import org.opt4j.core.problem.Decoder; @@ -41,9 +40,8 @@ public class ArchitectureDecoder /** Default constructor that makes the input models accessible for the decoders. */ @Inject - public ArchitectureDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execdepGraph) { - super(systemModelAdapter, execdepGraph); + public ArchitectureDecoder(DecoderDependencyGraph execdepGraph) { + super(execdepGraph); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java index 4bd9474e8efbc5acea4e66cf5c9562fedcf9b093..6a8f34a29885d14c6f96e7516d23b30a646cd032 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/ArchitectureExplorationProblemModule.java @@ -37,11 +37,14 @@ import org.fortiss.af3.exploration.moea.model.DseSpecification; public class ArchitectureExplorationProblemModule extends DseProblemModuleBase<ArchitectureExplorationEncoding, ArchitectureSolution, ArchitectureDecoder> { + DSEFactory dseFactory = DSEFactory.getInstance(); + /** Constructor. */ public ArchitectureExplorationProblemModule(DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, Set<Class<? extends IExplorationEncoding>> requestedSolutions) { super(dse, systemModelAdapter, requestedSolutions); + dseFactory.init(systemModelAdapter); } /** @@ -54,22 +57,20 @@ public class ArchitectureExplorationProblemModule extends * added separately. */ DSEFactory dseFactory = DSEFactory.getInstance(); + dseFactory.init(systemModelAdapter); - ArchitectureEvaluator archEvaluator = - dseFactory.createArchitectureEvaluator(systemModelAdapter); + ArchitectureEvaluator archEvaluator = dseFactory.createArchitectureEvaluator(); // Dependency graph for the execution order. - DecoderDependencyGraph execDepGraph = - new DecoderDependencyGraph(systemModelAdapter, requestedSolutions); + DecoderDependencyGraph execDepGraph = new DecoderDependencyGraph(requestedSolutions); // TODO: construct the execution dependency graph elsewhere? - bindProblem(dseFactory.createArchitectureExplorationCreator(dse, systemModelAdapter), - dseFactory.createArchitectureDecoder(systemModelAdapter, execDepGraph), - archEvaluator); + bindProblem(dseFactory.createArchitectureExplorationCreator(), + dseFactory.createArchitectureDecoder(execDepGraph), archEvaluator); // Create/Bind the subproblems of the architectural exploration problem. try { - dseFactory.createSubProblems(this, dse, systemModelAdapter, execDepGraph); + dseFactory.createSubProblems(this, dse, execDepGraph); } catch(Exception e) { throw new RuntimeException("Failed setting up the DSE Problem instance.", e); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings index db79dd4cfce938347660798c1e7aec1b6ebbb461..0aab7652291c0f1e2b1dc3de75f82528a72eabd3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/.ratings @@ -1,2 +1,2 @@ -InstantiatedTaskMappingDecoder.java bfd10ee690ab13330e70c87fced365e66403d6a6 RED -InstantiatedTaskMappingDecoderAcyclic.java 32e5e157dd67b7b5db99fb72a86440f83dd8605f RED +InstantiatedTaskMappingDecoder.java fabe128ecd7f2a651384e4a22c8035c399226a2e RED +InstantiatedTaskMappingDecoderAcyclic.java 9356d1cba4e983db4558b6f5b9b39dde876dc396 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java index 8a8aaebd7e8505ab1ce4828cb858261c052ffe43..07d14c45191dc1c5d20eea7646592a90670d86d9 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoder.java @@ -77,7 +77,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt TaskGraphInstantiator<DefaultTaskGraph<?>> tgInstatiator = new TaskGraphInstantiator<>(tgColl, genotype); InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>( - systemModelAdapter, tgInstatiator.createMultipleInstanceTaskGraphs(tgColl)); + tgInstatiator.createMultipleInstanceTaskGraphs(tgColl)); if(sfEnc != null) { removeInterSafetyChannelSignals(sfEnc, itgEnc); @@ -128,13 +128,13 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt ITaskAdapter<?> outputUnit = sfEntry.getSafetyFunctionAdapter().getOutputComponent(); // TODO: only for a single diag unit. - Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getDeployableComponents() + Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getTasks() .stream().filter(d -> sfUnits.contains(d.getReplacedComponent())) .collect(Collectors.toList()); - Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getDeployableComponents() + Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getTasks() .stream().filter(d -> diagUnits.contains(d.getReplacedComponent())) .collect(Collectors.toList()); - Collection<ITaskAdapter<?>> outComps = itgEnc.getDeployableComponents().stream() + Collection<ITaskAdapter<?>> outComps = itgEnc.getTasks().stream() .filter(d -> d.getObject() == outputUnit.getObject()) .collect(Collectors.toList()); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java index 5aaaf2f79302a2aeaa81591234744d8ff6ccb742..07e216c2d7fcfefcc59e6a3908712d7ffe0ba0ea 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatetaskgraph/InstantiatedTaskMappingDecoderAcyclic.java @@ -68,8 +68,7 @@ public class InstantiatedTaskMappingDecoderAcyclic<T extends InstantiatedTaskMap assert (itgEnc != null) : "The required abstract task graph encoding could not be found in the map of already decoded phenotypes."; InstantiatedAcyclicTaskGraphEncoding<T, C> iAtgEnc = - new InstantiatedAcyclicTaskGraphEncoding<T, C>(systemModelAdapter, - itgEnc.getTaskGraphs()); + new InstantiatedAcyclicTaskGraphEncoding<T, C>(itgEnc.getTaskGraphs()); return iAtgEnc; } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings index f008274a3dcd5d0cd6f5bfb6dad0ad064dc54538..c764bfa6423a9ec6cc7927c6c65fde7f4030c695 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/.ratings @@ -1,4 +1,4 @@ SFEncodingDecoder.java 8e1594c92aa5e0c23d07038bb63db5b483c4f727 RED -SFGraphDecoder.java bad196d3f1f5aca199765783ae80ca30981bc84e RED -SFMappingConstraintDecoder.java 567af65d0f1344a22e5d0fb5ccf6b9beedd631d4 RED -SFMappingDecoder.java 12bccf9c5c44e03a4268b04bf98f29b94a39ed1e RED +SFGraphDecoder.java 2b022c6eaf84224576a24b816cfc5a47c09635da RED +SFMappingConstraintDecoder.java b347e65e6b805103e133386ef76c2297a829559a RED +SFMappingDecoder.java ec3d91b8cacb5743517d87a1c9eed347549d8acc RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java index a0d0ba4c51c29e265bb77fee12b1a46d31223ee2..320c2627b93856b884f9237d29bba55c3acd90d8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFGraphDecoder.java @@ -33,7 +33,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchExpSubDecoder; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; import com.google.inject.Inject; @@ -46,14 +46,9 @@ import com.google.inject.Inject; public class SFGraphDecoder<C> extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, SafeTaskGraphEncoding<C>> implements ArchExpSubDecoder { - - /** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */ - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */ @Inject - public SFGraphDecoder(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public SFGraphDecoder() { } /** {@inheritDoc} */ @@ -65,7 +60,9 @@ public class SFGraphDecoder<C> } // TODO: we should dynamically retrieve the encoding here, since the statement below assumes // that this decoding step is performed before others. - SafeTaskGraphEncoding<C> encoding = new SafeTaskGraphEncoding<>(systemModelAdapter); + // FIXME: Find a way to pass the original taks graph. We might have a circular dependency + // here. + SafeTaskGraphEncoding<C> encoding = new SafeTaskGraphEncoding<>(Collections.emptySet()); for(SafetyFunctionArchEntry<C> sFAEntry : genotype.getAllEntries()) { boolean diagPresent = sFAEntry.isDiagnosicUnitPresent(); @@ -123,12 +120,15 @@ public class SFGraphDecoder<C> * Adds the given collection of {@link ITaskAdapter}s from the * {@link SafetyFunctionArchEntry} to the {@link TaskGraphEncoding}. */ - private void addTasks(Collection<ITaskAdapter<C>> deplComp, SafeTaskGraphEncoding<C> encoding) { + private void addTasks(Collection<ITaskAdapter<C>> tasks, SafeTaskGraphEncoding<C> encoding) { // Add the Components. - deplComp.stream().forEach(task -> encoding.addTask(task)); + tasks.stream().forEach(task -> encoding.addTask(task)); // Add the corresponding signals. - deplComp.stream().forEach(task -> encoding.addSignalsOf(task)); + for(ITaskAdapter<C> task : tasks) { + TaskGraph tg = encoding.getOriginalTaskGraph(task); + encoding.addSignalsOf(task, tg); + } } /** Removes the diagnostic units from the {@link TaskGraphEncoding}. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java index 1a28d877b3cf01f6362849eb24224c932ba71ce3..9d4b0183aea2fa789359a1d3344979df9e61dadf 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingConstraintDecoder.java @@ -31,7 +31,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.decode.ConstraintGenerationDecoder; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISafetyFunctionAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.platform.hierarchic.model.tile.Tile; import com.google.inject.Inject; @@ -44,15 +44,9 @@ import com.google.inject.Inject; public class SFMappingConstraintDecoder<C> extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding> implements ConstraintGenerationDecoder { - - // TODO: replace with a dynamic mechanism for the retrieval of deployable components. - /** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */ - private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */ @Inject - public SFMappingConstraintDecoder(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public SFMappingConstraintDecoder() { } /** {@inheritDoc} */ @@ -67,8 +61,6 @@ public class SFMappingConstraintDecoder<C> public AbstractTaskMappingEncoding updateComposable(SafetyFunctionArchEncoding<C> inGenotype, AbstractTaskMappingEncoding outGenotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes) { - Collection<ITaskAdapter<C>> deplComps = new HashSet<>(); - deplComps.addAll(systemModelAdapter.getDeployableComponents()); for(SafetyFunctionArchEntry<C> sFAEntry : inGenotype.getAllEntries()) { int channelNumber = sFAEntry.getNumChannels(); @@ -100,13 +92,13 @@ public class SFMappingConstraintDecoder<C> ISafetyFunctionAdapter<C> sfAdp = sfEntry.getSafetyFunctionAdapter(); // TODO: We should not be aware of the Tile type here. - sepConstraints.add(new InternalSeparationConstraint(sfAdp.getRealizingComponents(), - systemModelAdapter.getFaultContainmentRegion())); - sepConstraints.add(new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(), - systemModelAdapter.getFaultContainmentRegion())); - sepConstraints - .add(new InternalSeparationConstraint(Arrays.asList(sfAdp.getOutputComponent()), - systemModelAdapter.getFaultContainmentRegion())); + // FIXME: We need a "better" machanism than the fault containment region. Also, + sepConstraints.add( + new InternalSeparationConstraint(sfAdp.getRealizingComponents(), Tile.class)); + sepConstraints.add( + new InternalSeparationConstraint(sfAdp.getDiagnosticComponents(), Tile.class)); + sepConstraints.add(new InternalSeparationConstraint( + Arrays.asList(sfAdp.getOutputComponent()), Tile.class)); } return sepConstraints; diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java index a4e23b9278136c0fcc3c364f5f20ea63b624df66..cdea51a4fcc67631c7206f0f31226b3f57bbffd6 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java @@ -38,7 +38,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.decode.ConstraintGenerationDecoder; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry; import org.fortiss.af3.exploration.alg.exception.ExplorationException; @@ -52,15 +51,9 @@ import com.google.inject.Inject; public class SFMappingDecoder<C> extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, AbstractTaskMappingEncoding> implements ConstraintGenerationDecoder { - - // TODO: replace with a dynamic mechanism for the retrieval of deployable components. - /** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */ - private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */ @Inject - public SFMappingDecoder(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public SFMappingDecoder() { } /** @@ -93,8 +86,6 @@ public class SFMappingDecoder<C> } // TODO: replace with a dynamic mechanism for the retrieval of deployable components. - Collection<ITaskAdapter<C>> deplComps = new HashSet<>(); - deplComps.addAll(systemModelAdapter.getDeployableComponents()); for(SafetyFunctionArchEntry<C> sFAEntry : inGenotype.getAllEntries()) { boolean diagPresent = sFAEntry.isDiagnosicUnitPresent(); int channelNumber = sFAEntry.getNumChannels(); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings index 784ff10089e09e3022510a70b5b9432f909d79d5..b74d77f80f7669ae9990fe924dc01fb7f36336c1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings @@ -1,4 +1,4 @@ AbstractTaskMappingDecoder.java edd7bd622640dfd8359d4f55b8f1f74839970823 RED -FailSilentAbstractTaskMappingDecoder.java 449364213ecc7a68d1eb2c42b710dea35efa073a RED -FaultDetectionVotingAbstractTaskMappingDecoder.java 80f4f41e445d7ed6decfd6f3125e14b355ee7e15 RED +FailSilentAbstractTaskMappingDecoder.java a443781caf223417b77a6163dcbb4d7df26f63ab RED +FaultDetectionVotingAbstractTaskMappingDecoder.java 2ab809a5ca6bd2530d0c8eec167d4aa0d9b1ab37 RED TaskInstanceResourceAlignmentDecoder.java 116f72a16a02c9aac617cc4c9684cd583b87e1b6 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java index c01bd7952d8790ad7efd0b5a7d2ea6924770326a..edb981d84db3fda0d8960604e6b1aec5739fc96e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java @@ -61,8 +61,7 @@ public class FailSilentAbstractTaskMappingDecoder extends PartitionMappingEncoding partEnc = phenotypeTypeMap.getEncoding(PartitionMappingEncoding.class); assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes."; - return new FailSilentTaskMappingEncoding(explorationDefinition, systemModelAdapter, partEnc, - atgEnc, genotype); + return new FailSilentTaskMappingEncoding(explorationDefinition, partEnc, atgEnc, genotype); } // TODO: Abstract to the AbstractTaskMappingDecoder. diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java index 8b31cecb2ff4ca7426a67c6173ba53ae8c216a6a..eee6b950ebd254d7cd1e039ce66fccb5b08919c7 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java @@ -61,8 +61,8 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder extends PartitionMappingEncoding partEnc = phenotypeTypeMap.getEncoding(PartitionMappingEncoding.class); assert (partEnc != null) : "The required partition mapping encoding could not be found in the map of already decoded phenotypes."; - return new FaultDetectionVotingTaskMappingEncoding(explorationDefinition, - systemModelAdapter, partEnc, atgEnc, genotype); + return new FaultDetectionVotingTaskMappingEncoding(explorationDefinition, partEnc, atgEnc, + genotype); } /** diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings index aa2879b26530e82bd491c191626ab4892c3adf30..673026aebd8e1338416e2466ef663f5b4e5b9b2b 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings @@ -1,5 +1,5 @@ ArchExpSubEvaluator.java 3516cc5a58514e47f965920012cf0cd738ddbaa4 RED -ArchitectureEvaluator.java cf3c9627aa7d4b00413fc3810a42769709432390 RED +ArchitectureEvaluator.java b0c504d4b75bd7286c22713282a5ae38f27db231 RED ExplorationTargetEvaluatorBase.java 1b45c04cb27a911806682b9f5ee18bcaa5f0ee0d RED ExpressionEvaluatorBase.java 920ee255df1861cbad8db5e94e6365d1d69d5fa4 RED ITopLevelEvaluator.java 032ec6375efff2234664690f271cec98816abcc5 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java index 969118d77f44d00d395c3d6eba41e5d185a14724..bd4d481faedd5fb0cb34ae9ab6742ed48a016444 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/ArchitectureEvaluator.java @@ -39,8 +39,8 @@ public class ArchitectureEvaluator extends CompositeEvaluatorBase<ArchitectureSo * Default constructor which requires a {@link SystemModelAdapter} to access the input models. */ @Inject - public ArchitectureEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public ArchitectureEvaluator() { + super(); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings index 9ee1c142eb5420fa381cb0a8f42a62ba940e0d92..f821eb6d32dd70d6acee346bcb714d90835cce42 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings @@ -1,2 +1,2 @@ -FailSilentExecModelFactory.java 64552c491927f16db7f63406347f0338a0845c06 RED -FaultDetectionVotingExecModelFactory.java 3f06e1e2b33abe9c9830191979da49219a860d8e RED +FailSilentExecModelFactory.java bd1e62664d97539f19cd5b631c02fc4323586af2 RED +FaultDetectionVotingExecModelFactory.java 0bbb870e645aa1dda912ce4a2cc9cf7157414681 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java index cb5d58160ce1a14564a2a3f73655b1956396cad0..810396b4891bd9089b3ac21d78cc084adf53bdf3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java @@ -84,10 +84,8 @@ public class FailSilentExecModelFactory /** Creates a TaskMappingCreator that matches the given execution model. */ @Override public TaskMappingCreator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execDepGraph) { - return new FailSilentTaskMappingCreator(dse, systemModelAdapter, execDepGraph); + createTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { + return new FailSilentTaskMappingCreator(dse, execDepGraph); } /* Construct execution model specific operators. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java index 2e62878aeb75c5676564924de201015c97b0b11f..03c96e2c264844f8e775b366dad43f2c4db7803e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java @@ -87,10 +87,8 @@ public class FaultDetectionVotingExecModelFactory extends /** Creates a TaskMappingCreator that matches the given execution model. */ @Override public TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createTaskMappingCreator(DseSpecification dse, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DecoderDependencyGraph execDepGraph) { - return new FaultDetectionVotingTaskMappingCreator(dse, systemModelAdapter, execDepGraph); + createTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { + return new FaultDetectionVotingTaskMappingCreator(dse, execDepGraph); } /* Construct execution model specific operators. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings index c40ec26828984867240f33825f14e6b1eae53344..aeefd7b79aaddd5f3a8e594c212eeed5026ce0b0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/.ratings @@ -14,4 +14,4 @@ ISignalAdapter.java 4f04154c5802a4f1a5469df90652852e16727421 RED ITaskAdapter.java 97ad40c0ca14be2fb4fd070214a3d6ebe5be914a RED ITransmissionUnitAdapter.java 8965b73bfe9ef232a2a6d5427f7001761716d583 RED InternalComponentParameters.java 2b19f4eeddee84e4c6e558ed9a1613cba33b7665 RED -SystemModelAdapter.java 393b4017059b41dc296d881a0fe39cfc83ccaa39 RED +SystemModelAdapter.java d6ce52abad1f440e9df1c6a3e6bb98cfcfc86bfd RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java index def49c10acf8e4812e41193d24b1cc78ca25ba1b..5b01009a3a1790ee77a31c2ccb030fea1bbbd000 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/SystemModelAdapter.java @@ -33,17 +33,17 @@ import java.util.stream.Collectors; import org.eclipse.emf.ecore.EObject; import org.fortiss.af3.component.model.Component; import org.fortiss.af3.component.model.ComponentArchitecture; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.InitialEncodingProvider; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.AbstractTaskGraphEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; import org.fortiss.af3.exploration.alg.exception.InvalidTimingModelException; -import org.fortiss.af3.exploration.alg.guava.MutableSubClassToInstanceMap; -import org.fortiss.af3.exploration.alg.guava.SubClassToInstanceMap; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.platform.model.ExecutionUnit; import org.fortiss.af3.platform.model.IPlatformArchitectureElement; @@ -55,11 +55,9 @@ import org.fortiss.tooling.base.model.element.IConnection; import org.fortiss.tooling.base.model.element.IConnector; import org.fortiss.tooling.base.model.element.IHierarchicElement; import org.fortiss.tooling.base.model.element.IModelElement; -import org.jgrapht.DirectedGraph; import org.jgrapht.Graphs; import org.jgrapht.alg.ConnectivityInspector; -import org.jgrapht.graph.DefaultDirectedGraph; -import org.jgrapht.graph.DefaultEdge; +import org.opt4j.core.Genotype; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; @@ -83,12 +81,6 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> { /** Platform architecture of this {@link SystemModelAdapter}. */ protected IPlatformArchitectureAdapter<?> platformArchitecture; - /** - * Input models that can be retrieved via {@code this} {@link SystemModelAdapter}. It references - * the original - */ - protected SubClassToInstanceMap<EObject> inputModels = MutableSubClassToInstanceMap.create(); - /** Deployable software components, to be mapped to deployment targets provided by platform. */ protected Collection<ITaskAdapter<C>> tasks; @@ -211,59 +203,6 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> { /** Defines the fault containment region defined for the target {@link PlatformArchitecture}. */ protected Class<? extends IPlatformResource> faultContainmentRegion; - /** - * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@code this} - * {@link SystemModelAdapter} by their corresponding types. - */ - private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings = - new HashMap<>(); - - /** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */ - protected <T extends IExplorationEncoding> void registerInputEncoding(T encoding) { - @SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass(); - assert (!inputEncodings.containsKey( - encodingType)) : "You are trying to add an encoding to the input encoding whose type is already registered. This is not supported"; - inputEncodings.put(encodingType, encoding); - } - - /** Returns the input encoding of the given type. */ - @SuppressWarnings("unchecked") - public <T extends IExplorationEncoding> T getInputEncoding(Class<T> encodingType) { - return (T)inputEncodings.get(encodingType); - } - - /** - * Returns the collection of {@link IExplorationEncoding} types that are availably through - * {@code this} {@link SystemModelAdapter}. - */ - public Set<Class<? extends IExplorationEncoding>> getRegisteredEncodingTypes() { - return inputEncodings.keySet(); - } - - /** Returns the input models accessible via {@code this} {@link SystemModelAdapter}. */ - public SubClassToInstanceMap<EObject> getInputModels() { - return inputModels; - } - - /** - * Adds the given model to the input models that can be obtained via {@code this} - * {@link SystemModelAdapter}. - */ - @SuppressWarnings("unchecked") - public <T extends EObject> void putInputModel(Class<? extends T> modelType, T inputModel) { - inputModels.putInstance((Class<T>)modelType, inputModel); - } - - /** - * Creates and registers an {@link AbstractTaskGraphEncoding} with @code this} - * {@link SystemModelAdapter}. - */ - protected void createAbstractTaskGraphEncoding() { - AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C> atgEnc = - new AbstractTaskGraphEncoding<>(this); - registerInputEncoding(atgEnc); - } - /** * Setups the list of {@link ITaskAdapter}s that are scheduleable by a * time-triggered scheduler. @@ -358,6 +297,22 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> { return independentTaskGraphs; } + /** + * Creates the initial set of encodings that can be constructed from the input system models. + * While {@link Genotype}s and {@link Phenotype}s have a special meaning in the optimizers' + * context, {@link IExplorationEncoding}s are "only" system abstraction without any of the + * aforementioned meanings. + */ + @SuppressWarnings("unchecked") + protected void createInitialEncodings() { + InitialEncodingProvider initEncProvider = InitialEncodingProvider.getInstance(); + initEncProvider.clearEncodings(); + + initEncProvider.registerInputEncoding( + new AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C>( + (Collection<? extends DefaultTaskGraph<?>>)getTaskGraphs())); + } + /** * Adds the given collection of {@link ISafetyFunctionAdapter}s to {@code this} * {@link SystemModelAdapter} that represents the input system models. In contrast to other @@ -442,72 +397,6 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> { } } - /** - * Creates the {@link PlatformCommunicationGraphEncoding} that is used to determine the routing - * of - * messages between {@link ITaskAdapter}s and their respective - * {@link IExecutionUnitAdapter}s. - */ - protected void setupPlatformGraph() { - platformCommunicationGraph = new PlatformCommunicationGraphEncoding(this, createGraph()); - } - - /** - * Creates the communication (or connection) graph which is implicitly given by the platform - * referenced in the {@link SystemModelAdapter}. This graph is used for routing messages. - */ - public DirectedGraph<IResourceAdapter<?>, DefaultEdge> createGraph() { - DirectedGraph<IResourceAdapter<?>, DefaultEdge> tempPlatformCommGraph = - new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class); - DirectedGraph<IResourceAdapter<?>, DefaultEdge> platformGraph = - new DefaultDirectedGraph<IResourceAdapter<?>, DefaultEdge>(DefaultEdge.class); - - // Add all resources present in the platform as vertices to the "connection graph" - for(IResourceAdapter<?> resource : getDeploymentTargets()) { - tempPlatformCommGraph.addVertex(resource); - } - for(IResourceAdapter<?> resource : getMemoryUnits()) { - tempPlatformCommGraph.addVertex(resource); - } - for(IResourceAdapter<?> resource : getGatewayUnits()) { - tempPlatformCommGraph.addVertex(resource); - } - for(IResourceAdapter<?> resource : getTransmissionUnits()) { - tempPlatformCommGraph.addVertex(resource); - } - - // Successively connect the resources in the graph. The edges are given within the - // collection resource connectors are assumed to be fully connected. - for(IResourceConnectionAdapter connection : platformConnections) { - // We add edges for each receiver in order to support broadcast connections - for(IResourceAdapter<?> currentReceiverResource : connection.getTargetResources()) { - // If the current resource is a child of a {@link TransmissionUnit} (like a NoC - // router), respect the direction of connections such that complex networks are - // correctly reflected. - if(connection - .getConnectionType(currentReceiverResource) == ConnectionType.OUTGOING) { - Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(), - currentReceiverResource); - } else if(connection - .getConnectionType(currentReceiverResource) == ConnectionType.INCOMING) { - Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource, - connection.getSourceResource()); - } else { - // Add the edges of a single connection. We add to edges for each connection - // such that an undirected graph is generated effectively. It is required to use - // this "trick" in order to be able to use the standard shortest path - // algorithms. - Graphs.addEdgeWithVertices(platformGraph, connection.getSourceResource(), - currentReceiverResource); - Graphs.addEdgeWithVertices(platformGraph, currentReceiverResource, - connection.getSourceResource()); - } - } - } - - return platformGraph; - } - /** * Setups the {#link emittedMessagesBySender} map which makes it possible to easily identify the * {@link ISignalAdapter}s that are emitted by the given {@link ITaskAdapter}. @@ -921,4 +810,9 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> { public Class<? extends IPlatformResource> getFaultContainmentRegion() { return faultContainmentRegion; } + + /** Returns the present connections between platform resources. */ + public Collection<IResourceConnectionAdapter> getResouceConnections() { + return platformConnections; + } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings index 8b0d4b1b428b31ff38f0599904e4b8711efa83b2..75c63c2e327531d90f17e98c0e80f2ccbaa73b67 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings @@ -8,6 +8,6 @@ AF3RequestAdapter.java 7cfea424beeacaac81b48efd4e1c24270dcb3929 RED AF3ResourceAdapter.java 00070d4e3ec7f19a672b6295c546fa1d30d7fc50 RED AF3ResourceConnectionAdapter.java 0e791fd7d9602f4cf00f54c6254d31f1c9cc72b0 RED AF3SignalAdapter.java bc102b65b929393808eb747572f9ae05b04a8856 RED -AF3SystemModelAdapter.java 6ecf47e813341aa68f049a8cdec77782b98c2a96 RED +AF3SystemModelAdapter.java e9f93d7710e2b00a6a420687b8fd161974e10dee RED AF3TaskAdapter.java a3cfe04d7b235cc61031c5477de2cb54ac810aac RED AF3TransmissionUnitAdapter.java 0ce1a08c29d75a05fb49668d02abddd852487a4c RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java index 08d7f655744392ef6bd966aed4073ad2a732a11e..346318d062a619970613e18983084cd865ccf9df 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3SystemModelAdapter.java @@ -135,9 +135,6 @@ public class AF3SystemModelAdapter extends this.taskObjects = tasks.getEntries(); this.faultContainmentRegion = Tile.class; - // TODO(#3254): Use SuperSets here for querying the required input types. - putInputModel(ComponentArchitecture.class, compArch); - putInputModel(PlatformArchitecture.class, platArch); // Disable any annotation view update. annotationUpdateEnabled = isUpdateEnabled(); @@ -167,10 +164,11 @@ public class AF3SystemModelAdapter extends setupScheduleableComponents(); setupTaskGraphs(); + setupEmittedMessages(); - setupPlatformGraph(); - registerInputEncoding(getPlatformCommunicationGraph()); - createAbstractTaskGraphEncoding(); + + // Create the initial encodings that can already be constructed from the input models. + createInitialEncodings(); // Re-enable annotation view updates. setUpdateEnabled(annotationUpdateEnabled); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings index 54f52d20d29f95cf4ed433f0d876ac0c622bc867..6eefaced98791368c8786ed35011caddb0a617b8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings @@ -1,3 +1,3 @@ DependencyEdge.java 2de1bcec554c6167f132b3808040704867c65b7f RED -DependencyGraph.java 3c7e6385ed928f6a0bf9d55c05a75415234bb25c RED +DependencyGraph.java c00ed51a15597aad876b80d2a323c9053c1b5995 RED IDependencyModule.java 51c66e0f96ef56e9c5f34ead3b4efeddf2193b55 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java index 719571f1f2313ba9df26a2009b01e4aade4f356b..745cb18dfa5992412c063d6280c44ede081e54b2 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java @@ -38,6 +38,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.graph.display.ObjectJGraphTVisualizer; +import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; import org.fortiss.af3.exploration.alg.util.GraphUtils; import org.jgrapht.Graphs; import org.jgrapht.experimental.dag.DirectedAcyclicGraph; @@ -85,6 +86,9 @@ public abstract class DependencyGraph<V, T extends IDependencyModule<V, ? extend */ private Map<Class<? extends V>, T> pureIdentityOperators = new HashMap<>(); + /** Set of {@link IExplorationEncoding} types that can be obtained from Creators. */ + protected Set<Class<? extends V>> inputEncodings = new HashSet<>(); + /** Constructor. */ public DependencyGraph(Set<Class<? extends V>> reqTypeCollection, Class<? extends V> vertexType) { @@ -92,6 +96,14 @@ public abstract class DependencyGraph<V, T extends IDependencyModule<V, ? extend this.vertexType = vertexType; } + /** + * Adds an initial {@link IExplorationEncoding} that is provided by {@link Creator}s to the + * dependency graph. + */ + public void addCreatedEncoding(Class<? extends V> inputType) { + inputEncodings.add(inputType); + } + /** * Adds the input types and the generated output types of the given * operator to this {@link DependencyGraph}. They are connected by edges diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings index f67dac442fa692cd3e057f10a3a0b9fed5f654f6..f8afe20299b8d12c41b3d70aac029f5d0a281ae5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings @@ -1,7 +1,7 @@ -MessagePathOnClicked.java 985f075fabbd5e6aa796e5ef0c0e6a976a9e8571 RED -ScheduleGanttRenderer.java 8c481d56ca65d6074f0340f2c7789bbe6e3a48e6 RED -ScheduleLabelGenerator.java 595273570eef7ef53ba5a9efd4ab25133aded3a8 RED -SchedulePlotter.java 71570960426800c1e2589dd05e538e9abb69f126 RED -ScheduleToolTipGenerator.java 492b5f3469dc2ae7e57af39059c09bd0b64773ae RED -TaskSeriesCollectionFromSchedule.java a945f60435ee3bfa908db211a4924963a6dcdfb2 RED -XYPlotter.java fa10b612914c940cb6c42c3c072d00319aaf82ae RED +MessagePathOnClicked.java e90438a9aa7342112e9c7f9ff9d5ea85d1e3a445 RED +ScheduleGanttRenderer.java 1ebd6405da88417a9cc8464913a1ad5206ff897f RED +ScheduleLabelGenerator.java 0ceecedfec9802bbcaa33525d61e1a60a70d3841 RED +SchedulePlotter.java 29b1156c9419d4ff3314c4b2c932aeb46f4749f8 RED +ScheduleToolTipGenerator.java cedfa0dd7ebc7b48d7cc70e966eebaeee9636caf RED +TaskSeriesCollectionFromSchedule.java b53b7af649c48980520ad572da8c7bbdbae0aed5 RED +XYPlotter.java 0c384f5d560260225cee5bb65710842613b395b9 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings index 3cf4406c30a1e50ff7ed61f38db99c9e0423212b..fb01f2d165ee6cc356c6ed50390fa3b5c999eadf 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/.ratings @@ -1,4 +1,4 @@ -ExplorationEncodingMap.java 0c8eedf00ba34b96a24b5ec0bcfbe50dbcc7ea35 RED +ExplorationEncodingMap.java 061b6c18f34c3584890ec0630ec40bac1eee7c1c RED ExplorationService.java f5067724b280208d9a7f59f417a068cbc7a20416 RED IExplorationConstraintTransformationService.java 6c3c34b527d526674e6474b42131b6948bdb8937 RED IExplorationContraintTransformationModule.java a7ab4345519341a13ec2de1879c7efbd9cb0dbb2 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java index 4944442871da1dbe54631fc12e8c70add6585444..224f014dd6821f5040457f881bd014c605420601 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/ExplorationEncodingMap.java @@ -22,7 +22,6 @@ import java.util.Set; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.CompositePhenotype; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; /** * Allows to capture the already created/decoded {@link Phenotype}s and pass them to their successor @@ -34,23 +33,12 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; */ public class ExplorationEncodingMap<T extends IExplorationEncoding> implements Iterable<Entry<Class<? extends T>, T>> { - - /** - * References the {@link SystemModelAdapter} that provides an abstraction of the input models. - */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** * Map which correlates the {@link IExplorationEncoding} classes with their corresponding * {@link IExplorationEncoding}s. */ protected LinkedHashMap<Class<? extends T>, T> encodings = new LinkedHashMap<>(); - /** Constructor. */ - public ExplorationEncodingMap(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } - /** * Returns whether {@code this} {@link ExplorationEncodingMap} contains an encoding that is * assignable from the given encoding type. diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings index a5a1d84ba5f8fe060f05bb42571abe8768de948b..4c6b32d1241acff26850f4e91f023baeb6482043 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/.ratings @@ -1,4 +1,4 @@ ExplorationConstraintTransformationService.java 865f1aba5538370e5855cc46cbe854b0340549e6 RED ExplorationEvaluationService.java 259ace09d86990428fb2ff9cfbff552cb4a69be8 RED ExplorationRepairService.java d8e467d2c83d17ee034ee4cba8c336660ec18b96 RED -ExplorationTransformationService.java 89f24b8f70a4d942478a059193e11930b13c36f2 RED +ExplorationTransformationService.java 96640353f12abd867378b84b5437811ca7996d8f RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java index faf082936459866576772ffd62472e4fcbf3e876..00fffbe79139af2bedcad609a63babc25e3b57cb 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationTransformationService.java @@ -233,7 +233,7 @@ public class ExplorationTransformationService<T extends ITransformationModule<?> // TODO: instead of triggering the transformations here, use a threaded implementation in // the ITransformation's base class. ExplorationEncodingMap<IExplorationEncoding> solutionEncodings = - new ExplorationEncodingMap<>(null); + new ExplorationEncodingMap<>(); Queue<ITransformationModule<?>> moduleTraversalList = new LinkedList<>(); moduleTraversalList.addAll(topLvlModules); while(!moduleTraversalList.isEmpty()) { @@ -339,7 +339,7 @@ public class ExplorationTransformationService<T extends ITransformationModule<?> // and its sub-Modules are present. // TODO: instead of triggering the transformations here, use a threaded implementation in // the ITransformation's base class. - ExplorationEncodingMap<IExplorationEncoding> encodings = new ExplorationEncodingMap<>(null); + ExplorationEncodingMap<IExplorationEncoding> encodings = new ExplorationEncodingMap<>(); Queue<ITransformationModule<?>> moduleTraversalList = new LinkedList<>(); moduleTraversalList.addAll(topLvlModules); while(!moduleTraversalList.isEmpty()) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings index 01763b6de79264a8fa6aaf4f2bae2e8903f89bec..2c853377f339ef80fa2208c9f370a9e417165732 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/.ratings @@ -1 +1 @@ -ElementPropertyStaticImpl.java 00996d1c7f0f6192d315904d6459d0bf99bc3a30 RED +ElementPropertyStaticImpl.java f979c072af7d0815c71d56ab4e3f4d03b224ae63 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java index 4b90b4e81b989972cf56538395b66bdfb29262ea..7ca63e3f7093b7f4948a8605bcd3bb680e0bf8ef 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/dsl/model/patterns/impl/ElementPropertyStaticImpl.java @@ -27,7 +27,7 @@ import org.fortiss.tooling.base.model.element.IModelElement; */ public class ElementPropertyStaticImpl { - /** Static implementation of the method {@link ElementProperty#getProperty()} using lambdas. */ + /** Static implementation of the method {@link ElementProperty#getProperty} using lambdas. */ public static <T, ME extends IModelElement> T getProperty(ElementProperty<ME, T> pattern) { // FIXME: in the model, there should be a type definition for the java type "Function" to be // type-safer.