From a316ae0c5268920739846fad63b113ac7f122705 Mon Sep 17 00:00:00 2001 From: Alexander Diewald <diewald@fortiss.org> Date: Mon, 2 Jul 2018 14:17:03 +0200 Subject: [PATCH] DI: Partly remove dependency on DseSpecifications. * Remove the DseSpecification as a dependency from encoding, decoders, and creators in parts. * DseSpecifications are used to extract constraints from the input constraint set. They will be replaced by a constraint extraction and propagation mechanism. Signed-off-by: Alexander Diewald <diewald@fortiss.org> --- .../fortiss/af3/exploration/alg/dse/.ratings | 2 +- .../af3/exploration/alg/dse/DSEFactory.java | 7 +- .../alg/dse/TaskMappingFactory.java | 52 +++--- .../backend/opt4j/create/taskmapping/.ratings | 8 +- .../AbstractTaskMappingCreator.java | 14 +- .../FailSilentTaskMappingCreator.java | 11 +- ...aultDetectionVotingTaskMappingCreator.java | 11 +- .../taskmapping/TaskMappingCreator.java | 7 +- .../opt4j/encoding/taskmapping/.ratings | 2 +- .../taskmapping/TaskMappingEncoding.java | 151 ++++++++---------- .../taskmapping/abstractmapping/.ratings | 2 +- .../AbstractTaskMappingEncoding.java | 25 ++- .../taskmapping/instantiatedmapping/.ratings | 6 +- .../FailSilentTaskMappingEncoding.java | 31 ++-- ...ultDetectionVotingTaskMappingEncoding.java | 27 ++-- .../InstantiatedTaskMappingEncoding.java | 21 ++- .../problem/taskmapping/instantiate/.ratings | 6 +- .../AbstractTaskMappingDecoder.java | 8 - .../FailSilentAbstractTaskMappingDecoder.java | 9 +- ...ctionVotingAbstractTaskMappingDecoder.java | 21 +-- .../af3/exploration/alg/dse/sysmodel/.ratings | 4 +- .../sysmodel/FailSilentExecModelFactory.java | 46 +++--- .../FaultDetectionVotingExecModelFactory.java | 57 ++++--- 23 files changed, 239 insertions(+), 289 deletions(-) diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/.ratings index 4e100121..6153982a 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/.ratings @@ -3,4 +3,4 @@ DSEFactory.java 1ae5fecb636a1a3eb8520d7906ad664828f22fe7 RED Explorer.java 91cdb26b6f42e4e5e82a26f7dbd9141ec2ff7b18 RED ImplicitExplorationTargetFactory.java 25c3c668ed268843f8af7e37eb03370ed513b482 RED SolutionQuantification.java 19cd7caa721bbca3112af7825c7fb20a96a4a799 RED -TaskMappingFactory.java 47e6b1cd8e26a4a5e775beddff030dcf5df2e33d RED +TaskMappingFactory.java 0f366d92885dcd1078f9746c6dc3270df649f43f RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java index 1ae5fecb..2f0d4e71 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/DSEFactory.java @@ -274,10 +274,9 @@ public class DSEFactory { DseSpecification dse, DecoderDependencyGraph execDepGraph) throws Exception { Class<AbstractTaskMappingEncoding> tmEnodingClass = AbstractTaskMappingEncoding.class; AbstractTaskMappingCreator tmCreator = - tmFactory.createAbstractTaskMappingCreator(dse, execDepGraph); + tmFactory.createAbstractTaskMappingCreator(execDepGraph); @SuppressWarnings("rawtypes") List<ComposableDecoder> abstrTaskDecoders = new ArrayList<>(); - AbstractTaskMappingDecoder<?, ?> atmDecoder = - tmFactory.createAbstractTaskMappingDecoder(dse); + AbstractTaskMappingDecoder<?, ?> atmDecoder = tmFactory.createAbstractTaskMappingDecoder(); AbstractTaskMappingIdentityDecoder idtDecoder = new AbstractTaskMappingIdentityDecoder(); abstrTaskDecoders.add(atmDecoder); abstrTaskDecoders.add(idtDecoder); @@ -322,7 +321,7 @@ public class DSEFactory { tmFactory.createAbstractToAcyclicTaskGraphDecoder(); @SuppressWarnings("rawtypes") MessageDecoder msgDecoder = tmFactory.createMessageDecoder(); @SuppressWarnings("rawtypes") TaskMappingCreator tmCreator = - tmFactory.createTaskMappingCreator(dse, execDepGraph); + tmFactory.createTaskMappingCreator(execDepGraph); @SuppressWarnings("rawtypes") List<ComposableDecoder> instTaskDecoders = new ArrayList<>(); instTaskDecoders.add(tgDecoder); instTaskDecoders.add(acycTgDecoder); diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java index 47e6b1cd..0f366d92 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/TaskMappingFactory.java @@ -103,23 +103,20 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * Dependency graph defining the execution order. * @return instance of an {@link AbstractTaskMappingCreator}. */ - public AbstractTaskMappingCreator createAbstractTaskMappingCreator(DseSpecification dse, + public AbstractTaskMappingCreator createAbstractTaskMappingCreator( DecoderDependencyGraph execDepGraph) { - return new AbstractTaskMappingCreator(dse, execDepGraph); + return new AbstractTaskMappingCreator(execDepGraph); } /** * Creates a TaskMappingCreator that matches the given execution model. * - * @param dse - * design space exploration model defined in the GUI * @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, - DecoderDependencyGraph execDepGraph) { + public TaskMappingCreator<S, T> createTaskMappingCreator(DecoderDependencyGraph execDepGraph) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -127,15 +124,13 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * Creates a TaskMappingCreator that uses an {@link AbstractTaskMappingEncoding} to generate a * Tank Mapping that consists only of tasks instances. * - * @param dse - * design space exploration model defined in the GUI * @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, - AbstractTaskMappingEncoding abstractEnc) { + public TaskMappingCreator<S, T> + createTaskMappingCreator(AbstractTaskMappingEncoding abstractEnc) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -160,8 +155,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s. * @return Mutation operator that decreases the redundant instances of tasks. */ - public MutateRedundancyDecrement<?, ?> - createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator( + Collection<ITaskAdapter<?>> tasks) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -172,8 +167,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s. * @return Mutation operator that increases the redundant instances of tasks. */ - public MutateRedundancyIncrement<?, ?> - createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator( + Collection<ITaskAdapter<?>> tasks) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -185,8 +180,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * @return Crossover operator that swaps randomly many allocations from one resource with * another. */ - public CrossoverRandManyAllocation<?, ?> - createCrossoverRandManyAllocationOperator(double rate) { + public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(double rate) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -213,8 +207,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * the decoding strategy * @return instance of an {@link AbstractTaskMappingDecoder}. */ - public AbstractTaskMappingDecoder<?, ?> - createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { + public AbstractTaskMappingDecoder<?, ?> createAbstractTaskMappingDecoder() { throw new UnsupportedOperationException( "The Decoder to instantiate an \"abstract\" Task Mapping has not been defined for current Execution Model."); } @@ -301,8 +294,9 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, createEvaluatorWrapper(ExplorationTarget<?> goal, int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception { ExplorationEvaluationService<?> evalService = ExplorationEvaluationService.getInstance(); - EvaluatorWrapper<?, RT, ET> evaluatorWrapper = (EvaluatorWrapper<?, RT, ET>)evalService - .createEvalWrapperFor(systemModelAdapter, goal); + EvaluatorWrapper<?, RT, ET> evaluatorWrapper = + (EvaluatorWrapper<?, RT, ET>)evalService.createEvalWrapperFor(systemModelAdapter, + goal); // TODO: remove the block below when all evaluators are migrated to the service interface. if(evaluatorWrapper == null) { @@ -316,11 +310,12 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, /* Then, the constraints are handled */ else if(goal instanceof DeadlineConstraint) { evaluatorWrapper = - (EvaluatorWrapper<?, RT, ET>)createDeadlineConstraintWrapper(goal, priority, - systemModelAdapter); + (EvaluatorWrapper<?, RT, ET>)createDeadlineConstraintWrapper(goal, + priority, systemModelAdapter); } else if(goal instanceof PeriodConstraint) { - evaluatorWrapper = (EvaluatorWrapper<?, RT, ET>)createPeriodConstraintWrapper(goal, - priority, systemModelAdapter); + evaluatorWrapper = + (EvaluatorWrapper<?, RT, ET>)createPeriodConstraintWrapper(goal, priority, + systemModelAdapter); } else if(goal instanceof ComponentMultiAllocationConstraint) { evaluatorWrapper = (EvaluatorWrapper<?, RT, ET>)createComponentMultiAllocationConstraintWrapper( @@ -358,8 +353,8 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * if the input model validation fails. */ protected <RT, ET extends ExplorationTarget<RT>> - EvaluatorWrapper<?, Double, FailureMinObjective> - createFailureMinObjectiveWrapper(ExplorationTarget<?> optGoal, int priority, + EvaluatorWrapper<?, Double, FailureMinObjective> createFailureMinObjectiveWrapper( + ExplorationTarget<?> optGoal, int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception { throw new UnsupportedOperationException(GOAL_NOT_IMPL_MSG); } @@ -378,8 +373,9 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * @throws Exception * if the input model validation fails. */ - protected <RT, ET extends ExplorationTarget<RT>> EvaluatorWrapper<?, Double, DeadlineConstraint> - createDeadlineConstraintWrapper(ExplorationTarget<?> optGoal, int priority, + protected <RT, ET extends ExplorationTarget<RT>> + EvaluatorWrapper<?, Double, DeadlineConstraint> createDeadlineConstraintWrapper( + ExplorationTarget<?> optGoal, int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception { throw new UnsupportedOperationException(GOAL_NOT_IMPL_MSG); } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings index 0003728d..83b12ee2 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/.ratings @@ -1,4 +1,4 @@ -AbstractTaskMappingCreator.java 813a927b1b10b29e7707f4207901d3e0a3529b43 RED -FailSilentTaskMappingCreator.java 7375dc0d4c424606672e0fd88a2f97bf2f0c58ea RED -FaultDetectionVotingTaskMappingCreator.java 0b8ce4eb8f73d3fa0fa1d3ef0d4ffec2e2be253e RED -TaskMappingCreator.java 1b09ee1d49cd4a8424d922fa605463f810063c78 RED +AbstractTaskMappingCreator.java a83a8ec0a92b1ba5445cda875864e4213c22e8ef RED +FailSilentTaskMappingCreator.java 26ad97acfca346207818684919f8d9eee68fca71 RED +FaultDetectionVotingTaskMappingCreator.java 1c66a63552fa766d3763c1a4daf34c8d03b4b3a1 RED +TaskMappingCreator.java da026f6e18b7220ccc1acb2ecb640d7ffcd488ea RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java index 813a927b..a83a8ec0 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/AbstractTaskMappingCreator.java @@ -26,7 +26,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.Genotype; import org.opt4j.core.problem.Creator; @@ -38,21 +37,20 @@ import com.google.inject.Inject; * * @author diewald */ -public class AbstractTaskMappingCreator - extends TaskMappingCreator<AbstractTaskMappingEntry, AbstractTaskMappingEncoding> { +public class AbstractTaskMappingCreator extends + TaskMappingCreator<AbstractTaskMappingEntry, AbstractTaskMappingEncoding> { /** Constructor */ @Inject - public AbstractTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { - super(dse, execDepGraph); + public AbstractTaskMappingCreator(DecoderDependencyGraph execDepGraph) { + super(execDepGraph); } /** * {@inheritDoc} * * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. + * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ @Override public AbstractTaskMappingEncoding createComposable(FlatGenotypeMap createdGenotypes, @@ -66,7 +64,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, partEnc, atgEnc, atmEnc); + return new AbstractTaskMappingEncoding(partEnc, atgEnc, atmEnc); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java index 7375dc0d..26ad97ac 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FailSilentTaskMappingCreator.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.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import com.google.inject.Inject; @@ -35,16 +34,16 @@ import com.google.inject.Inject; * * @author diewald */ -public class FailSilentTaskMappingCreator - extends TaskMappingCreator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { +public class FailSilentTaskMappingCreator extends + TaskMappingCreator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { /** * Constructs a task mapping creator for a given DSE specification and input model * (execution model = fail-silent) */ @Inject - public FailSilentTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { - super(dse, execDepGraph); + public FailSilentTaskMappingCreator(DecoderDependencyGraph execDepGraph) { + super(execDepGraph); } /** {@inheritDoc} */ @@ -59,7 +58,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, partEnc, atgEnc, atmEnc); + return new FailSilentTaskMappingEncoding(partEnc, atgEnc, atmEnc); } // TODO: remove this method: use the identifier from the encoding, instead. diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java index 0b8ce4eb..1c66a635 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/FaultDetectionVotingTaskMappingCreator.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.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import com.google.inject.Inject; @@ -35,7 +34,8 @@ import com.google.inject.Inject; * * @author diewald */ -public class FaultDetectionVotingTaskMappingCreator extends +public class FaultDetectionVotingTaskMappingCreator + extends TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> { /** @@ -43,9 +43,8 @@ public class FaultDetectionVotingTaskMappingCreator extends * (execution model = fault-detection and voting) */ @Inject - public FaultDetectionVotingTaskMappingCreator(DseSpecification dse, - DecoderDependencyGraph execDepGraph) { - super(dse, execDepGraph); + public FaultDetectionVotingTaskMappingCreator(DecoderDependencyGraph execDepGraph) { + super(execDepGraph); } /** {@inheritDoc} */ @@ -60,7 +59,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, partEnc, atgEnc, atmEnc); + return new FaultDetectionVotingTaskMappingEncoding(partEnc, atgEnc, atmEnc); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java index 1b09ee1d..da026f6e 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/taskmapping/TaskMappingCreator.java +++ b/org.fortiss.af3.exploration.alg/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.moea.model.DseSpecification; import org.opt4j.core.Genotype; import org.opt4j.core.problem.Creator; @@ -36,13 +35,9 @@ import com.google.inject.Inject; public abstract class TaskMappingCreator<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends ComposableCreatorBase<T> { - /** DSE specification. */ - protected DseSpecification dse; - /** Constructor. */ @Inject - public TaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { + public TaskMappingCreator(DecoderDependencyGraph execDepGraph) { super(execDepGraph); - this.dse = dse; } } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings index c7152a3e..f05c8e7c 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings @@ -1,2 +1,2 @@ -TaskMappingEncoding.java 49480f278fb9d8c40710ef8b8fc574b325c62a54 RED +TaskMappingEncoding.java f5d0f55f893f7d5583ff5c12840d5fb4c9add5a9 RED TaskMappingEntry.java 407c9065007f8cd4adc8b64eea13a837bba581ae RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java index 49480f27..f5d0f55f 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java @@ -16,8 +16,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping; -import static org.fortiss.tooling.kernel.utils.EcoreUtils.getChildrenWithType; - import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -25,8 +23,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Optional; -import java.util.stream.Collectors; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.ArchExpSubEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding; @@ -48,7 +44,6 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.fortiss.af3.exploration.alg.service.IExplorationEncoding; 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.tooling.common.util.LambdaUtils; @@ -64,33 +59,28 @@ import com.google.common.collect.Multimap; // TODO: The CompositePhenotype is not typed correctly: An additional Type parameter would be needed // for the subclass of TaskMappingEncoding and passed to the CompositePhenotype. public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends TaskMappingEntry<S, Partition>> - extends MappingEncoding<TaskMappingEncoding<S, T>, S, Partition, T> - implements IMappingEncoding<S, Partition, T>, ComposableGenotype, ArchExpSubEncoding, + extends MappingEncoding<TaskMappingEncoding<S, T>, S, Partition, T> implements + IMappingEncoding<S, Partition, T>, ComposableGenotype, ArchExpSubEncoding, IExplorationEncoding, ConstrainedEncoding, Cloneable { /** Random generator */ private RandomExploration rand = RandomExploration.getInstance(); - /** DSE specification */ - protected DseSpecification dse; - /** Map holding the DSE-internal constraints. */ protected Multimap<Class<? extends ExplorationConstraint<?>>, ExplorationConstraint<?>> constraintMap = HashMultimap.create(); /** Stores the references between {@link IMappingEntry} to keep track of association updates. */ - protected Multimap<IMappingEntry<?, ?>, IMappingEntry<?, ?>> referencedByMap = - HashMultimap.create(); + protected Multimap<IMappingEntry<?, ?>, IMappingEntry<?, ?>> referencedByMap = HashMultimap + .create(); /** - * Map of disallowed {@link ITaskAdapter} -> {@link IExecutionUnitAdapter} - * allocations. + * Map of disallowed {@link ITaskAdapter} -> {@link IExecutionUnitAdapter} allocations. */ // TODO: Move to a central place, but where? protected Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> disallowedAllocations; /** - * Map of disallowed {@link ITaskAdapter} -> {@link IExecutionUnitAdapter} - * allocations. + * Map of disallowed {@link ITaskAdapter} -> {@link IExecutionUnitAdapter} allocations. */ // TODO: Move to a central place, but where? protected Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> allowedAllocations; @@ -99,8 +89,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T protected Collection<ITaskAdapter<?>> fixAllocatedComponents; /** - * Collection of deployable {@link ITaskAdapter}s represented by {@code this} - * mapping. + * Collection of deployable {@link ITaskAdapter}s represented by {@code this} mapping. */ protected Collection<S> tasks; @@ -121,9 +110,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * system. */ @SuppressWarnings("unchecked") - public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding, + public TaskMappingEncoding(PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding) { - this.dse = dse; this.tgEncoding = tgEncoding; this.partMappingEncoding = partMappingEncoding; this.tasks = (Collection<S>)tgEncoding.getTasks(); @@ -138,12 +126,11 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * Constructor that optionally initializes the encoding to a random encoding * * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. + * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding, + public TaskMappingEncoding(PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding, boolean initialize) throws ExplorationException { - this(dse, partMappingEncoding, tgEncoding); + this(partMappingEncoding, tgEncoding); if(initialize) { resetEncoding(); } @@ -153,14 +140,12 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * Constructor that optionally initializes the encoding to a random encoding * * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. + * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public TaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partMappingEncoding, + public TaskMappingEncoding(PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding, - TaskMappingEncoding<ITaskAdapter<?>, ?> incompleteEncoding) - throws ExplorationException { - this(dse, partMappingEncoding, tgEncoding); + TaskMappingEncoding<ITaskAdapter<?>, ?> incompleteEncoding) throws ExplorationException { + this(partMappingEncoding, tgEncoding); completeEncoding(incompleteEncoding); } @@ -197,17 +182,18 @@ 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 : 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())); - // } - } + // TODO: DEC_CONSTR + // 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())); + // // } + // } return fixAllocatedComponents; } @@ -262,8 +248,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T private Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> createAllowedAllocationMap() { Multimap<ITaskAdapter<?>, IExecutionUnitAdapter<?>> rval = HashMultimap.create(); - Collection<ComponentMultiAllocationConstraint> allowedDeploymentConstraints = - getChildrenWithType(dse, ComponentMultiAllocationConstraint.class); + // Collection<ComponentMultiAllocationConstraint> allowedDeploymentConstraints = + // getChildrenWithType(dse, ComponentMultiAllocationConstraint.class); Collection<ITaskAdapter<?>> constrainedComponentAdps = new HashSet<>(); // for(ComponentMultiAllocationConstraint currentConstraint : allowedDeploymentConstraints) @@ -302,8 +288,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * {@link ComponentMultiAllocationConstraint} is defined, otherwise {@code null} is returned. */ // TODO(#2960): Must be based on the DSML expressions. - public Collection<IExecutionUnitAdapter<?>> - getAllowedAllocations(ITaskAdapter<?> deployableComponent) { + public Collection<IExecutionUnitAdapter<?>> getAllowedAllocations( + ITaskAdapter<?> deployableComponent) { // ITaskAdapter<?> origComponent = systemModelAdapter // .getDeployableComponentOf((EObject)deployableComponent.getObject()); // return allowedAllocations.get(origComponent); @@ -315,8 +301,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * {@link ComponentMultiDislocationConstraint} is defined, otherwise null is returned. */ // TODO(#2960): Must be based on the DSML expressions. - public Collection<IExecutionUnitAdapter<?>> - getDisAllowedAllocations(ITaskAdapter<?> deployableComponent) { + public Collection<IExecutionUnitAdapter<?>> getDisAllowedAllocations( + ITaskAdapter<?> deployableComponent) { // ITaskAdapter<?> origComponent = systemModelAdapter // .getDeployableComponentOf((EObject)deployableComponent.getObject()); // return disallowedAllocations.get(origComponent); @@ -339,8 +325,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T /** {@inheritDoc} */ @Override - public <U extends ExplorationConstraint<?>> void - replaceConstraints(Multimap<Class<? extends U>, U> constraintMap) { + public <U extends ExplorationConstraint<?>> void replaceConstraints( + Multimap<Class<? extends U>, U> constraintMap) { constraintMap.keySet().forEach(c -> this.constraintMap.removeAll(c)); this.constraintMap.putAll(constraintMap); } @@ -381,8 +367,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T if(incompleteEncoding != null) { allocComponents.removeAll(incompleteEncoding.getRequesters()); - incompleteEncoding.getMappingEntries() - .forEach(e -> addAllocation(createEntry(e.getSource(), e.getTarget()))); + incompleteEncoding.getMappingEntries().forEach( + e -> addAllocation(createEntry(e.getSource(), e.getTarget()))); } createEncoding(allocComponents); @@ -438,8 +424,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T } else { for(int repl = 0; repl < deployableComponent.getMaxReplication(); repl++) { int calcTargetIdx = roundRobinAllocIdx % validExecTargets.size(); - addAllocation( - createEntry(deployableComponent, validExecTargets.get(calcTargetIdx))); + addAllocation(createEntry(deployableComponent, + validExecTargets.get(calcTargetIdx))); roundRobinAllocIdx++; if(roundRobinAllocIdx == execTargets.size()) { roundRobinAllocIdx = 0; @@ -458,8 +444,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * Creates an (encoding specific) mapping entry the describes that a given deployable component * is mapped to a deployment target. */ - protected abstract T createEntry(ITaskAdapter<?> deployableComponent, - Partition deploymentTarget); + protected abstract T + createEntry(ITaskAdapter<?> deployableComponent, Partition deploymentTarget); /** * Creates a {@link TaskMappingEntry} and adds it to {@code this} mapping. The given @@ -471,8 +457,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * {@link TaskMappingEntry}. * @return The created {@link TaskMappingEntry}. */ - public <U extends TaskMappingEntry<ITaskAdapter<?>, Partition>> T - createAndAddEntry(U mappingEntry) { + public <U extends TaskMappingEntry<ITaskAdapter<?>, Partition>> T createAndAddEntry( + U mappingEntry) { T newEntry = createEntry(mappingEntry); addAllocation(newEntry); return newEntry; @@ -487,8 +473,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * derived. * @return The created {@link TaskMappingEntry}. */ - protected abstract <U extends TaskMappingEntry<ITaskAdapter<?>, Partition>> T - createEntry(U allocEntry); + protected abstract <U extends TaskMappingEntry<ITaskAdapter<?>, Partition>> T createEntry( + U allocEntry); /** * Constructs a random {@TaskMappingEntry} for the given deployable @@ -523,7 +509,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T if(target == null) { throw new ExplorationException( "Could not create an allocation entry for the Component " + - deployableComponent.getName() + ". Typical reasons include:\n" + + deployableComponent.getName() + + ". Typical reasons include:\n" + "1. An over-constrained ExplorationSpecification such that there " + "exist no valid allocation targets." + "2. Desired but non-selected deployment targets in the annoation view " + @@ -611,24 +598,25 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * Deployable component for which fixed deployment is to be generated for */ public void generateFixedDeployment(S deployableComponent) { - Collection<ComponentMultiAllocationConstraint> constraints = dse.getTargetSpecification() - .getTargets().stream() - .filter(t -> (t instanceof ComponentMultiAllocationConstraint)) - .map(ComponentMultiAllocationConstraint.class::cast).collect(Collectors.toList()); - for(ComponentMultiAllocationConstraint cons : constraints) { - if(cons.getComponent() == deployableComponent.getObject()) { - removeTask(deployableComponent); - List<IExecutionUnitAdapter<?>> physExecList = new ArrayList<>(partitions); - List<Partition> execList = new ArrayList<>(); - LambdaUtils.forEach(physExecList, e -> execList - .addAll(partMappingEncoding.getRequesters((IResourceAdapter<?>)e))); - int allocIdx = 0; - for(int i = 0; i < deployableComponent.getMaxReplication(); i++) { - allocIdx = rand.nextInt(execList.size()); - addAllocation(createEntry(deployableComponent, execList.get(allocIdx))); - } - } - } + // Collection<ComponentMultiAllocationConstraint> constraints = + // dse.getTargetSpecification().getTargets().stream() + // .filter(t -> (t instanceof ComponentMultiAllocationConstraint)) + // .map(ComponentMultiAllocationConstraint.class::cast) + // .collect(Collectors.toList()); + // for(ComponentMultiAllocationConstraint cons : constraints) { + // if(cons.getComponent() == deployableComponent.getObject()) { + // removeTask(deployableComponent); + // List<IExecutionUnitAdapter<?>> physExecList = new ArrayList<>(partitions); + // List<Partition> execList = new ArrayList<>(); + // LambdaUtils.forEach(physExecList, e -> execList.addAll(partMappingEncoding + // .getRequesters((IResourceAdapter<?>)e))); + // int allocIdx = 0; + // for(int i = 0; i < deployableComponent.getMaxReplication(); i++) { + // allocIdx = rand.nextInt(execList.size()); + // addAllocation(createEntry(deployableComponent, execList.get(allocIdx))); + // } + // } + // } } /** @@ -658,8 +646,8 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * deployed. These restrictions are derived from {@link InternalSeparationConstraint}s and * {@link ComponentMultiDislocationConstraint}s. */ - private Collection<IExecutionUnitAdapter<?>> - getExcludedDeploymentTargets(ITaskAdapter<?> deployableComponent) { + private Collection<IExecutionUnitAdapter<?>> getExcludedDeploymentTargets( + ITaskAdapter<?> deployableComponent) { Collection<IExecutionUnitAdapter<?>> rval = getDisAllowedAllocations(deployableComponent); // Collection<InternalSeparationConstraint> sepConstraints = @@ -746,8 +734,7 @@ public abstract class TaskMappingEncoding<S extends ITaskAdapter<?>, T extends T * targets iff the list of physical execution units is defined by the set of mapping constraints * (e.g., derived from available I/Os). */ - public List<Partition> - getAllowedPartitionTargets(List<IExecutionUnitAdapter<?>> physExecUnits) { + public List<Partition> getAllowedPartitionTargets(List<IExecutionUnitAdapter<?>> physExecUnits) { List<Partition> execList = new ArrayList<>(); LambdaUtils.forEach(physExecUnits, e -> execList.addAll(partMappingEncoding.getRequesters((IResourceAdapter<?>)e))); diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings index bc824ed6..30db933e 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings @@ -1,2 +1,2 @@ -AbstractTaskMappingEncoding.java 9ce20cd18e406164d3c7f5365cef6277e582e094 RED +AbstractTaskMappingEncoding.java d4abec537050aa6a6bad3805d19d5db10cc2418e RED AbstractTaskMappingEntry.java 5a402c12dbf882f6c6f19146a66f837764f50e1f RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java index 9ce20cd1..d4abec53 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java @@ -29,7 +29,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.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.Genotype; /** @@ -45,9 +44,9 @@ public class AbstractTaskMappingEncoding extends * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + AbstractTaskMappingEncoding(PartitionMappingEncoding partEnc, SafeTaskGraphEncoding<?> tgEncoding) { - super(dse, partEnc, tgEncoding); + super(partEnc, tgEncoding); } /** @@ -56,15 +55,15 @@ public class AbstractTaskMappingEncoding extends * @throws ExplorationException * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public AbstractTaskMappingEncoding(PartitionMappingEncoding partEnc, SafeTaskGraphEncoding<?> tgEncoding, boolean initialize) throws ExplorationException { - super(dse, partEnc, tgEncoding, initialize); + super(partEnc, tgEncoding, initialize); } /** Copy Constructor. */ - public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public AbstractTaskMappingEncoding(PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { - super(dse, partEnc, tgEncoding); + super(partEnc, tgEncoding); } /** @@ -73,9 +72,9 @@ public class AbstractTaskMappingEncoding extends * @throws ExplorationException * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public AbstractTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> atgEnc, boolean initialize) throws ExplorationException { - super(dse, partEnc, atgEnc, initialize); + super(partEnc, atgEnc, initialize); } /** @@ -87,10 +86,10 @@ public class AbstractTaskMappingEncoding extends * @throws ExplorationException * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public AbstractTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public AbstractTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> atgEnc, AbstractTaskMappingEncoding partialEncoding) throws ExplorationException { - super(dse, partEnc, atgEnc, partialEncoding); + super(partEnc, atgEnc, partialEncoding); } /** {@inheritDoc} */ @@ -118,7 +117,7 @@ public class AbstractTaskMappingEncoding extends @Override public AbstractTaskMappingEncoding newInstance() { try { - return new AbstractTaskMappingEncoding(dse, null, null, true); + return new AbstractTaskMappingEncoding(null, null, true); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); @@ -129,7 +128,7 @@ public class AbstractTaskMappingEncoding extends @Override public AbstractTaskMappingEncoding clone() { AbstractTaskMappingEncoding clonedEncoding; - clonedEncoding = new AbstractTaskMappingEncoding(dse, partMappingEncoding, tgEncoding); + clonedEncoding = new AbstractTaskMappingEncoding(partMappingEncoding, tgEncoding); Map<AbstractTaskMappingEntry, AbstractTaskMappingEntry> copyAssocMap = new HashMap<>(); diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings index 972b0d37..ba01f626 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings @@ -1,6 +1,6 @@ -FailSilentTaskMappingEncoding.java e5a362b79a9f1b78a09b4b18b6538ed4bf4dfbfe RED +FailSilentTaskMappingEncoding.java bf7ccbfa67f5f83c0b29175813613841b99f8494 RED FailSilentTaskMappingEntry.java b73b4242c590b45ad30c482390fee8eaa06179dc RED -FaultDetectionVotingTaskMappingEncoding.java e906d793528ba8a329b3549ead4b904135ce73bb RED +FaultDetectionVotingTaskMappingEncoding.java b1b8e16a4286dca3b5d8081f4406b08ed0d3d3eb RED FaultDetectionVotingTaskMappingEntry.java ae401b16a2098ee85809f895c2469f494b6fc279 RED -InstantiatedTaskMappingEncoding.java d875cefeb1bcc28550804ee102c9dd63ea0dc8f6 RED +InstantiatedTaskMappingEncoding.java 009a5a48ac03e206cbe6ba98439455b1c7d2c850 RED InstantiatedTaskMappingEntry.java ffac1e77d53b2a9253b864b876aae18b6820f1f0 RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java index e5a362b7..bf7ccbfa 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java @@ -25,29 +25,28 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.ab 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.exception.ExplorationException; -import org.fortiss.af3.exploration.moea.model.DseSpecification; /** * Problem encoding consisting of redundant {@link TaskMappingEntry}s with fail-silent assumption. * * @author huang */ -public class FailSilentTaskMappingEncoding - extends InstantiatedTaskMappingEncoding<FailSilentTaskMappingEntry> { +public class FailSilentTaskMappingEncoding extends + InstantiatedTaskMappingEncoding<FailSilentTaskMappingEntry> { /** * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + FailSilentTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) { - super(dse, partEnc, tgEncoding); + super(partEnc, tgEncoding); } /** Copy Constructor. */ - FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + FailSilentTaskMappingEncoding(PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { - super(dse, partEnc, tgEncoding); + super(partEnc, tgEncoding); } // TODO: Check whether the two constructors below are actually needed. @@ -55,23 +54,21 @@ public class FailSilentTaskMappingEncoding * Constructor that optionally initializes the encoding to a random encoding * * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. + * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public FailSilentTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize) throws ExplorationException { - super(dse, partEnc, tgEncoding, initialize); + super(partEnc, tgEncoding, initialize); } /** * Constructor which derives the resulting {@link FailSilentTaskMappingEncoding} from the given * {@link AbstractTaskMappingEncoding}. */ - public FailSilentTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, - AbstractTaskGraphEncoding<?, ?> tgEncoding, - AbstractTaskMappingEncoding abstractEncoding) { - super(dse, partEnc, tgEncoding, abstractEncoding); + public FailSilentTaskMappingEncoding(PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) { + super(partEnc, tgEncoding, abstractEncoding); } /** {@inheritDoc} */ @@ -98,7 +95,7 @@ public class FailSilentTaskMappingEncoding @Override public FailSilentTaskMappingEncoding newInstance() { try { - return new FailSilentTaskMappingEncoding(dse, null, null, true); + return new FailSilentTaskMappingEncoding(null, null, true); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); @@ -110,7 +107,7 @@ public class FailSilentTaskMappingEncoding public FailSilentTaskMappingEncoding clone() { // TODO: Here, we should maintain the mapping. FailSilentTaskMappingEncoding clonedEncoding; - clonedEncoding = new FailSilentTaskMappingEncoding(dse, partMappingEncoding, tgEncoding); + clonedEncoding = new FailSilentTaskMappingEncoding(partMappingEncoding, tgEncoding); return clonedEncoding; } } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java index e906d793..b1b8e16a 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java @@ -24,7 +24,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.ab 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.exception.ExplorationException; -import org.fortiss.af3.exploration.moea.model.DseSpecification; /** * Problem encoding of redundant {@link TaskMappingEncoding}s with fault detection and voting. @@ -38,9 +37,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + FaultDetectionVotingTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) { - super(dse, partEnc, tgEncoding); + super(partEnc, tgEncoding); } // TODO: Check whether the two constructors below are actually needed. @@ -48,13 +47,12 @@ public class FaultDetectionVotingTaskMappingEncoding extends * Constructor that optionally initializes the encoding to a random encoding * * @throws ExplorationException - * if no valid allocation targets can be identified for one - * {@link ITaskAdapter}. + * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, - boolean initialize) throws ExplorationException { - super(dse, partEnc, tgEncoding, initialize); + public FaultDetectionVotingTaskMappingEncoding(PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize) + throws ExplorationException { + super(partEnc, tgEncoding, initialize); assert (false) : "Never here any more."; } @@ -62,10 +60,9 @@ public class FaultDetectionVotingTaskMappingEncoding extends * Constructor which derives the resulting {@link FaultDetectionVotingTaskMappingEncoding} from * the given {@link AbstractTaskMappingEncoding}. */ - public FaultDetectionVotingTaskMappingEncoding(DseSpecification dse, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, - AbstractTaskMappingEncoding abstractEncoding) { - super(dse, partEnc, tgEncoding, abstractEncoding); + public FaultDetectionVotingTaskMappingEncoding(PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) { + super(partEnc, tgEncoding, abstractEncoding); } /** {@inheritDoc} */ @@ -94,7 +91,7 @@ public class FaultDetectionVotingTaskMappingEncoding extends @Override public FaultDetectionVotingTaskMappingEncoding newInstance() { try { - return new FaultDetectionVotingTaskMappingEncoding(dse, null, null, true); + return new FaultDetectionVotingTaskMappingEncoding(null, null, true); } catch(ExplorationException e) { // Opt4J does not allow to throw Exceptions here. throw new RuntimeException(e); @@ -109,7 +106,7 @@ public class FaultDetectionVotingTaskMappingEncoding extends // TODO: Here, we should maintain the mapping. FaultDetectionVotingTaskMappingEncoding clonedEncoding = null; try { - clonedEncoding = new FaultDetectionVotingTaskMappingEncoding(dse, null, null, false); + clonedEncoding = new FaultDetectionVotingTaskMappingEncoding(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/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java index d875cefe..009a5a48 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/InstantiatedTaskMappingEncoding.java @@ -28,7 +28,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegen 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.exception.ExplorationException; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.Genotype; /** @@ -46,15 +45,15 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask * Constructor that is initialized with a reference to the DSE specification and the input * system model. */ - protected InstantiatedTaskMappingEncoding(DseSpecification dse, - PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding) { - super(dse, partEnc, tgEncoding); + protected InstantiatedTaskMappingEncoding(PartitionMappingEncoding partEnc, + AbstractTaskGraphEncoding<?, ?> tgEncoding) { + super(partEnc, tgEncoding); } /** Copy Constructor. */ - protected InstantiatedTaskMappingEncoding(DseSpecification dse, - PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { - super(dse, partEnc, tgEncoding); + protected InstantiatedTaskMappingEncoding(PartitionMappingEncoding partEnc, + TaskGraphEncoding<?, ?, ?> tgEncoding) { + super(partEnc, tgEncoding); } // TODO: Check whether the two constructors below are actually needed. @@ -64,19 +63,19 @@ public abstract class InstantiatedTaskMappingEncoding<T extends InstantiatedTask * @throws ExplorationException * if no valid allocation targets can be identified for one {@link ITaskAdapter}. */ - public InstantiatedTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public InstantiatedTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, boolean initialize) throws ExplorationException { - super(dse, partEnc, tgEncoding, initialize); + super(partEnc, tgEncoding, initialize); } /** * Constructor which derives the resulting {@link InstantiatedTaskMappingEncoding} from the * given {@link AbstractTaskMappingEncoding}. */ - public InstantiatedTaskMappingEncoding(DseSpecification dse, PartitionMappingEncoding partEnc, + public InstantiatedTaskMappingEncoding(PartitionMappingEncoding partEnc, AbstractTaskGraphEncoding<?, ?> tgEncoding, AbstractTaskMappingEncoding abstractEncoding) { - super(dse, partEnc, tgEncoding); + super(partEnc, tgEncoding); this.constraintMap = abstractEncoding.copyConstraintMap(null); instantiateAbstractEntries(abstractEncoding); } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings index 8650e32c..43b985cf 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings @@ -1,4 +1,4 @@ -AbstractTaskMappingDecoder.java 8f42a638ceeba220da3a22f281ce08fe0764934b RED -FailSilentAbstractTaskMappingDecoder.java f5a3160d8b34da3f5c1e77d370af98670d694923 RED -FaultDetectionVotingAbstractTaskMappingDecoder.java 91ad48817fdd592a70da6a08d4a0f666c01acc33 RED +AbstractTaskMappingDecoder.java 85d46ecd859052c487f31e47065375ae423e50ff RED +FailSilentAbstractTaskMappingDecoder.java 011dfebeaedb183ab0edc9a84eb71410a943a4db RED +FaultDetectionVotingAbstractTaskMappingDecoder.java 8fb87c6c0b1aa7fdff5340c34bbc3a98dcab12e1 RED TaskInstanceResourceAlignmentDecoder.java fe8b789f3a0185585a90cf1882fd3983453b4a0d RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java index 8f42a638..85d46ecd 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java @@ -25,7 +25,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.in import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.ComposableDecoderBase; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchExpSubDecoder; -import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.problem.Decoder; /** @@ -36,13 +35,6 @@ import org.opt4j.core.problem.Decoder; */ public abstract class AbstractTaskMappingDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> extends ComposableDecoderBase<AbstractTaskMappingEncoding, T> implements ArchExpSubDecoder { - /** Reference to the {@link DseSpecification} specification that defines the DSE. */ - DseSpecification explorationDefinition; - - /** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */ - public AbstractTaskMappingDecoder(DseSpecification explorationDefinition) { - this.explorationDefinition = explorationDefinition; - } /** {@inheritDoc} */ @Override diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java index f5a3160d..011dfebe 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FailSilentAbstractTaskMappingDecoder.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.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.moea.model.DseSpecification; import com.google.inject.Inject; import com.google.inject.Provider; @@ -65,18 +64,12 @@ public class FailSilentAbstractTaskMappingDecoder extends @Inject PartitionMappingEncoding partEnc; - /** Constructor. */ - @Inject - public FailSilentAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { - super(explorationDefinition); - } - /** {@inheritDoc} */ @Override @Provides public FailSilentTaskMappingEncoding decodeComposable(AbstractTaskMappingEncoding genotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap) { - return new FailSilentTaskMappingEncoding(explorationDefinition, partEnc, atgEnc, atmEnc); + return new FailSilentTaskMappingEncoding(partEnc, atgEnc, atmEnc); } // TODO: Abstract to the AbstractTaskMappingDecoder. diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java index 91ad4881..8fb87c6c 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/FaultDetectionVotingAbstractTaskMappingDecoder.java @@ -30,7 +30,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.moea.model.DseSpecification; import org.opt4j.core.problem.Decoder; /** @@ -40,14 +39,10 @@ import org.opt4j.core.problem.Decoder; * @author diewald */ // FIXME: The type hierarchy and naming of the classes is extremely confusing. FIX ASAP! -public class FaultDetectionVotingAbstractTaskMappingDecoder extends +public class FaultDetectionVotingAbstractTaskMappingDecoder + extends AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> { - /** Constructor. */ - public FaultDetectionVotingAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { - super(explorationDefinition); - } - /** {@inheritDoc} */ @Override public FaultDetectionVotingTaskMappingEncoding decodeComposable( @@ -59,8 +54,7 @@ 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, partEnc, atgEnc, - genotype); + return new FaultDetectionVotingTaskMappingEncoding(partEnc, atgEnc, genotype); } /** @@ -81,8 +75,9 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder extends inGenotype.getMappingEntriesOf(comp); Collection<FaultDetectionVotingTaskMappingEntry> instEntries; if(comp.isInstantiationRequired()) { - instEntries = filterSet(outGenotype.getMappingEntries(), - e -> e.getSource().getReplacedComponent() == comp); + instEntries = + filterSet(outGenotype.getMappingEntries(), e -> e.getSource() + .getReplacedComponent() == comp); } else { instEntries = outGenotype.getMappingEntriesOf(comp); } @@ -118,8 +113,8 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder extends rmTasks.forEach(e -> outGenotype.removeTask(e)); for(FaultDetectionVotingTaskMappingEntry entry : outGenotype.getMappingEntries()) { - entry.resetTarget( - entry.getAssociatedElement(AbstractTaskMappingEntry.class).getTarget()); + entry.resetTarget(entry.getAssociatedElement(AbstractTaskMappingEntry.class) + .getTarget()); } return outGenotype; diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings index 8ac275c4..15c02ffd 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/.ratings @@ -1,2 +1,2 @@ -FailSilentExecModelFactory.java 4ee468ad45b7548ee06b0ce3aaa417cbcbcec282 RED -FaultDetectionVotingExecModelFactory.java b8c7d062f624c18a41bc4ee26e0e8299a82f5cdb RED +FailSilentExecModelFactory.java d390751e97756819d7fb10caacd8d701ba445922 RED +FaultDetectionVotingExecModelFactory.java 47e110208b65cc72f3a8a082876b039aa0036e4b RED diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java index 4ee468ad..d390751e 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FailSilentExecModelFactory.java @@ -65,8 +65,8 @@ import com.google.inject.TypeLiteral; * * @author diewald */ -public class FailSilentExecModelFactory - extends TaskMappingFactory<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { +public class FailSilentExecModelFactory extends + TaskMappingFactory<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { /** The instance (singleton) of the EvaluatorWrapper factory. */ public static TaskMappingFactory<?, ?> getInstance() { @@ -87,39 +87,37 @@ public class FailSilentExecModelFactory /** Creates a TaskMappingCreator that matches the given execution model. */ @Override public TaskMappingCreator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { - return new FailSilentTaskMappingCreator(dse, execDepGraph); + createTaskMappingCreator(DecoderDependencyGraph execDepGraph) { + return new FailSilentTaskMappingCreator(execDepGraph); } /* Construct execution model specific operators. */ /** {@inheritDoc} */ @Override - public MutateAllocation<?, ?> - createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateAllocation<?, ?> createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyDecrement<?, ?> - createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator( + Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyDecrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyIncrement<?, ?> - createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator( + Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyIncrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( tasks); } /** {@inheritDoc} */ @Override - public CrossoverRandManyAllocation<?, ?> - createCrossoverRandManyAllocationOperator(double rate) { + public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(double rate) { return new CrossoverRandManyAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( rate); } @@ -136,15 +134,16 @@ public class FailSilentExecModelFactory /** {@inheritDoc} */ @Override public AbstractTaskMappingDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { - return new FailSilentAbstractTaskMappingDecoder(explorationDefinition); + createAbstractTaskMappingDecoder() { + return new FailSilentAbstractTaskMappingDecoder(); } /** {@inheritDoc} */ @SuppressWarnings({"rawtypes", "unchecked"}) @Override // TODO: identify why a warning is generated here. - public InstantiatedTaskMappingDecoderAcyclic<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> + public + InstantiatedTaskMappingDecoderAcyclic<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> createAbstractToAcyclicTaskGraphDecoder() { return new InstantiatedTaskMappingDecoderAcyclic(); } @@ -221,13 +220,14 @@ public class FailSilentExecModelFactory @Override public <RT, ET extends ExplorationTarget<RT>> EvaluatorWrapper<?, Boolean, ComponentMultiAllocationConstraint> - createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal, int priority, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception { + createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal, + int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) + throws Exception { return new EvaluatorWrapper<FailSilentTaskMappingEncoding, Boolean, ComponentMultiAllocationConstraint>( (ComponentMultiAllocationConstraint)goal, new ComponentMultiAllocationConstraintEvaluator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>( - systemModelAdapter, (ComponentMultiAllocationConstraint)goal), - priority, FailSilentTaskMappingEncoding.class); + systemModelAdapter, (ComponentMultiAllocationConstraint)goal), priority, + FailSilentTaskMappingEncoding.class); } /** {@inheritDoc} */ @@ -241,8 +241,8 @@ public class FailSilentExecModelFactory return new EvaluatorWrapper<FailSilentTaskMappingEncoding, Boolean, ComponentMultiDislocationConstraint>( (ComponentMultiDislocationConstraint)goal, new ComponentMultiDislocationConstraintEvaluator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>( - systemModelAdapter, (ComponentMultiDislocationConstraint)goal), - priority, FailSilentTaskMappingEncoding.class); + systemModelAdapter, (ComponentMultiDislocationConstraint)goal), priority, + FailSilentTaskMappingEncoding.class); } /** {@inheritDoc} */ @@ -254,7 +254,7 @@ public class FailSilentExecModelFactory return new EvaluatorWrapper<FailSilentTaskMappingEncoding, SIL, SafetyIntegrityLevelConstraint>( (SafetyIntegrityLevelConstraint)goal, new SafetyIntegrityLevelConstraintEvaluator<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>( - systemModelAdapter, (SafetyIntegrityLevelConstraint)goal), - priority, FailSilentTaskMappingEncoding.class); + systemModelAdapter, (SafetyIntegrityLevelConstraint)goal), priority, + FailSilentTaskMappingEncoding.class); } } diff --git a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java index b8c7d062..47e11020 100644 --- a/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java +++ b/org.fortiss.af3.exploration.alg/src/org/fortiss/af3/exploration/alg/dse/sysmodel/FaultDetectionVotingExecModelFactory.java @@ -66,7 +66,8 @@ import com.google.inject.TypeLiteral; * * @author diewald */ -public class FaultDetectionVotingExecModelFactory extends +public class FaultDetectionVotingExecModelFactory + extends TaskMappingFactory<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> { /** The instance (singleton) of the EvaluatorWrapper factory. */ @@ -89,40 +90,39 @@ public class FaultDetectionVotingExecModelFactory extends /** Creates a TaskMappingCreator that matches the given execution model. */ @Override - public TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createTaskMappingCreator(DseSpecification dse, DecoderDependencyGraph execDepGraph) { - return new FaultDetectionVotingTaskMappingCreator(dse, execDepGraph); + public + TaskMappingCreator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> + createTaskMappingCreator(DecoderDependencyGraph execDepGraph) { + return new FaultDetectionVotingTaskMappingCreator(execDepGraph); } /* Construct execution model specific operators. */ /** {@inheritDoc} */ @Override - public MutateAllocation<?, ?> - createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateAllocation<?, ?> createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyDecrement<?, ?> - createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator( + Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyDecrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyIncrement<?, ?> - createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) { + public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator( + Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyIncrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( tasks); } /** {@inheritDoc} */ @Override - public CrossoverRandManyAllocation<?, ?> - createCrossoverRandManyAllocationOperator(double rate) { + public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator(double rate) { return new CrossoverRandManyAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( rate); } @@ -140,30 +140,34 @@ public class FaultDetectionVotingExecModelFactory extends /** {@inheritDoc} */ @Override - public AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { - return new FaultDetectionVotingAbstractTaskMappingDecoder(explorationDefinition); + public + AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> + createAbstractTaskMappingDecoder() { + return new FaultDetectionVotingAbstractTaskMappingDecoder(); } /** {@inheritDoc} */ @SuppressWarnings({"rawtypes", "unchecked"}) @Override // TODO: identify why a warning is generated here. - public InstantiatedTaskMappingDecoderAcyclic<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> + public + InstantiatedTaskMappingDecoderAcyclic<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> createAbstractToAcyclicTaskGraphDecoder() { return new InstantiatedTaskMappingDecoderAcyclic(); } /** {@inheritDoc} */ @Override - public MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> + public + MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> createMessageDecoder() { return new MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(); } /** {@inheritDoc} */ @Override - public StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> + public + StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> createStrictTTDecoder(DseSpecification explorationDefinition) { return new StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>( explorationDefinition); @@ -224,13 +228,14 @@ public class FaultDetectionVotingExecModelFactory extends @Override public <RT, ET extends ExplorationTarget<RT>> EvaluatorWrapper<?, Boolean, ComponentMultiAllocationConstraint> - createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal, int priority, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws Exception { + createComponentMultiAllocationConstraintWrapper(ExplorationTarget<?> goal, + int priority, SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) + throws Exception { return new EvaluatorWrapper<FaultDetectionVotingTaskMappingEncoding, Boolean, ComponentMultiAllocationConstraint>( (ComponentMultiAllocationConstraint)goal, new ComponentMultiAllocationConstraintEvaluator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>( - systemModelAdapter, (ComponentMultiAllocationConstraint)goal), - priority, FaultDetectionVotingTaskMappingEncoding.class); + systemModelAdapter, (ComponentMultiAllocationConstraint)goal), priority, + FaultDetectionVotingTaskMappingEncoding.class); } /** {@inheritDoc} */ @@ -244,8 +249,8 @@ public class FaultDetectionVotingExecModelFactory extends return new EvaluatorWrapper<FaultDetectionVotingTaskMappingEncoding, Boolean, ComponentMultiDislocationConstraint>( (ComponentMultiDislocationConstraint)goal, new ComponentMultiDislocationConstraintEvaluator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>( - systemModelAdapter, (ComponentMultiDislocationConstraint)goal), - priority, FaultDetectionVotingTaskMappingEncoding.class); + systemModelAdapter, (ComponentMultiDislocationConstraint)goal), priority, + FaultDetectionVotingTaskMappingEncoding.class); } /** {@inheritDoc} */ @@ -257,7 +262,7 @@ public class FaultDetectionVotingExecModelFactory extends return new EvaluatorWrapper<FaultDetectionVotingTaskMappingEncoding, SIL, SafetyIntegrityLevelConstraint>( (SafetyIntegrityLevelConstraint)goal, new SafetyIntegrityLevelConstraintEvaluator<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>( - systemModelAdapter, (SafetyIntegrityLevelConstraint)goal), - priority, FaultDetectionVotingTaskMappingEncoding.class); + systemModelAdapter, (SafetyIntegrityLevelConstraint)goal), priority, + FaultDetectionVotingTaskMappingEncoding.class); } } -- GitLab