From 7f11dce71924fcbbf9d6c8d56307dd3891f6f871 Mon Sep 17 00:00:00 2001 From: Alexander Diewald <diewald@fortiss.org> Date: Fri, 9 Feb 2018 11:53:13 +0000 Subject: [PATCH] Exploration(.alg):Reduce the dependencies towards the SystemModelAdapter [2/2] Removes the remaining occurrences of the SystemModelAdapter from the inner DSE parts. Instead, the abstraction created by the SystemModelAdapter are used. refs 2962 --- .../fortiss/af3/exploration/alg/dse/.ratings | 4 +- .../af3/exploration/alg/dse/DSEFactory.java | 22 +++--- .../alg/dse/TaskMappingFactory.java | 74 +++++++------------ .../alg/dse/backend/opt4j/.ratings | 2 +- .../backend/opt4j/Opt4JExplorerBackend.java | 23 ++++-- .../alg/dse/backend/opt4j/create/.ratings | 2 +- .../opt4j/create/InitialEncodingProvider.java | 11 ++- .../backend/opt4j/encoding/taskgraph/.ratings | 10 +-- .../taskgraph/AbstractTaskGraphEncoding.java | 8 +- .../InstantiatedAcyclicTaskGraphEncoding.java | 11 +-- .../InstantiatedTaskGraphEncoding.java | 12 +-- .../taskgraph/SafeTaskGraphEncoding.java | 7 +- .../encoding/taskgraph/TaskGraphEncoding.java | 12 ++- .../alg/dse/backend/opt4j/mating/.ratings | 4 +- .../mating/MatingCrossoverMutateRepair.java | 12 +-- .../MatingCrossoverMutateRepairModule.java | 27 ------- .../backend/opt4j/operator/crossover/.ratings | 8 +- .../CrossoverAbstractTaskMappingModule.java | 12 +-- .../crossover/CrossoverAllocationBase.java | 9 +-- .../CrossoverRandManyAllocation.java | 7 +- .../crossover/CrossoverSingleAllocation.java | 7 +- .../operator/crossover/failSilent/.ratings | 2 +- .../CrossoverAllocationFailSilent.java | 6 +- .../crossover/faultDetectionVoting/.ratings | 2 +- ...ossoverAllocationFaultDetectionVoting.java | 6 +- .../backend/opt4j/operator/mutate/.ratings | 2 +- .../opt4j/operator/mutate/MutateBase.java | 12 +-- .../operator/mutate/partitionmapping/.ratings | 8 +- .../partitionmapping/MutatePartitionBase.java | 8 +- .../MutatePartitionDecrement.java | 8 +- .../MutatePartitionIncrement.java | 8 +- .../PartitionMappingModule.java | 18 +++-- .../opt4j/operator/mutate/safetyarch/.ratings | 10 +-- .../safetyarch/MutateChannelNumber.java | 7 -- .../MutateConnectedDiagnosisPresent.java | 8 -- .../safetyarch/MutateSafetyArchBase.java | 7 -- ...utateSafetyFunctionArchitectureModule.java | 17 +---- .../MutateSafetyTriggerSignalNumber.java | 8 -- .../mutate/taskinstantiation/.ratings | 4 +- .../taskinstantiation/MutateTaskInstance.java | 12 ++- .../MutateTaskInstanceModule.java | 15 ++-- .../operator/mutate/taskmapping/.ratings | 12 +-- .../mutate/taskmapping/MutateAllocation.java | 14 ++-- .../mutate/taskmapping/MutateRedundancy.java | 15 ++-- .../MutateRedundancyDecrement.java | 7 +- .../MutateRedundancyIncrement.java | 5 +- .../taskmapping/MutateTaskMappingModule.java | 16 ++-- .../mutate/taskmapping/MutateTasksBase.java | 11 ++- .../alg/dse/backend/opt4j/problem/.ratings | 4 +- .../opt4j/problem/DseProblemModuleBase.java | 1 + .../opt4j/problem/StrictTTDecoder.java | 20 ++--- .../dse/backend/opt4j/problem/comm/.ratings | 2 +- .../opt4j/problem/comm/MessageDecoder.java | 20 ++--- .../problem/instantiatetaskgraph/.ratings | 4 +- .../InstantiatedTaskMappingDecoder.java | 19 ++--- ...InstantiatedTaskMappingDecoderAcyclic.java | 12 +-- .../opt4j/problem/safetyfunction/.ratings | 2 +- .../safetyfunction/SFGraphDecoder.java | 12 ++- .../problem/taskmapping/instantiate/.ratings | 6 +- .../AbstractTaskMappingDecoder.java | 9 +-- .../FailSilentAbstractTaskMappingDecoder.java | 7 +- ...ctionVotingAbstractTaskMappingDecoder.java | 7 +- .../alg/dse/backend/opt4j/repair/.ratings | 2 +- .../opt4j/repair/RepairModuleBase.java | 10 --- .../alg/dse/backend/opt4j/solution/.ratings | 2 +- .../opt4j/solution/StrictTTSchedule.java | 18 +---- .../af3/exploration/alg/dse/sysmodel/.ratings | 4 +- .../sysmodel/FailSilentExecModelFactory.java | 60 +++++++-------- .../FaultDetectionVotingExecModelFactory.java | 61 +++++++-------- .../alg/dse/sysmodel/arch/.ratings | 2 +- .../dse/sysmodel/arch/SystemModelAdapter.java | 2 +- .../alg/dse/sysmodel/arch/taskgraph/.ratings | 2 +- .../arch/taskgraph/DefaultTaskGraph.java | 4 +- .../alg/dse/sysmodel/comm/.ratings | 2 +- .../dse/sysmodel/comm/MessageGenerator.java | 24 +++--- .../alg/dse/sysmodel/mapping/comm/.ratings | 4 +- .../sysmodel/mapping/comm/MessageRouter.java | 10 +-- .../mapping/comm/ShortestPathRouter.java | 6 +- .../alg/dse/sysmodel/sched/.ratings | 2 +- .../alg/dse/sysmodel/sched/SchedulerBase.java | 41 +++++----- .../alg/dse/sysmodel/sched/comm/.ratings | 2 +- .../sysmodel/sched/comm/TDMABusScheduler.java | 8 +- .../alg/dse/sysmodel/sched/proc/.ratings | 6 +- .../sysmodel/sched/proc/EDFSchedulerBase.java | 19 ++--- .../sched/proc/FailSilentEDFScheduler.java | 6 +- .../FaultDetectionVotingEDFScheduler.java | 7 +- .../af3/exploration/alg/service/.ratings | 2 +- .../service/IExplorationRepairService.java | 7 +- .../exploration/alg/service/internal/.ratings | 2 +- .../internal/ExplorationRepairService.java | 5 +- 90 files changed, 382 insertions(+), 595 deletions(-) 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 f208d7d8..9cb0a1f3 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 98b9133b3f33fe8c2d61f8bdab8ac97508872a6e RED +DSEFactory.java 0a2f2cc6a197e760c1f8223339ffa5f16856b184 RED Explorer.java 9e0020b6a55bb035a41fb1bf4a1b709a7d6353f6 RED ImplicitExplorationTargetFactory.java 0b10dc4e8385bbdee0217dac783203080eb723f0 RED SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED -TaskMappingFactory.java 14671417668c58cbfd97bb1fcebf0874895314e8 RED +TaskMappingFactory.java 5e41df9d45e338dbcfa95bc3818ca17774951893 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 8712f441..ae8a0f87 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 @@ -77,6 +77,9 @@ import org.jgrapht.experimental.dag.DirectedAcyclicGraph.CycleFoundException; * @author diewald */ public class DSEFactory { + /** + * References the currently valid {@link SystemModelAdapter} relevant for the current DSE run. + */ private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; /** The instance (singleton) of the {@link DSEFactory}. */ @@ -94,6 +97,7 @@ public class DSEFactory { return InstanceHolder.INSTANCE; } + /** Updates this Factory with a corresponding {@link SystemModelAdapter} of a DSE run. */ // FIXME: Remove this method: it violates the sigleton pattern. public void init(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { this.systemModelAdapter = systemModelAdapter; @@ -108,8 +112,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 @@ -144,8 +146,6 @@ public class DSEFactory { * @param archExpProblemModule * The {@link CompositeProblemModuleBase} declaring the architectural exploration * problem. - * @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 @@ -162,7 +162,8 @@ public class DSEFactory { execDepGraph); @SuppressWarnings("rawtypes") SFEncodingDecoder sfEncodingDecoder = new SFEncodingDecoder<>(); - @SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder = new SFGraphDecoder(); + @SuppressWarnings("rawtypes") SFGraphDecoder sfGraphDecoder = + new SFGraphDecoder(systemModelAdapter.getTaskGraphs()); @SuppressWarnings("rawtypes") SFMappingDecoder sfMappingDecoder = new SFMappingDecoder(); @SuppressWarnings("rawtypes") SFMappingConstraintDecoder sfMappingConstraintDecoder = new SFMappingConstraintDecoder(); @@ -275,7 +276,7 @@ public class DSEFactory { tmFactory.createAbstractTaskMappingCreator(dse, execDepGraph); @SuppressWarnings("rawtypes") List<ComposableDecoder> abstrTaskDecoders = new ArrayList<>(); AbstractTaskMappingDecoder<?, ?> atmDecoder = - tmFactory.createAbstractTaskMappingDecoder(systemModelAdapter, dse); + tmFactory.createAbstractTaskMappingDecoder(dse); AbstractTaskMappingIdentityDecoder idtDecoder = new AbstractTaskMappingIdentityDecoder(); abstrTaskDecoders.add(atmDecoder); abstrTaskDecoders.add(idtDecoder); @@ -313,13 +314,12 @@ public class DSEFactory { DecoderDependencyGraph execDepGraph) throws Exception { // These suppress warnings are required since type erasure in Java does not allow to pass // XY<Z>.class. - StrictTTDecoder<S, T> tmDecoder = tmFactory.createStrictTTDecoder(systemModelAdapter, dse); + StrictTTDecoder<S, T> tmDecoder = tmFactory.createStrictTTDecoder(dse); InstantiatedTaskMappingDecoder<S, ?> tgDecoder = - tmFactory.createInstantiatedTaskMappingDecoder(systemModelAdapter); + tmFactory.createInstantiatedTaskMappingDecoder(); InstantiatedTaskMappingDecoderAcyclic<S, ?> acycTgDecoder = - tmFactory.createAbstractToAcyclicTaskGraphDecoder(systemModelAdapter); - @SuppressWarnings("rawtypes") MessageDecoder msgDecoder = - tmFactory.createMessageDecoder(systemModelAdapter); + tmFactory.createAbstractToAcyclicTaskGraphDecoder(); + @SuppressWarnings("rawtypes") MessageDecoder msgDecoder = tmFactory.createMessageDecoder(); @SuppressWarnings("rawtypes") TaskMappingCreator tmCreator = tmFactory.createTaskMappingCreator(dse, execDepGraph); @SuppressWarnings("rawtypes") List<ComposableDecoder> instTaskDecoders = new ArrayList<>(); 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 ec27a950..47e6b1cd 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 @@ -15,6 +15,8 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.AbstractTaskMappingCreator; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.TaskMappingCreator; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.InstantiatedTaskGraphEncoding; @@ -35,6 +37,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.comm.MessageDec import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.instantiatetaskgraph.InstantiatedTaskMappingDecoder; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.instantiatetaskgraph.InstantiatedTaskMappingDecoderAcyclic; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.taskmapping.instantiate.AbstractTaskMappingDecoder; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter; 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.comm.IMessageRouter; @@ -141,66 +144,60 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, /** * Creates an execution model specific {@link MutateAllocation} operator. * - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture + * @param tasks + * {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s. * @return Mutation Operator for Allocations. */ public MutateAllocation<? extends TaskMappingEntry<?, ?>, ? extends TaskMappingEncoding<?, ?>> - createMutateAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } /** * Creates an execution model specific {@link MutateRedundancyDecrement} operator. * - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture + * @param tasks + * {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s. * @return Mutation operator that decreases the redundant instances of tasks. */ - public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MutateRedundancyDecrement<?, ?> + createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } /** * Creates an execution model specific {@link MutateRedundancyIncrement} operator. * - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture + * @param tasks + * {@link ITaskAdapter} that shall be allocated to {@link IRequestAdapter}s. * @return Mutation operator that increases the redundant instances of tasks. */ - public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MutateRedundancyIncrement<?, ?> + createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } /** * Creates an execution model specific {@link CrossoverRandManyAllocation} operator * - * @param systemModelAdapter - * The system model deduced from the logical and technical architecture. * @param rate * The rate or probability of such that the the operator is applied. * @return Crossover operator that swaps randomly many allocations from one resource with * another. */ - public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { + public CrossoverRandManyAllocation<?, ?> + createCrossoverRandManyAllocationOperator(double rate) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } /** * Creates an execution model specific {@link CrossoverRandManyAllocation} operator * - * @param systemModelAdapter - * The system model deduced from the logical and technical architecture. * @param rate * The rate or probability of such that the the operator is applied. * @return Crossover operator that swaps a single allocation from one resource with another. */ - public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { + public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(double rate) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -211,33 +208,25 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * Decoder to instantiate an {@link AbstractTaskMappingEncoding} into an * {@link InstantiatedTaskMappingEncoding}. * - * @param systemModelAdapter - * The system model deduced from the logical and technical architecture. * @param explorationDefinition * The model of the DSE; This information can be useful for the decoders to optimize * the decoding strategy * @return instance of an {@link AbstractTaskMappingDecoder}. */ - public AbstractTaskMappingDecoder<?, ?> createAbstractTaskMappingDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { + public AbstractTaskMappingDecoder<?, ?> + createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { throw new UnsupportedOperationException( "The Decoder to instantiate an \"abstract\" Task Mapping has not been defined for current Execution Model."); } /** * Creates and returns a {@link InstantiatedTaskMappingDecoder}. - * - * @param systemModelAdapter - * The system model deduced from the logical and technical architecture. - * @return An instance of a {@link InstantiatedTaskMappingDecoder}. */ // TODO: remove these suppress warnings by propagating the generic C. @SuppressWarnings({"rawtypes", "unchecked"}) public InstantiatedTaskMappingDecoder<S, InstantiatedTaskGraphEncoding> - createInstantiatedTaskMappingDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new InstantiatedTaskMappingDecoder(systemModelAdapter); + createInstantiatedTaskMappingDecoder() { + return new InstantiatedTaskMappingDecoder(); } /** @@ -247,8 +236,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * The system model deduced from the logical and technical architecture. * @return An instance on an {@link InstantiatedTaskMappingDecoderAcyclic}. */ - public InstantiatedTaskMappingDecoderAcyclic<S, ?> createAbstractToAcyclicTaskGraphDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public InstantiatedTaskMappingDecoderAcyclic<S, ?> createAbstractToAcyclicTaskGraphDecoder() { throw new UnsupportedOperationException( "The Decoder to instantiate an \"abstract\" and acyclic Task Graph has not been defined for current Execution Model."); } @@ -260,8 +248,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * The system model deduced from the logical and technical architecture. * @return An instance of a {@link MessageDecoder}. */ - public MessageDecoder<S, T> - createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MessageDecoder<S, T> createMessageDecoder() { throw new UnsupportedOperationException( "The Decoder which generates messages from task mappings has not been defined for current Execution Model."); } @@ -277,9 +264,7 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * the decoding strategy. * @return instance of a {@link StrictTTDecoder} */ - public StrictTTDecoder<S, T> createStrictTTDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { + public StrictTTDecoder<S, T> createStrictTTDecoder(DseSpecification explorationDefinition) { throw new UnsupportedOperationException(SCHED_NOT_IMPL_MSG); } @@ -288,24 +273,19 @@ public abstract class TaskMappingFactory<S extends InstantiatedTaskMappingEntry, * {@link ShortestPathRouter} to find the shortest communication path between two communicating * instantiations of an {@link ITaskAdapter} for a given platform. */ - public IMessageRouter - createShortestPathRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new ShortestPathRouter(systemModelAdapter); + public IMessageRouter createShortestPathRouter() { + return new ShortestPathRouter(); } /** * Creates an basic EDF scheduler that is used to decode task mappings into schedules for the * given execution model * - * @param systemModelAdapter - * the system model deduced from the logical and technical architecture * @param expSpec * DSE goal specification used within the exploration, useful for scheduling * @return instance of the EDF schedule decoder. */ - public EDFSchedulerBase<?, ?> createEDFScheduler( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { + public EDFSchedulerBase<?, ?> createEDFScheduler(ExplorationSpecification expSpec) { 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/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings index 0ceea939..737d149f 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/.ratings @@ -1,3 +1,3 @@ Opt4JExplorationSolutionSet.java fd1ca946198990604ea7a521e9d0335bef4ad8e1 RED -Opt4JExplorerBackend.java 387e63ad7ae0f98836c2f6cfa5a89f63966619c0 RED +Opt4JExplorerBackend.java 800ec79e421755b139b34b08198aeccb4909d3a1 RED Opt4JSingleExplorationSolution.java 5b9e6ccdb887605faaa4d2a8b17b8fa1350fbafd RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java index 3073d306..82dc6fc5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JExplorerBackend.java @@ -47,6 +47,8 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmap import org.fortiss.af3.exploration.alg.dse.backend.opt4j.problem.ArchitectureExplorationProblemModule; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.ArchitectureSolution; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IExplorationSolution; +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.service.IExplorationEncoding; import org.fortiss.af3.exploration.model.ExplorationConstraint; @@ -117,6 +119,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { } /** {@inheritDoc} */ + @SuppressWarnings("unchecked") @Override protected void init(EAOptimizer opt4JParameters) { this.opt4JParameters = opt4JParameters; @@ -142,8 +145,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { // Nsga2Module nsga2Module = new Nsga2Module(); // modules.add(nsga2Module); - MatingCrossoverMutateRepairModule mating = - new MatingCrossoverMutateRepairModule(systemModelAdapter); + MatingCrossoverMutateRepairModule mating = new MatingCrossoverMutateRepairModule(); modules.add(mating); // TODO: Replace {@link MultiEvaluator} with {@link ExplorationGoalPriorityMultiEvaluator} @@ -165,7 +167,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { // Configure operators // 1. Crossover - modules.add(new CrossoverAbstractTaskMappingModule(systemModelAdapter, 0.3)); + modules.add(new CrossoverAbstractTaskMappingModule(0.3)); modules.add(new NopCrossoverInstantiatedTaskMappingModule()); modules.add(new NopCrossoverSFArchModule()); modules.add(new NopCrossoverPartitionMappingModule()); @@ -178,7 +180,7 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { // Safety functions (if the safety exploration module is enabled) if(pickFirstInstanceOf(SafetyExploration.class, dse.getFeatures()) != null) { MutateSafetyFunctionArchitectureModule sfArchModule = - new MutateSafetyFunctionArchitectureModule(systemModelAdapter); + new MutateSafetyFunctionArchitectureModule(); modules.add(sfArchModule); } @@ -186,16 +188,21 @@ public class Opt4JExplorerBackend extends ExplorerBackendBase<EAOptimizer> { modules.add(new NopPlatformCommGraphMutateModule()); // Partition Exploration - modules.add(new PartitionMappingModule(systemModelAdapter)); + modules.add(new PartitionMappingModule( + (Collection<IExecutionUnitAdapter<?>>)(Collection<?>)systemModelAdapter + .getDeploymentTargets())); // Task instantiation - MutateTaskInstanceModule mutateInstanceModule = - new MutateTaskInstanceModule(systemModelAdapter); + MutateTaskInstanceModule mutateInstanceModule = new MutateTaskInstanceModule( + (Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter + .getDeployableComponents()); // mutateInstanceModule.setMutationRateType(MutationRateType.ADAPTIVE); modules.add(mutateInstanceModule); // Task allocation - MutateTaskMappingModule mutateModule = new MutateTaskMappingModule(systemModelAdapter); + MutateTaskMappingModule mutateModule = new MutateTaskMappingModule( + (Collection<ITaskAdapter<?>>)(Collection<?>)systemModelAdapter + .getDeployableComponents()); // mutateModule.setMutationRateType(MutationRateType.ADAPTIVE); // mutateModule.setMutationRate(0.125); modules.add(mutateModule); 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 b4cea5d7..e93a81d6 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,2 +1,2 @@ ArchitectureExplorationCreator.java d0a638d783ec90959bf1f95af42ea5a15606ebd2 RED -InitialEncodingProvider.java a265e1b07f9f5e7dfb3a7dd808240c39ad25f4f9 RED +InitialEncodingProvider.java 20e7cff927769c1911855e1549eca382be3effea RED 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 index d19f0843..d378a0d5 100644 --- 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 @@ -19,7 +19,6 @@ 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; @@ -51,13 +50,13 @@ public class InitialEncodingProvider { } /** - * Maintains a map of {@link IExplorationEncoding}s that can be provided by {@code this} - * {@link SystemModelAdapter} by their corresponding types. + * Maintains a map of {@link IExplorationEncoding}s that can be constructed from the input + * models. */ private Map<Class<? extends IExplorationEncoding>, IExplorationEncoding> inputEncodings = new HashMap<>(); - /** Registers a given input encoding with {@code this} {@link SystemModelAdapter}. */ + /** Registers a given input encoding that is constructed from the input models. */ public <T extends IExplorationEncoding> void registerInputEncoding(T encoding) { @SuppressWarnings("unchecked") Class<T> encodingType = (Class<T>)encoding.getClass(); assert (!inputEncodings.containsKey( @@ -72,8 +71,8 @@ public class InitialEncodingProvider { } /** - * Returns the collection of {@link IExplorationEncoding} types that are availably through - * {@code this} {@link SystemModelAdapter}. + * Returns the collection of {@link IExplorationEncoding} types constructed from the input + * models. */ public Set<Class<? extends IExplorationEncoding>> getRegisteredEncodingTypes() { return inputEncodings.keySet(); 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 d5190aa7..eb0056ef 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 40dfbbfac60f8c595e7e673e9e709736a1b9e091 RED -InstantiatedAcyclicTaskGraphEncoding.java 4541bb1f0c79aafbc88b49c0cbbe7c973153e1af RED -InstantiatedTaskGraphEncoding.java 01b03a6de225f5890a4a9764f127045c4748e14e RED -SafeTaskGraphEncoding.java 03cb22320614f1ad4c16fbe68acbe045ca7e89ef RED -TaskGraphEncoding.java be6960a7221e7383afc17be8734e982b1529db2f RED +AbstractTaskGraphEncoding.java 1a6b9a31e85b0bba9ab59ef893558537ac6dfc7d RED +InstantiatedAcyclicTaskGraphEncoding.java 03f8687d9f83bd48bd545856160d6a022ba58228 RED +InstantiatedTaskGraphEncoding.java 18284256299c6ce54226254aab867e41a6530141 RED +SafeTaskGraphEncoding.java 27f0d06ed34f1cd46dee7332f32fc13279d55cc9 RED +TaskGraphEncoding.java 21b7be288439e4ee61d2726720a32fdcbfcfcbcf 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 3d297b8c..400f4288 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 @@ -19,7 +19,6 @@ 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; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.DefaultTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; @@ -32,9 +31,10 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C> extends TaskGraphEncoding<G, C, DefaultTaskGraph<?>> { - /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ - public AbstractTaskGraphEncoding(Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) { - super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs); + /** Constructor. */ + public AbstractTaskGraphEncoding(Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs, + Double hyperPeriod) { + super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs, hyperPeriod); } /** 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 db1d1698..31bcc495 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 @@ -20,7 +20,6 @@ import java.util.Collection; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; 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.TaskGraph; @@ -34,12 +33,10 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; */ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C> extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, AcyclicTaskGraph> { - - /** - * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}. - */ - public InstantiatedAcyclicTaskGraphEncoding(Collection<DefaultTaskGraph<?>> taskGraphs) { - super(AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs)); + /** Constructor. */ + public InstantiatedAcyclicTaskGraphEncoding(Collection<DefaultTaskGraph<?>> taskGraphs, + Double hyperPeriod) { + super(AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs), hyperPeriod); } /** 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 9b4f735d..bb630ced 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 @@ -20,7 +20,6 @@ import java.util.Collection; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.ComposablePhenotype; -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; @@ -31,13 +30,10 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; */ public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C> extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph<?>> { - - /** - * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}. - */ - public InstantiatedTaskGraphEncoding( - Collection<? extends DefaultTaskGraph<?>> originalTaskGraphs) { - super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs); + /** Constructor. */ + public InstantiatedTaskGraphEncoding(Collection<DefaultTaskGraph<?>> originalTaskGraphs, + Double hyperPeriod) { + super((Collection<DefaultTaskGraph<?>>)originalTaskGraphs, hyperPeriod); } /** 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 7a845dd4..68d4a0a8 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 @@ -20,7 +20,6 @@ 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; @@ -35,9 +34,9 @@ public class SafeTaskGraphEncoding<C> /** Collection of task graphs extracted from the input models. */ Collection<TaskGraph> originalTaskGraphs; - /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ - public SafeTaskGraphEncoding(Collection<TaskGraph> originalTaskGraphs) { - super((Collection<? extends DefaultTaskGraph<?>>)originalTaskGraphs); + /** Constructor. */ + public SafeTaskGraphEncoding(Collection<TaskGraph> originalTaskGraphs, Double hyperPeriod) { + super((Collection<? extends DefaultTaskGraph<?>>)originalTaskGraphs, hyperPeriod); this.originalTaskGraphs = originalTaskGraphs; } 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 cab6a9c2..ec7985e9 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 @@ -42,6 +42,9 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> /** {@link TaskGraph} that represents the deployable components and their signals. */ protected Collection<T> taskGraphs; + /** The Hyperperiod of the application represented by task graphs. */ + protected Double hyperPeriod; + /** * Collection of {@link ITaskAdapter}s that shall be mapped to deployment targets * ({@link IExecutionUnitAdapter}). @@ -58,8 +61,9 @@ 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. */ - public TaskGraphEncoding(Collection<T> taskGraphs) { + public TaskGraphEncoding(Collection<T> taskGraphs, Double hyperPeriod) { this.taskGraphs = taskGraphs; + this.hyperPeriod = hyperPeriod; this.deployableComponents.clear(); @@ -75,6 +79,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> * generates an equivalent copy. */ public TaskGraphEncoding(TaskGraphEncoding<G, C, T> encoding) { + this.hyperPeriod = encoding.getHyperPeriod(); taskGraphs.addAll(encoding.getTaskGraphs()); deployableComponents.addAll(encoding.deployableComponents); replicableComponents.addAll(encoding.replicableComponents); @@ -267,6 +272,11 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> return null; } + /** Returns the hyper period of the application. */ + public Double getHyperPeriod() { + return hyperPeriod; + } + /** {@inheritDoc} */ @Override public Object clone() { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings index 803c17bb..44f4b293 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/.ratings @@ -1,2 +1,2 @@ -MatingCrossoverMutateRepair.java e5a96095b3139ec52cd38175020c272c8407d183 RED -MatingCrossoverMutateRepairModule.java cbf79310c5c003908f057d842158b4f2b95456ca RED +MatingCrossoverMutateRepair.java 375a1ad682cda5af5d01f118a1c6c75d26f0b0d2 RED +MatingCrossoverMutateRepairModule.java 81eee7535b64c5547572349f1a4c70b2f35ec2bb RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java index 92403b27..ea9784bc 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepair.java @@ -23,7 +23,6 @@ import java.util.Queue; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.genotype.ComposableGenotype; 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.IExplorationRepairService; import org.fortiss.af3.exploration.alg.service.IRepairModule; @@ -43,7 +42,6 @@ import org.opt4j.optimizers.ea.Mating; import org.opt4j.optimizers.ea.MatingCrossoverMutate; import com.google.inject.Inject; -import com.google.inject.name.Named; /** * {@link Mating} module that extends {@link MatingCrossoverMutate} by providing an additional @@ -52,12 +50,6 @@ import com.google.inject.name.Named; * @author diewald */ public class MatingCrossoverMutateRepair extends MatingCrossoverMutate { - - /** References the input model. */ - @Inject - @Named("SystemModelAdapter") - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** * Constructor for the {@link MatingCrossoverMutateRepair} module which extends * {@link MatingCrossoverMutate}. @@ -111,7 +103,7 @@ public class MatingCrossoverMutateRepair extends MatingCrossoverMutate { Genotype genotype = ind.getGenotype(); for(IRepairModule<?> repairModule : getService(IExplorationRepairService.class) - .getRepairFunctionsOf(genotype, systemModelAdapter)) { + .getRepairFunctionsOf(genotype)) { if(repairModule.needsRepair(genotype, ind.getObjectives().getValues())) { ComposableGenotype copiedGenotype = (ComposableGenotype)copy.copy(genotype); repairModule.repairGenotype(copiedGenotype, ind.getObjectives().getValues()); @@ -126,7 +118,7 @@ public class MatingCrossoverMutateRepair extends MatingCrossoverMutate { ComposableGenotype curGenotype = traversalQueue.poll(); List<IRepairModule<ComposableGenotype>> repairModules = getService(IExplorationRepairService.class) - .getRepairFunctionsOf(curGenotype, systemModelAdapter); + .getRepairFunctionsOf(curGenotype); for(IRepairModule<?> curRepairModule : repairModules) { if(curRepairModule.needsRepair(curGenotype, ind.getObjectives().getValues())) { ComposableGenotype copiedGenotype = diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java index 004d221f..ae5182b0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/mating/MatingCrossoverMutateRepairModule.java @@ -15,45 +15,18 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.mating; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.optimizers.ea.Mating; import org.opt4j.optimizers.ea.MatingModule; -import com.google.inject.Provides; -import com.google.inject.Singleton; -import com.google.inject.name.Named; -import com.google.inject.name.Names; - /** * Guice module that binds the {@link MatingCrossoverMutateRepairModule} to Opt4J. * * @author diewald */ public class MatingCrossoverMutateRepairModule extends MatingModule { - - /** References the input model adapter. */ - private final SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - - /** Constructor. */ - public MatingCrossoverMutateRepairModule( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } - /** {@inheritDoc} */ @Override protected void config() { binder().bind(Mating.class).to(MatingCrossoverMutateRepair.class); - - binder().bind(SystemModelAdapter.class).annotatedWith(Names.named("SystemModelAdapter")) - .toInstance(systemModelAdapter); - } - - /** Returns the systemModelAdapter referenced by {@code this} module. */ - @Provides - @Singleton - @Named("SystemModelAdapter") - public SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> getSystemModelAdapter() { - return systemModelAdapter; } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings index 08cb6b2c..1241fd9c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/.ratings @@ -1,8 +1,8 @@ -CrossoverAbstractTaskMappingModule.java 2378665cf352620597d819fbca37f1b6c60416d0 RED -CrossoverAllocationBase.java 5ecd7b699a04fe129434ec12b35abdcecdc40ba2 RED +CrossoverAbstractTaskMappingModule.java 4942a1dc7547a656b75cb899f06556f8dedd342e RED +CrossoverAllocationBase.java a2d0db2e860103bad3d7f8af1982623182103a80 RED CrossoverOperatorModuleBase.java 03f237eba55f15043082bb1f5cc47f052cb24d33 RED -CrossoverRandManyAllocation.java 6e198ea496ec0293db170e911ecdb77896a18213 RED -CrossoverSingleAllocation.java 81ae86925841f41f0073613382d2cf8326385db6 RED +CrossoverRandManyAllocation.java c6a1ec9d0975247bbfc32a114f814eb52568cdb0 RED +CrossoverSingleAllocation.java 823db1f9c10e7ed4c7eb8212310a6d411526db88 RED NopCrossover.java 70500c9db651250298c97e261e4f8a0d8b6941e3 RED NopCrossoverInstantiatedTaskMappingModule.java 95156489b862633b428a87df2ae51aa304c7f6f1 RED NopCrossoverPartitionMappingModule.java ac1eb750baf51027e352f4b95e6145e914bc4d19 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java index fbcc187a..04c64460 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAbstractTaskMappingModule.java @@ -17,7 +17,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover; import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; /** * Crossover module selecting the {@link CrossoverRandManyAllocation} operator to be applied on @@ -29,13 +28,8 @@ public class CrossoverAbstractTaskMappingModule extends CrossoverOperatorModuleB /** Crossover rate */ private double rate; - /** References the {@link SystemModelAdapter} that handles the input models. */ - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Constructor where execution model and mutation rate has to be specified */ - public CrossoverAbstractTaskMappingModule( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { - this.systemModelAdapter = systemModelAdapter; + public CrossoverAbstractTaskMappingModule(double rate) { this.rate = rate; } @@ -44,7 +38,7 @@ public class CrossoverAbstractTaskMappingModule extends CrossoverOperatorModuleB public void config() { super.config(); - addOperatorInstance(AbstractTaskMappingEncoding.class, TaskMappingFactory.getInstance() - .createCrossoverRandManyAllocationOperator(systemModelAdapter, rate)); + addOperatorInstance(AbstractTaskMappingEncoding.class, + TaskMappingFactory.getInstance().createCrossoverRandManyAllocationOperator(rate)); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java index 42bff2bd..d11fd0c9 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverAllocationBase.java @@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; 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.random.RandomExploration; import org.opt4j.operators.crossover.Crossover; @@ -44,10 +43,6 @@ import com.google.common.collect.HashBiMap; */ public abstract class CrossoverAllocationBase<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> implements Crossover<T> { - - /** Reference to the {@link SystemModelAdapter} which handles the input models. */ - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Cross-over rate */ protected double rate; @@ -55,9 +50,7 @@ public abstract class CrossoverAllocationBase<S extends TaskMappingEntry<ITaskAd protected RandomExploration rand = RandomExploration.getInstance(); /** Constructor that allows to set the cross-over rate */ - public CrossoverAllocationBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - double rate) { - this.systemModelAdapter = systemModelAdapter; + public CrossoverAllocationBase(double rate) { this.rate = rate; } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java index 61b48041..96118244 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverRandManyAllocation.java @@ -20,7 +20,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; 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.opt4j.operators.crossover.Pair; /** @@ -33,11 +32,9 @@ import org.opt4j.operators.crossover.Pair; */ public class CrossoverRandManyAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends CrossoverAllocationBase<S, T> { - /** Constructor that allows to set the cross-over rate */ - public CrossoverRandManyAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - double rate) { - super(systemModelAdapter, rate); + public CrossoverRandManyAllocation(double rate) { + super(rate); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java index b70541b3..551f5c07 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/CrossoverSingleAllocation.java @@ -20,7 +20,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; 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.opt4j.operators.crossover.Pair; /** @@ -32,11 +31,9 @@ import org.opt4j.operators.crossover.Pair; */ public class CrossoverSingleAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends CrossoverAllocationBase<S, T> { - /** Constructor that allows to set the cross-over rate */ - public CrossoverSingleAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - double rate) { - super(systemModelAdapter, rate); + public CrossoverSingleAllocation(double rate) { + super(rate); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings index 0bf9bbd4..d4a80ce8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/.ratings @@ -1 +1 @@ -CrossoverAllocationFailSilent.java d5b9611669bc320448e984c3c7f1a7f319ccbf7b RED +CrossoverAllocationFailSilent.java 668b310ffa5544d81938bb957eabd1034c899219 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java index 6d0e7f98..a3ea300e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/failSilent/CrossoverAllocationFailSilent.java @@ -18,7 +18,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.fai import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FailSilentTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FailSilentTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.CrossoverRandManyAllocation; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; /** * Performs the {@link CrossoverRandManyAllocation} operation on @@ -29,8 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; public class CrossoverAllocationFailSilent extends CrossoverRandManyAllocation<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { /** Constructs a resource allocation crossover operator for fail-silent execution model */ - public CrossoverAllocationFailSilent(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - double rate) { - super(systemModelAdapter, rate); + public CrossoverAllocationFailSilent(double rate) { + super(rate); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings index fe20f0fa..f6c755ce 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/.ratings @@ -1 +1 @@ -CrossoverAllocationFaultDetectionVoting.java f40741b1440a3638808016bf8cabf4c6f6da80e2 RED +CrossoverAllocationFaultDetectionVoting.java 7ad980120a322084cfc0085106c91e4722a37a72 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java index f30d57ad..03955ce3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/crossover/faultDetectionVoting/CrossoverAllocationFaultDetectionVoting.java @@ -18,7 +18,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.fau import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FaultDetectionVotingTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.FaultDetectionVotingTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.crossover.CrossoverRandManyAllocation; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; /** * Performs the {@link CrossoverRandManyAllocation} operation on @@ -29,8 +28,7 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; public class CrossoverAllocationFaultDetectionVoting extends CrossoverRandManyAllocation<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> { /** Constructs a resource allocation crossover operator for fail-silent execution model */ - public CrossoverAllocationFaultDetectionVoting( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { - super(systemModelAdapter, rate); + public CrossoverAllocationFaultDetectionVoting(double rate) { + super(rate); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings index 842f012a..2eb432b3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/.ratings @@ -1,3 +1,3 @@ -MutateBase.java 954077b22d74f84b13ba10afbf1e94661d9c0347 RED +MutateBase.java 270e544e90864adfb4e92f369db369eaab4a0f17 RED MutateOperatorModuleBase.java b17ea95c0f3e8ccbdd9005c416c6d9aff54a5517 RED NopMutateOperator.java c016ee80e96392d663e59d151b16ea546111cecf RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java index 977b70a9..74235bf7 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/MutateBase.java @@ -15,26 +15,16 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration; import org.opt4j.core.Genotype; import org.opt4j.operators.mutate.Mutate; /** - * Base class for {@link Mutate} operators that provides the {@link SystemModelAdapter} and a random - * number generator. + * Base class for {@link Mutate} operators that provide a random number generator. * * @author diewald */ public abstract class MutateBase<T extends Genotype> implements Mutate<T> { /** Random generator */ protected RandomExploration rand = RandomExploration.getInstance(); - - /** Representation of input system */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - - /** Constructs a new mutation operator for a given exploration run */ - protected MutateBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings index 943b9bdc..c6d7a468 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings @@ -1,4 +1,4 @@ -MutatePartitionBase.java 855767f50de089baa974214c3f209dbf643a7c23 RED -MutatePartitionDecrement.java 0f5157c637b29dea2edd4d99f56ae3f83b25345e RED -MutatePartitionIncrement.java cfefa5d913c40a4d5b66e1d2fb0efd70022f7978 RED -PartitionMappingModule.java a0f0eac2bda10c15611015266648735d6e9ac5be RED +MutatePartitionBase.java bb0c22283f538959a4896dd7cfc9ef3686df5eb9 RED +MutatePartitionDecrement.java a502f96ffaf4510828cdfc67346185f9fffdfbce RED +MutatePartitionIncrement.java 121c27c9e8bf3df7364a4245ef6f93300f221931 RED +PartitionMappingModule.java c39d8441752a67ef10398de2b810d178452fd326 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java index aaff7118..6cb25482 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionBase.java @@ -22,8 +22,8 @@ import java.util.function.Function; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateBase; +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; /** * Base class for the mutation functions operating on the Partition to ExecutionUnit mapping, e.g. @@ -39,10 +39,8 @@ public abstract class MutatePartitionBase extends MutateBase<PartitionMappingEnc private double rate; /** Constructor. */ - public MutatePartitionBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - // TODO: The statement below hard-wires the module. - this.allocationTargets.addAll(systemModelAdapter.getDeploymentTargets()); + public MutatePartitionBase(Collection<IExecutionUnitAdapter<?>> executionUnits) { + this.allocationTargets.addAll(executionUnits); this.rate = 1 / allocationTargets.size(); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java index d0214e9a..aa364f0d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionDecrement.java @@ -15,12 +15,13 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.partitionmapping; +import java.util.Collection; import java.util.function.Consumer; import java.util.stream.Stream; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding; +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; /** * Mutation operator that randomly selects resources from which to remove a random partition. The @@ -29,10 +30,9 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; * @author diewald */ public class MutatePartitionDecrement extends MutatePartitionBase { - /** Constructor. */ - public MutatePartitionDecrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public MutatePartitionDecrement(Collection<IExecutionUnitAdapter<?>> executionUnits) { + super(executionUnits); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java index 54ea1dff..4b8e804d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/MutatePartitionIncrement.java @@ -15,12 +15,13 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.partitionmapping; +import java.util.Collection; import java.util.function.Consumer; import java.util.stream.Stream; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding; +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; /** * Mutation operator that randomly selects resources for which to create a partition. The @@ -29,10 +30,9 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; * @author diewald */ public class MutatePartitionIncrement extends MutatePartitionBase { - /** Constructor. */ - public MutatePartitionIncrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public MutatePartitionIncrement(Collection<IExecutionUnitAdapter<?>> executionUnits) { + super(executionUnits); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java index 9a775f93..0eb2323c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/PartitionMappingModule.java @@ -15,21 +15,23 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.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.operator.mutate.MutateOperatorModuleBase; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; /** * * @author diewald */ public class PartitionMappingModule extends MutateOperatorModuleBase { - /** Representation of input system */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; + /** {@link IExecutionUnitAdapter}s available as allocation targets. */ + Collection<IExecutionUnitAdapter<?>> executionUnits; - /** Constructor where the input system model has to be specified. */ - public PartitionMappingModule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + /** Constructor. */ + public PartitionMappingModule(Collection<IExecutionUnitAdapter<?>> executionUnits) { + this.executionUnits = executionUnits; } /** {@inheritDoc} */ @@ -38,8 +40,8 @@ public class PartitionMappingModule extends MutateOperatorModuleBase { super.config(); addOperatorInstance(PartitionMappingEncoding.class, - new MutatePartitionDecrement(systemModelAdapter)); + new MutatePartitionDecrement(executionUnits)); addOperatorInstance(PartitionMappingEncoding.class, - new MutatePartitionIncrement(systemModelAdapter)); + new MutatePartitionIncrement(executionUnits)); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings index c33bb16e..fc52acc0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/.ratings @@ -1,5 +1,5 @@ -MutateChannelNumber.java 68458da7fddd5359d667916e865e07b2afabc963 RED -MutateConnectedDiagnosisPresent.java d8484434cd4984fdb1d13ed6f786533e5e2c7b28 RED -MutateSafetyArchBase.java 912851bc3df719910ffa1bc384ac4a457472da74 RED -MutateSafetyFunctionArchitectureModule.java 543c5384f56e4b41da417af3e7067a29e477c2f1 RED -MutateSafetyTriggerSignalNumber.java a77f526222524c855feb82197fdf7677abf956f0 RED +MutateChannelNumber.java 3cc953a73ceeff9f4d78d6ceccd003310f71097a RED +MutateConnectedDiagnosisPresent.java 2b6053d44d11bcab37ba7fa4b780c17538af5fbf RED +MutateSafetyArchBase.java 940804b02cdf0f631b870a5458a7782835b2cdef RED +MutateSafetyFunctionArchitectureModule.java f45953e9f11655d90295f9a25ce46889b5c7f14d RED +MutateSafetyTriggerSignalNumber.java c883a170a4d9a6cc5a1b1ee86586dd79b44c2ab4 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java index c0e6ad96..2e49168b 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateChannelNumber.java @@ -19,7 +19,6 @@ 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.encoding.safetyfunctionarch.SafetyFunctionArchEntry; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.operators.mutate.Mutate; /** @@ -28,12 +27,6 @@ import org.opt4j.operators.mutate.Mutate; * @author diewald */ public class MutateChannelNumber<C> extends MutateSafetyArchBase<C> { - - /** Constructor. */ - protected MutateChannelNumber(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - } - /** {@inheritDoc} */ @Override public void mutate(SafetyFunctionArchEncoding<C> genotype, double p) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java index 14fa9a39..9089e7c8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateConnectedDiagnosisPresent.java @@ -19,7 +19,6 @@ 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.encoding.safetyfunctionarch.SafetyFunctionArchEntry; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.operators.mutate.Mutate; /** @@ -29,13 +28,6 @@ import org.opt4j.operators.mutate.Mutate; * @author diewald */ public class MutateConnectedDiagnosisPresent<C> extends MutateSafetyArchBase<C> { - - /** Constructor. */ - protected MutateConnectedDiagnosisPresent( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - } - /** {@inheritDoc} */ @Override public void mutate(SafetyFunctionArchEncoding<C> genotype, double p) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java index 637de8ce..572ca678 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyArchBase.java @@ -21,7 +21,6 @@ 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.encoding.safetyfunctionarch.SafetyFunctionArchEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateBase; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.operators.mutate.Mutate; /** @@ -31,12 +30,6 @@ import org.opt4j.operators.mutate.Mutate; * @author diewald */ public abstract class MutateSafetyArchBase<C> extends MutateBase<SafetyFunctionArchEncoding<C>> { - - /** Constructor. */ - protected MutateSafetyArchBase(SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - } - /** * Selects a collection of {@link SafetyFunctionArchEntry}s from the given * {@link SafetyFunctionArchEncoding} whose element number depends on the given probability diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java index afe87271..00594454 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyFunctionArchitectureModule.java @@ -17,7 +17,6 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.safety import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.safetyfunctionarch.SafetyFunctionArchEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.core.Genotype; import org.opt4j.operators.mutate.Mutate; @@ -30,26 +29,16 @@ import com.google.inject.Module; * @author diewald */ public class MutateSafetyFunctionArchitectureModule extends MutateOperatorModuleBase { - /** Representation of input system */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - - /** Constructor where the input system model has to be specified. */ - public MutateSafetyFunctionArchitectureModule( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } - /** {@inheritDoc} */ @SuppressWarnings({"rawtypes", "unchecked"}) @Override public void config() { super.config(); + addOperatorInstance(SafetyFunctionArchEncoding.class, new MutateChannelNumber()); addOperatorInstance(SafetyFunctionArchEncoding.class, - new MutateChannelNumber(systemModelAdapter)); - addOperatorInstance(SafetyFunctionArchEncoding.class, - new MutateSafetyTriggerSignalNumber(systemModelAdapter)); + new MutateSafetyTriggerSignalNumber()); addOperatorInstance(SafetyFunctionArchEncoding.class, - new MutateConnectedDiagnosisPresent(systemModelAdapter)); + new MutateConnectedDiagnosisPresent()); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java index f6ebb9ce..385efb31 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/safetyarch/MutateSafetyTriggerSignalNumber.java @@ -19,7 +19,6 @@ 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.encoding.safetyfunctionarch.SafetyFunctionArchEntry; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.opt4j.operators.mutate.Mutate; /** @@ -29,13 +28,6 @@ import org.opt4j.operators.mutate.Mutate; * @author diewald */ public class MutateSafetyTriggerSignalNumber<C> extends MutateSafetyArchBase<C> { - - /** Constructor. */ - protected MutateSafetyTriggerSignalNumber( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - } - /** {@inheritDoc} */ @Override public void mutate(SafetyFunctionArchEncoding<C> genotype, double p) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings index 9f903091..495a3e3e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/.ratings @@ -1,2 +1,2 @@ -MutateTaskInstance.java 770afdf378f8f753f4a5615f88ecf39a5d52777a RED -MutateTaskInstanceModule.java 545184274a31861d51c915d787e9ae6b721daf4c RED +MutateTaskInstance.java 7bb9d0cd22886796e77d7d2ba4b46323a88e4957 RED +MutateTaskInstanceModule.java 2d1a1227e1f14028d00ec77a8b2d19bb1437cf5e RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java index 880a43dc..0c101e73 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstance.java @@ -23,7 +23,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.operator.mutate.taskmapping.MutateTasksBase; 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 org.opt4j.operators.mutate.Mutate; @@ -47,13 +46,12 @@ public class MutateTaskInstance extends private Collection<ITaskAdapter<?>> abstractComponents; /** Constructor. */ - public MutateTaskInstance(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public MutateTaskInstance(Collection<ITaskAdapter<?>> tasks) { + super(tasks); abstractComponents = new HashSet<ITaskAdapter<?>>(); - - for(ITaskAdapter<?> deployableComponent : systemModelAdapter.getDeployableComponents()) { - if(deployableComponent.isInstantiationRequired()) { - abstractComponents.add(deployableComponent); + for(ITaskAdapter<?> curTask : tasks) { + if(curTask.isInstantiationRequired()) { + abstractComponents.add(curTask); } } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java index 29586e3b..4ec43fc3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskinstantiation/MutateTaskInstanceModule.java @@ -15,10 +15,12 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskinstantiation; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping.MutateTaskMappingModule; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.opt4j.operators.mutate.Mutate; import com.google.inject.Module; @@ -36,12 +38,12 @@ import com.google.inject.Module; */ public class MutateTaskInstanceModule extends MutateOperatorModuleBase { - /** Representation of input system */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; + /** Representation of the {@link ITaskAdapter}s to deploy. */ + private Collection<ITaskAdapter<?>> tasks; /** Constructor where the input system model has to be specified. */ - public MutateTaskInstanceModule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public MutateTaskInstanceModule(Collection<ITaskAdapter<?>> tasks) { + this.tasks = tasks; } /** {@inheritDoc} */ @@ -49,7 +51,6 @@ public class MutateTaskInstanceModule extends MutateOperatorModuleBase { public void config() { super.config(); - addOperatorInstance(InstantiatedTaskMappingEncoding.class, - new MutateTaskInstance(systemModelAdapter)); + addOperatorInstance(InstantiatedTaskMappingEncoding.class, new MutateTaskInstance(tasks)); } } 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 2b396e58..8cb12bd9 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,6 +1,6 @@ -MutateAllocation.java 0994667e10022be731b4cb6c04a59d0b562eb575 RED -MutateRedundancy.java 916b93f4ee2eb953033daa38273cc2360234c89e RED -MutateRedundancyDecrement.java 38c930eb6d5648d58e31d5c0bb39f7edf50f9a87 RED -MutateRedundancyIncrement.java 5256080dcaab5482c33915fd8c78e0bb3c3fbcd6 RED -MutateTaskMappingModule.java 3af775566334bb030f5f54a98f746e59ebb4cac7 RED -MutateTasksBase.java 0c2628eac42373cac6c69ec8a7ac8542a40d2a36 RED +MutateAllocation.java 6de15219d302a04e89891372be98c54320d1a97e RED +MutateRedundancy.java f8d8eb0b1404e211a3b4c46a22dd0f8b3557530e RED +MutateRedundancyDecrement.java 087a249c93eb7f247b880bc82922337edb47c097 RED +MutateRedundancyIncrement.java 3a7aa2fc44b81982a77ca4daff458cab2eed6454 RED +MutateTaskMappingModule.java ac26c4c284593e2a326ff4ecb22d4282cab41ebf RED +MutateTasksBase.java e1df983535ca07c9e90081fd64c4a605b178d033 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 7694d58c..cee21301 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 @@ -24,9 +24,7 @@ import java.util.List; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; -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; /** @@ -37,10 +35,9 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException; */ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends MutateTasksBase<S, T> { - /** Constructs a new allocation mutation operator for a given exploration run */ - public MutateAllocation(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public MutateAllocation(Collection<ITaskAdapter<?>> tasks) { + super(tasks); } /** Constant to enable / disable replication count check. */ @@ -75,7 +72,7 @@ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partit /** Checks the replication count and prints a message in case of errors. */ private void checkReplicationCount(T encoding) { if(CHECK_REPLICATION_COUNT) { - for(ITaskAdapter<?> currentComponent : systemModelAdapter.getDeployableComponents()) { + for(ITaskAdapter<?> currentComponent : tasks) { if(encoding.getAllocatedResourcesFor(currentComponent).size() != 1) { System.out.println("Encoding replications exceed the allowed amount"); } @@ -115,9 +112,8 @@ public class MutateAllocation<S extends TaskMappingEntry<ITaskAdapter<?>, Partit int selExecU = max(0, rand.nextInt(targets.size()) - 1); selectedEntry.resetTarget(targets.get(selExecU)); } else { - List<IExecutionUnitAdapter<?>> physExecUnits = - new ArrayList<>(systemModelAdapter.getDeploymentTargets()); - List<Partition> targets = encoding.getAllowedPartitionTargets(physExecUnits); + List<Partition> targets = (List<Partition>)(Collection<?>)encoding + .getAllowedAllocations(deployableComponent); int selExecU = max(0, rand.nextInt(targets.size()) - 1); selectedEntry.resetTarget(targets.get(selExecU)); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java index 4a6b67df..4b8f9ba0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancy.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.TaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint.InternalReplicationConstraint; 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; /** @@ -33,10 +32,9 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException; */ public abstract class MutateRedundancy<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends MutateTasksBase<S, T> { - /** Constructs a new redundancy mutation operator for a given exploration run */ - MutateRedundancy(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + MutateRedundancy(Collection<ITaskAdapter<?>> tasks) { + super(tasks); } /** {@inheritDoc} */ @@ -47,8 +45,13 @@ public abstract class MutateRedundancy<S extends TaskMappingEntry<ITaskAdapter<? // TODO: remove filter for fixed Deployment: It is not needed. // No replication for Components with a fixed Deployment & Components which shall // not be replicated (see the SystemModelAdapter). - if(!encoding.hasLimitedDeployment(deployableComponent) && systemModelAdapter - .getReplicableComponents().contains(deployableComponent)) { + // TODO(#3264) + if(!encoding + .hasLimitedDeployment(deployableComponent) /* + * && systemModelAdapter + * .getReplicableComponents(). + * contains(deployableComponent) + */) { // TODO: Model minimum and maximum replication count as constraint? // Do the actual mutation of the allocation of the current request diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java index 62001365..d2b17641 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyDecrement.java @@ -15,13 +15,13 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping; +import java.util.Collection; import java.util.List; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; /** * Mutate operator that decreases the redundancy of allocations. @@ -30,10 +30,9 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; */ public class MutateRedundancyDecrement<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends MutateRedundancy<S, T> { - /** Constructs a new decrement redundancy mutation operator for a given exploration run */ - public MutateRedundancyDecrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public MutateRedundancyDecrement(Collection<ITaskAdapter<?>> tasks) { + super(tasks); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java index 9fd1c7a9..6fb9e231 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateRedundancyIncrement.java @@ -22,7 +22,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmappi import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; 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; /** @@ -33,8 +32,8 @@ import org.fortiss.af3.exploration.alg.exception.ExplorationException; public class MutateRedundancyIncrement<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends MutateRedundancy<S, T> { /** Constructs a new increment redundancy mutation operator for a given exploration run */ - public MutateRedundancyIncrement(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + public MutateRedundancyIncrement(Collection<ITaskAdapter<?>> tasks) { + super(tasks); } /** diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java index 278e9df9..4f2d680a 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTaskMappingModule.java @@ -15,12 +15,14 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateOperatorModuleBase; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.opt4j.operators.mutate.Mutate; import com.google.inject.Module; @@ -33,11 +35,11 @@ import com.google.inject.Module; */ public class MutateTaskMappingModule extends MutateOperatorModuleBase { /** Representation of input system */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; + private Collection<ITaskAdapter<?>> tasks; /** Constructor where the input system model has to be specified. */ - public MutateTaskMappingModule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public MutateTaskMappingModule(Collection<ITaskAdapter<?>> tasks) { + this.tasks = tasks; } /** {@inheritDoc} */ @@ -48,10 +50,10 @@ public class MutateTaskMappingModule extends MutateOperatorModuleBase { TaskMappingFactory.getInstance(); addOperatorInstance(AbstractTaskMappingEncoding.class, - tmFactory.createMutateAllocationOperator(systemModelAdapter)); + tmFactory.createMutateAllocationOperator(tasks)); addOperatorInstance(AbstractTaskMappingEncoding.class, - tmFactory.createMutateRedundancyDecrementOperator(systemModelAdapter)); + tmFactory.createMutateRedundancyDecrementOperator(tasks)); addOperatorInstance(AbstractTaskMappingEncoding.class, - tmFactory.createMutateRedundancyIncrementOperator(systemModelAdapter)); + tmFactory.createMutateRedundancyIncrementOperator(tasks)); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java index 2173de78..237e2814 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/taskmapping/MutateTasksBase.java @@ -15,12 +15,13 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.taskmapping; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.operator.mutate.MutateBase; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; /** * Base class for mutation operator defined for {@link TaskMappingEncoding}s. @@ -29,9 +30,13 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; */ public abstract class MutateTasksBase<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends MutateBase<T> { + /** {@link ITaskAdapter}s that shall be allocated. */ + protected Collection<ITaskAdapter<?>> tasks; /** Constructor. */ - protected MutateTasksBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); + protected MutateTasksBase(Collection<ITaskAdapter<?>> tasks) { + super(); + + this.tasks = tasks; } } 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 5609b269..d4bd2506 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,8 +1,8 @@ ArchExpSubDecoder.java b53315dae39fd6afdae22e2412af5cf9dff5e574 RED ArchitectureDecoder.java 9a002b7e7ecf05835276dd0302faf0bd7c3aa656 RED ArchitectureExplorationProblemModule.java 650201476e17b6c7df1b9844e69fe979d20f04f6 RED -DseProblemModuleBase.java ad44baebb3c417c3778672f10ae4f3e61f1fa932 RED +DseProblemModuleBase.java e088ed91aae6391bdec7ba93df65e677665f9596 RED EvaluatorWrapper.java 47ff0b2df7f75e232fa269b55750f0e2c408b08c RED ExplorationGoalPriorityMultiEvaluator.java 0f900f86c8adc14b69d95bb8eb3a34ea1ed2d41e RED ProblemModuleBase.java fb1401b846d001dfc78bbd8b8881929788b10d41 RED -StrictTTDecoder.java 0f0719bb800da1a9308dd1049f2aeedf80efef4b RED +StrictTTDecoder.java 293d4e08d0ad1474aaa9c234807d140291cf40ae RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java index e8661b3e..77cd950a 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/DseProblemModuleBase.java @@ -57,6 +57,7 @@ public abstract class DseProblemModuleBase<C extends CompositeGenotype<Class<? e protected DseSpecification dse; /** Representation of input system */ + // TODO(#3270) protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; /** Set of requested {@link ComposablePhenotype}s that form the solution set. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java index 59d11e62..d44d02b5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/StrictTTDecoder.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.backend.opt4j.solution.StrictTTSchedule; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.comm.TDMABusScheduler; import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.EDFSchedulerBase; import org.fortiss.af3.exploration.moea.model.DseSpecification; @@ -47,10 +46,6 @@ import com.google.inject.Inject; */ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> extends ComposableDecoderBase<T, StrictTTSchedule<S, T>> implements ArchExpSubDecoder { - - /** Representation of input system model */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Underlying EDF task scheduler */ private EDFSchedulerBase<S, T> simpleEDFScheduler; @@ -63,17 +58,14 @@ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends I */ @SuppressWarnings("unchecked") @Inject - public StrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { - this.systemModelAdapter = systemModelAdapter; + public StrictTTDecoder(DseSpecification explorationDefinition) { TaskMappingFactory<?, ?> tmFactory = TaskMappingFactory.getInstance(); - simpleEDFScheduler = - (EDFSchedulerBase<S, T>)tmFactory.createEDFScheduler(systemModelAdapter, - explorationDefinition.getTargetSpecification()); - simpleBusScheduler = new TDMABusScheduler<S, T>(systemModelAdapter, - explorationDefinition.getTargetSpecification()); + simpleEDFScheduler = (EDFSchedulerBase<S, T>)tmFactory + .createEDFScheduler(explorationDefinition.getTargetSpecification()); + simpleBusScheduler = + new TDMABusScheduler<S, T>(explorationDefinition.getTargetSpecification()); } /** {@inheritDoc} */ @@ -94,7 +86,7 @@ public class StrictTTDecoder<S extends InstantiatedTaskMappingEntry, T extends I // TODO: Externalize the validation such that the encoding is not required to be passed to // the constructor (is there for validation purposes) - StrictTTSchedule<S, T> schedule = new StrictTTSchedule<S, T>(systemModelAdapter, genotype); + StrictTTSchedule<S, T> schedule = new StrictTTSchedule<S, T>(genotype); simpleEDFScheduler.schedule(acycItgEnc, partEnc, genotype, schedule); assert (schedule.validateSchedule(true)); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings index 568e28ea..fef09303 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/.ratings @@ -1 +1 @@ -MessageDecoder.java 2785a0a781c6b6f49be33104599314c309fd1329 RED +MessageDecoder.java 155958e769b3ddb18deac0d2ff595977f5252192 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java index fbace084..7ef5faf5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/comm/MessageDecoder.java @@ -23,9 +23,11 @@ import java.util.Map; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.comm.MessageEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; 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.taskgraph.InstantiatedTaskGraphEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.ComposableDecoder; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.decode.ComposableDecoderBase; @@ -34,7 +36,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.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.comm.Message; import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.MessageGenerator; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.IMessageRouter; @@ -54,10 +55,6 @@ import com.google.inject.Inject; */ public class MessageDecoder<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> extends ComposableDecoderBase<T, MessageEncoding<S, T>> { - - /** References the input system models. */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** * {@link MessageGenerator} which analyzes an {@link InstantiatedTaskMappingEncoding} and * determines the required {@link Message}s. @@ -69,10 +66,9 @@ public class MessageDecoder<S extends TaskMappingEntry<ITaskAdapter<?>, Partitio /** Default constructor that requires a reference to the input models. */ @Inject - public MessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - messageGenerator = new MessageGenerator<S, T>(systemModelAdapter); - messageRouter = new MessageRouter(systemModelAdapter); + public MessageDecoder() { + messageGenerator = new MessageGenerator<S, T>(); + messageRouter = new MessageRouter(); } /** @@ -87,8 +83,12 @@ public class MessageDecoder<S extends TaskMappingEntry<ITaskAdapter<?>, Partitio decodedPhenotypes.getEncoding(PlatformCommunicationGraphEncoding.class); assert (pcgEncoding != null) : "The required platform communication graph encoding could not" + " be found in the map of already decoded phenotypes."; + @SuppressWarnings("unchecked") AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, ?> atgEnc = + decodedPhenotypes.getEncoding(AbstractTaskGraphEncoding.class); + assert (pcgEncoding != null) : "The required atstract task graph encoding encoding could not" + + " be found in the map of already decoded phenotypes."; - Collection<Message> generatedMessages = messageGenerator.generateMessages(genotype); + Collection<Message> generatedMessages = messageGenerator.generateMessages(genotype, atgEnc); Map<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>> messageRouteMap = messageRouter.calculateMessageRoutes(generatedMessages, pcgEncoding, RoutingStrategy.SHORTEST_PATH); 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 0aab7652..a198648b 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 fabe128ecd7f2a651384e4a22c8035c399226a2e RED -InstantiatedTaskMappingDecoderAcyclic.java 9356d1cba4e983db4558b6f5b9b39dde876dc396 RED +InstantiatedTaskMappingDecoder.java 7c814ec27683f24c4122d1c977ab47b76f36a379 RED +InstantiatedTaskMappingDecoderAcyclic.java 9d2823e418fe0dae98fbfe00427b5bf6fe3ceb3b 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 07d14c45..e73da437 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 @@ -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.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.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; @@ -50,15 +49,9 @@ import com.google.inject.Inject; */ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEntry, C> extends ComposableDecoderBase<InstantiatedTaskMappingEncoding<T>, InstantiatedTaskGraphEncoding<T, C>> { - - /** Representation of input system model */ - private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Constructs a new decoder to generate {@link InstantiatedTaskGraphEncoding}. */ @Inject - public InstantiatedTaskMappingDecoder( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public InstantiatedTaskMappingDecoder() { } /** {@inheritDoc} */ @@ -77,7 +70,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt TaskGraphInstantiator<DefaultTaskGraph<?>> tgInstatiator = new TaskGraphInstantiator<>(tgColl, genotype); InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>( - tgInstatiator.createMultipleInstanceTaskGraphs(tgColl)); + tgInstatiator.createMultipleInstanceTaskGraphs(tgColl), atgEnc.getHyperPeriod()); if(sfEnc != null) { removeInterSafetyChannelSignals(sfEnc, itgEnc); @@ -128,11 +121,11 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt ITaskAdapter<?> outputUnit = sfEntry.getSafetyFunctionAdapter().getOutputComponent(); // TODO: only for a single diag unit. - Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getTasks() - .stream().filter(d -> sfUnits.contains(d.getReplacedComponent())) + Collection<ITaskAdapter<?>> realizingSFUnits = itgEnc.getTasks().stream() + .filter(d -> sfUnits.contains(d.getReplacedComponent())) .collect(Collectors.toList()); - Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getTasks() - .stream().filter(d -> diagUnits.contains(d.getReplacedComponent())) + Collection<ITaskAdapter<?>> realizingDiagUnits = itgEnc.getTasks().stream() + .filter(d -> diagUnits.contains(d.getReplacedComponent())) .collect(Collectors.toList()); Collection<ITaskAdapter<?>> outComps = itgEnc.getTasks().stream() .filter(d -> d.getObject() == outputUnit.getObject()) 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 07e216c2..979d34e0 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 @@ -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.exception.DecodingException; 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 com.google.inject.Inject; @@ -42,15 +41,9 @@ import com.google.inject.Inject; public class InstantiatedTaskMappingDecoderAcyclic<T extends InstantiatedTaskMappingEntry, C> extends ComposableDecoderBase<InstantiatedTaskMappingEncoding<T>, InstantiatedAcyclicTaskGraphEncoding<T, C>> { - - /** Representation of input system model */ - private SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Constructs a new decoder to generate {@link InstantiatedTaskGraphEncoding}. */ @Inject - public InstantiatedTaskMappingDecoderAcyclic( - SystemModelAdapter<C, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public InstantiatedTaskMappingDecoderAcyclic() { } /** {@inheritDoc} */ @@ -68,7 +61,8 @@ 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>(itgEnc.getTaskGraphs()); + new InstantiatedAcyclicTaskGraphEncoding<T, C>(itgEnc.getTaskGraphs(), + atgEnc.getHyperPeriod()); 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 c764bfa6..5449de7c 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 2b022c6eaf84224576a24b816cfc5a47c09635da RED +SFGraphDecoder.java 833d6662ea99c8c7b92ba229c117f200a0300667 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 320c2627..ac5f05de 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 @@ -46,9 +46,13 @@ import com.google.inject.Inject; public class SFGraphDecoder<C> extends ComposableDecoderBase<SafetyFunctionArchEncoding<C>, SafeTaskGraphEncoding<C>> implements ArchExpSubDecoder { + /** Task Graphs extracted from the input models. */ + Collection<TaskGraph> origTaskGraphs; + /** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */ @Inject - public SFGraphDecoder() { + public SFGraphDecoder(Collection<TaskGraph> origTaskGraphs) { + this.origTaskGraphs = origTaskGraphs; } /** {@inheritDoc} */ @@ -58,11 +62,15 @@ public class SFGraphDecoder<C> if(genotype == null) { return null; } + + @SuppressWarnings("unchecked") AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C> atgEnc = + phenotypetypeMap.getEncoding(AbstractTaskGraphEncoding.class); // TODO: we should dynamically retrieve the encoding here, since the statement below assumes // that this decoding step is performed before others. // FIXME: Find a way to pass the original taks graph. We might have a circular dependency // here. - SafeTaskGraphEncoding<C> encoding = new SafeTaskGraphEncoding<>(Collections.emptySet()); + SafeTaskGraphEncoding<C> encoding = + new SafeTaskGraphEncoding<>(origTaskGraphs, atgEnc.getHyperPeriod()); for(SafetyFunctionArchEntry<C> sFAEntry : genotype.getAllEntries()) { boolean diagPresent = sFAEntry.isDiagnosicUnitPresent(); 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 b74d77f8..5ad329f6 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 a443781caf223417b77a6163dcbb4d7df26f63ab RED -FaultDetectionVotingAbstractTaskMappingDecoder.java 2ab809a5ca6bd2530d0c8eec167d4aa0d9b1ab37 RED +AbstractTaskMappingDecoder.java 2f3aa1860a3f10224bd8f5eab4ee07f136f44065 RED +FailSilentAbstractTaskMappingDecoder.java 5e93b07f400d697f318d029d00c674c715513422 RED +FaultDetectionVotingAbstractTaskMappingDecoder.java 8d3613f856787bf667ef2bcdae441375cdb9e989 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/AbstractTaskMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java index 15cd38f1..52a08984 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/AbstractTaskMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/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.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.problem.Decoder; @@ -39,18 +38,12 @@ import com.google.inject.Inject; */ public abstract class AbstractTaskMappingDecoder<S extends InstantiatedTaskMappingEntry, T extends InstantiatedTaskMappingEncoding<S>> extends ComposableDecoderBase<AbstractTaskMappingEncoding, T> implements ArchExpSubDecoder { - - /** Reference to the {@link SystemModelAdapter} that handles input models for the DSE. */ - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Reference to the {@link DseSpecification} specification that defines the DSE. */ DseSpecification explorationDefinition; /** Constructs a new decoder that instantiates {@link AbstractTaskMappingEncoding}. */ @Inject - public AbstractTaskMappingDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { - this.systemModelAdapter = systemModelAdapter; + public AbstractTaskMappingDecoder(DseSpecification explorationDefinition) { this.explorationDefinition = explorationDefinition; } 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 edb981d8..2abf74f9 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 @@ -31,7 +31,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.moea.model.DseSpecification; /** @@ -44,10 +43,8 @@ public class FailSilentAbstractTaskMappingDecoder extends AbstractTaskMappingDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { /** Constructor. */ - public FailSilentAbstractTaskMappingDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { - super(systemModelAdapter, explorationDefinition); + public FailSilentAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { + super(explorationDefinition); } /** {@inheritDoc} */ 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 eee6b950..c8ec4052 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 @@ -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.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.moea.model.DseSpecification; import org.opt4j.core.problem.Decoder; @@ -44,10 +43,8 @@ public class FaultDetectionVotingAbstractTaskMappingDecoder extends AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> { /** Constructor. */ - public FaultDetectionVotingAbstractTaskMappingDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { - super(systemModelAdapter, explorationDefinition); + public FaultDetectionVotingAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { + super(explorationDefinition); } /** {@inheritDoc} */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings index 8f1f27b5..6f59fb7e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/.ratings @@ -1 +1 @@ -RepairModuleBase.java fa29abd77e23ccf196105cceac50e216d0384252 RED +RepairModuleBase.java 9e491c2e726c0d72370b3ae71813aed1a4932f83 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java index d7f221ab..8ad46913 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/repair/RepairModuleBase.java @@ -15,7 +15,6 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.repair; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IRepairModule; import org.opt4j.core.Genotype; @@ -25,15 +24,6 @@ import org.opt4j.core.Genotype; * @author diewald */ public abstract class RepairModuleBase<T extends Genotype> implements IRepairModule<T> { - - /** References the input model. */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - - /** Creates an evaluator for a given exploration goal */ - protected RepairModuleBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } - /** {@inheritDoc} */ @Override public String getIntrospectionLabel() { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings index 9318b140..de60db13 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/.ratings @@ -2,5 +2,5 @@ ArchExpSubSolution.java 3bb56206fe70f19f7cb6aee575eba552ce9bbc4e RED ArchitectureSolution.java 8ba40ce339c4195641ed1b67c79718e297d66e4c RED IExplorationSolution.java a6153937197358907ceec46606a7f28620c26f2b RED IScheduleSolution.java 8a2959147bdca874fd43b1591bc5471b68c04333 RED -StrictTTSchedule.java 3a6c9f1e00ff66a52bb2891c00a7ebb84ddf2192 RED +StrictTTSchedule.java eec7ffce1047cec7b869a938fd428e56cd705163 RED TimeSlot.java 499ba8b40aca05351c4baf03d104dd20e5eb19d1 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java index 156e81c0..d6685ea0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/StrictTTSchedule.java @@ -33,7 +33,6 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter; 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.ITransmissionUnitAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry; @@ -94,30 +93,22 @@ public class StrictTTSchedule<S extends TaskMappingEntry<ITaskAdapter<?>, Partit /** Maintain a reference to the encoding. */ private T encoding; - /** Representation of input system model */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** * Constructor that creates a time-triggered schedule for a given encoding (mapping) and * optionally directly performs the scheduling. */ - public StrictTTSchedule(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - T encoding) { + public StrictTTSchedule(T encoding) { + this.encoding = encoding; schedule = new HashMap<IResourceAdapter<?>, ResourceSchedule>(); timeSlotsOfMappingEntries = new HashMap<S, TimeSlot>(); - - this.systemModelAdapter = systemModelAdapter; - this.encoding = encoding; } /** Copy constructor. */ public StrictTTSchedule(StrictTTSchedule<S, T> schedule) { + this.encoding = schedule.encoding; this.schedule = new HashMap<IResourceAdapter<?>, ResourceSchedule>(); timeSlotsOfMappingEntries = new HashMap<S, TimeSlot>(); - this.systemModelAdapter = schedule.systemModelAdapter; - this.encoding = schedule.encoding; - for(Entry<IResourceAdapter<?>, ResourceSchedule> resSched : schedule.schedule.entrySet()) { ResourceSchedule newSched = new ResourceSchedule(); newSched.putAll(resSched.getValue()); @@ -163,8 +154,7 @@ public class StrictTTSchedule<S extends TaskMappingEntry<ITaskAdapter<?>, Partit } } } - if(compEncNum != compSchedNum && - systemModelAdapter.getScheduleableComponents().contains(comp)) { + if(compEncNum != compSchedNum && encoding.getRequesters().contains(comp)) { System.out.println("The number of scheduled Components of " + comp.getName() + " does not match the number defined in the Component->ExecutionUnit mapping."); if(enableScheduleException) { 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 f821eb6d..89f21dad 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 bd1e62664d97539f19cd5b631c02fc4323586af2 RED -FaultDetectionVotingExecModelFactory.java 0bbb870e645aa1dda912ce4a2cc9cf7157414681 RED +FailSilentExecModelFactory.java 5e9acef92029f7f1cabffb5c1d61f99168a075a6 RED +FaultDetectionVotingExecModelFactory.java 0357061405b68dcc9f02f17c14fb4bac2f0fd888 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 810396b4..4ee468ad 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 @@ -15,6 +15,8 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.sysmodel; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.FailSilentTaskMappingCreator; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.TaskMappingCreator; @@ -41,6 +43,7 @@ import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.DeadlineConstrai import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.PeriodConstraintEvaluator; import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.SafetyIntegrityLevelConstraintEvaluator; import org.fortiss.af3.exploration.alg.dse.evaluator.objective.FailSilentReliabilityEvaluator; +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.sched.proc.EDFSchedulerBase; import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.FailSilentEDFScheduler; @@ -92,42 +95,40 @@ public class FailSilentExecModelFactory /** {@inheritDoc} */ @Override - public MutateAllocation<?, ?> createMutateAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter); + public MutateAllocation<?, ?> + createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { + return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MutateRedundancyDecrement<?, ?> + createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyDecrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter); + tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MutateRedundancyIncrement<?, ?> + createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyIncrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter); + tasks); } /** {@inheritDoc} */ @Override - public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { + public CrossoverRandManyAllocation<?, ?> + createCrossoverRandManyAllocationOperator(double rate) { return new CrossoverRandManyAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter, rate); + rate); } /** {@inheritDoc} */ @Override - public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { + public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(double rate) { return new CrossoverSingleAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter, rate); + rate); } /* Construct Decoders for the genotypes, aka task mappings. */ @@ -135,10 +136,8 @@ public class FailSilentExecModelFactory /** {@inheritDoc} */ @Override public AbstractTaskMappingDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createAbstractTaskMappingDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { - return new FailSilentAbstractTaskMappingDecoder(systemModelAdapter, explorationDefinition); + createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { + return new FailSilentAbstractTaskMappingDecoder(explorationDefinition); } /** {@inheritDoc} */ @@ -146,26 +145,23 @@ public class FailSilentExecModelFactory @Override // TODO: identify why a warning is generated here. public InstantiatedTaskMappingDecoderAcyclic<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createAbstractToAcyclicTaskGraphDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new InstantiatedTaskMappingDecoderAcyclic(systemModelAdapter); + createAbstractToAcyclicTaskGraphDecoder() { + return new InstantiatedTaskMappingDecoderAcyclic(); } /** {@inheritDoc} */ @Override public MessageDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new MessageDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>( - systemModelAdapter); + createMessageDecoder() { + return new MessageDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>(); } /** {@inheritDoc} */ @Override public StrictTTDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> - createStrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { + createStrictTTDecoder(DseSpecification explorationDefinition) { return new StrictTTDecoder<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding>( - systemModelAdapter, explorationDefinition); + explorationDefinition); } /** @@ -173,10 +169,8 @@ public class FailSilentExecModelFactory * given execution model */ @Override - public EDFSchedulerBase<?, ?> createEDFScheduler( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - return new FailSilentEDFScheduler(systemModelAdapter, expSpec); + public EDFSchedulerBase<?, ?> createEDFScheduler(ExplorationSpecification expSpec) { + return new FailSilentEDFScheduler(expSpec); } /* Construct Evaluators for Optimization Goals. */ 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 03c96e2c..b8c7d062 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 @@ -15,6 +15,8 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.sysmodel; +import java.util.Collection; + import org.fortiss.af3.exploration.alg.dse.TaskMappingFactory; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.FaultDetectionVotingTaskMappingCreator; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.create.taskmapping.TaskMappingCreator; @@ -41,6 +43,7 @@ import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.DeadlineConstrai import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.PeriodConstraintEvaluator; import org.fortiss.af3.exploration.alg.dse.evaluator.constraint.SafetyIntegrityLevelConstraintEvaluator; import org.fortiss.af3.exploration.alg.dse.evaluator.objective.FaultDetectionVotingReliabilityEvaluator; +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.sched.proc.EDFSchedulerBase; import org.fortiss.af3.exploration.alg.dse.sysmodel.sched.proc.FaultDetectionVotingEDFScheduler; @@ -95,42 +98,40 @@ public class FaultDetectionVotingExecModelFactory extends /** {@inheritDoc} */ @Override - public MutateAllocation<?, ?> createMutateAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter); + public MutateAllocation<?, ?> + createMutateAllocationOperator(Collection<ITaskAdapter<?>> tasks) { + return new MutateAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>(tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyDecrement<?, ?> createMutateRedundancyDecrementOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MutateRedundancyDecrement<?, ?> + createMutateRedundancyDecrementOperator(Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyDecrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter); + tasks); } /** {@inheritDoc} */ @Override - public MutateRedundancyIncrement<?, ?> createMutateRedundancyIncrementOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { + public MutateRedundancyIncrement<?, ?> + createMutateRedundancyIncrementOperator(Collection<ITaskAdapter<?>> tasks) { return new MutateRedundancyIncrement<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter); + tasks); } /** {@inheritDoc} */ @Override - public CrossoverRandManyAllocation<?, ?> createCrossoverRandManyAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { + public CrossoverRandManyAllocation<?, ?> + createCrossoverRandManyAllocationOperator(double rate) { return new CrossoverRandManyAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter, rate); + rate); } /** {@inheritDoc} */ @Override - public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, double rate) { + public CrossoverSingleAllocation<?, ?> createCrossoverSingleAllocationOperator(double rate) { return new CrossoverSingleAllocation<AbstractTaskMappingEntry, AbstractTaskMappingEncoding>( - systemModelAdapter, rate); + rate); } /* @@ -140,11 +141,8 @@ public class FaultDetectionVotingExecModelFactory extends /** {@inheritDoc} */ @Override public AbstractTaskMappingDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createAbstractTaskMappingDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { - return new FaultDetectionVotingAbstractTaskMappingDecoder(systemModelAdapter, - explorationDefinition); + createAbstractTaskMappingDecoder(DseSpecification explorationDefinition) { + return new FaultDetectionVotingAbstractTaskMappingDecoder(explorationDefinition); } /** {@inheritDoc} */ @@ -152,34 +150,29 @@ public class FaultDetectionVotingExecModelFactory extends @Override // TODO: identify why a warning is generated here. public InstantiatedTaskMappingDecoderAcyclic<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createAbstractToAcyclicTaskGraphDecoder( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new InstantiatedTaskMappingDecoderAcyclic(systemModelAdapter); + createAbstractToAcyclicTaskGraphDecoder() { + return new InstantiatedTaskMappingDecoderAcyclic(); } /** {@inheritDoc} */ @Override public MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createMessageDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - return new MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>( - systemModelAdapter); + createMessageDecoder() { + return new MessageDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>(); } /** {@inheritDoc} */ @Override public StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> - createStrictTTDecoder(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - DseSpecification explorationDefinition) { + createStrictTTDecoder(DseSpecification explorationDefinition) { return new StrictTTDecoder<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding>( - systemModelAdapter, explorationDefinition); + explorationDefinition); } /** {@inheritDoc} */ @Override - public EDFSchedulerBase<?, ?> createEDFScheduler( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - return new FaultDetectionVotingEDFScheduler(systemModelAdapter, expSpec); + public EDFSchedulerBase<?, ?> createEDFScheduler(ExplorationSpecification expSpec) { + return new FaultDetectionVotingEDFScheduler(expSpec); } /* Construct Evaluators for Optimization Goals. */ 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 aeefd7b7..cfdc8484 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 d6ce52abad1f440e9df1c6a3e6bb98cfcfc86bfd RED +SystemModelAdapter.java 3621d4aaaeb8b5913194dc4cc6182c20f305149b 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 5b01009a..f92341ec 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 @@ -310,7 +310,7 @@ public class SystemModelAdapter<C, E, SO, SI, G, TR, M> { initEncProvider.registerInputEncoding( new AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, C>( - (Collection<? extends DefaultTaskGraph<?>>)getTaskGraphs())); + (Collection<? extends DefaultTaskGraph<?>>)getTaskGraphs(), hyperPeriod)); } /** diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings index a63fe482..1ddc3c73 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/.ratings @@ -1,5 +1,5 @@ AcyclicTaskGraph.java c8fa01f3ad30f0cc5980838636355a2e041b5cbb RED -DefaultTaskGraph.java 783c347f7fd5a5bcd3bc3a643e9284bd3e27e9a3 RED +DefaultTaskGraph.java 8c384e8dfd6f9806a04b68b45855ba75dd558a50 RED SignalAdapterWeightedEdge.java 6b7dbae1c2e7a658b33c3c7a584cee13b2269891 RED TaskGraph.java 90289a46be5c6ad658a06f4ff17d6da648fc97e8 RED TaskGraphInstantiator.java bfda013ddc6f4a9d2b063dfa7187827be1cdac73 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java index 682aebc4..d93154c7 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/DefaultTaskGraph.java @@ -26,7 +26,6 @@ import java.util.TreeSet; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISignalAdapter; 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.faultmodel.FaultDetector; import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration; import org.fortiss.af3.exploration.alg.graph.display.JGraphTVisualizer; @@ -44,8 +43,7 @@ import com.google.common.collect.Multimap; * <p> * The TaskGraph represents the data dependencies of a single connected component between the * deployable components (= tasks) of a systems (Tasks = vertices, channels of logical architecture - * = edges). Therefore, a system typically consists of multiple {@link DefaultTaskGraph}s that are - * owned by the corresponding {@link SystemModelAdapter} instance. + * = edges). Therefore, a system typically consists of multiple {@link DefaultTaskGraph}s. * </p> * The TaskGraph also contains * <ul> diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings index d953d608..39ee99a8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/.ratings @@ -1,2 +1,2 @@ Message.java e6aeffa00605318214ba100758b988b500acfe8c RED -MessageGenerator.java ad42c711bd25bb413cbcab3073c62e13ce3c9c07 RED +MessageGenerator.java 841882d4cce69b7bb6cfa4dea4331f7dcfdb0038 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java index 874c43be..13d7678c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/MessageGenerator.java @@ -17,19 +17,22 @@ package org.fortiss.af3.exploration.alg.dse.sysmodel.comm; import static org.fortiss.tooling.common.util.LambdaUtils.filterSet; +import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.comm.constraint.InternalIsolatedCommunicationSet; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskgraph.AbstractTaskGraphEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEncoding; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.TaskMappingEntry; +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.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ISignalAdapter; 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 org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry; /** @@ -40,20 +43,12 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry; * @author diewald */ public class MessageGenerator<S extends TaskMappingEntry<ITaskAdapter<?>, Partition>, T extends TaskMappingEncoding<ITaskAdapter<?>, S>> { - - /** Reference to the systemModel. */ - private SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - - /** Constructor. */ - public MessageGenerator(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; - } - /** * Generates messages from the given {#link encoding}. This methods evaluates the {#link * encoding} */ - public Collection<Message> generateMessages(T encoding) { + public Collection<Message> generateMessages(T encoding, + AbstractTaskGraphEncoding<AbstractTaskMappingEncoding, ?> atgEnc) { Collection<Message> generatedMessages = new HashSet<Message>(); // TODO: represent the signals in the task graph: do not use the systemModelAdapter here. @@ -64,9 +59,12 @@ public class MessageGenerator<S extends TaskMappingEntry<ITaskAdapter<?>, Partit senderComponent = senderComponent.getReplacedComponent(); } + TaskGraph tg = atgEnc.getTaskGraphOf(senderComponent); + @SuppressWarnings("unchecked") Collection<ISignalAdapter<?, ?>> emittedMessages = - (Collection<ISignalAdapter<?, ?>>)(Collection<?>)systemModelAdapter - .getEmmittedMessages(senderComponent); + new ArrayList<>(); + tg.getGraph().outgoingEdgesOf(senderComponent) + .forEach(e -> emittedMessages.add(e.getSignalAdapter())); Collection<InternalIsolatedCommunicationSet> allIsoCommConstr = encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings index a4c072e4..5aa80abe 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/.ratings @@ -1,3 +1,3 @@ IMessageRouter.java 502b0083ba82de6a70813c4c7ca9606ebb2ba65f RED -MessageRouter.java 8321c78da99168793bcfb8a4e00798e81c9867d2 RED -ShortestPathRouter.java 9f42506455648f6ee2171f1fcf29ab0deb4389b1 RED +MessageRouter.java 8dd059bfa4dabdf1939fb8e46d0499cf2a13664d RED +ShortestPathRouter.java 1b82cb1fe083ec06411d399ef37d3fdddc7993aa RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java index 3e86aba3..3a0cbe36 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/MessageRouter.java @@ -22,7 +22,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding; 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.comm.Message; import org.jgrapht.DirectedGraph; import org.jgrapht.graph.DefaultEdge; @@ -34,10 +33,6 @@ import org.jgrapht.graph.DefaultEdge; * @author diewald */ public class MessageRouter implements IMessageRouter { - - /** Representation of input system model */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** The actual message router that implements a routing strategy. */ private IMessageRouter delegate; @@ -45,8 +40,7 @@ public class MessageRouter implements IMessageRouter { private Map<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>> messagesRoutes; /** Constructs a scheduler for a given input model. */ - public MessageRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - this.systemModelAdapter = systemModelAdapter; + public MessageRouter() { messagesRoutes = new ConcurrentHashMap<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>>(); } @@ -59,7 +53,7 @@ public class MessageRouter implements IMessageRouter { // For now, we have only one routing strategy, so define the delegate if it is not already // constructed. Later, the specific routers can be constructed here, if needed. if(delegate == null) { - delegate = new ShortestPathRouter(systemModelAdapter); + delegate = new ShortestPathRouter(); } Map<Message, DirectedGraph<IResourceAdapter<?>, DefaultEdge>> messagesRoutes = diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java index 9644036c..5625b318 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/ShortestPathRouter.java @@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.platform.PlatformCommunicationGraphEncoding; 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.comm.Message; import org.jgrapht.DirectedGraph; import org.jgrapht.Graphs; @@ -42,15 +41,12 @@ import org.jgrapht.graph.DirectedSubgraph; * @author diewald */ public class ShortestPathRouter extends MessageRouter { - /** Buffers the already calculated shortest paths for the sender {@link IResourceAdapter}. */ @SuppressWarnings("unused") private Map<IResourceAdapter<?>, BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>> shortestPathForSender; /** Constructs a simple shortest path router for a given exploration run */ - public ShortestPathRouter(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) { - super(systemModelAdapter); - + public ShortestPathRouter() { // TODO: Replace with more efficient Dijkstra, which needs an modification to contain the // shortest paths to all other vertices in the graph. shortestPathForSender = diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings index 182ddfea..73faf2e3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/.ratings @@ -1,2 +1,2 @@ ScheduleRuntimeException.java d682adaaaff3d366cc6b55dd9c8e9c30bbc51152 RED -SchedulerBase.java 7114bbf9feacb82978caeac83980ab1b8241d282 RED +SchedulerBase.java a80ea719f9bfc7d3298515e343b725208d5c1e9f RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java index 46397550..e6e6cde6 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/SchedulerBase.java @@ -21,7 +21,6 @@ import java.util.Map; import java.util.stream.Collectors; 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.model.ExplorationSpecification; import org.fortiss.af3.exploration.model.ExplorationTarget; import org.fortiss.af3.exploration.model.time.DeadlineConstraint; @@ -35,9 +34,6 @@ public class SchedulerBase { /** Precision for double */ protected final static int DOUBLE_PRECISION = 10; - /** Representation of input system model */ - protected SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter; - /** Contains the References to the {@link ExplorationTarget}s related to timing. */ protected Collection<DeadlineConstraint> deadlines; @@ -48,9 +44,7 @@ public class SchedulerBase { protected Map<DeadlineConstraint, ITaskAdapter<?>> deadlineTargetComponent; /** Constructs a scheduler for a given input model. */ - public SchedulerBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - this.systemModelAdapter = systemModelAdapter; + public SchedulerBase(ExplorationSpecification expSpec) { this.deadlines = expSpec.getTargets().stream().filter(t -> (t instanceof DeadlineConstraint)) .map(DeadlineConstraint.class::cast).collect(Collectors.toList()); @@ -58,7 +52,7 @@ public class SchedulerBase { componentDeadlineSourceMap = new HashMap<ITaskAdapter<?>, DeadlineConstraint>(); deadlineTargetComponent = new HashMap<DeadlineConstraint, ITaskAdapter<?>>(); - createComponentDeadlineMap(); + // createComponentDeadlineMap(); } /** @@ -68,20 +62,19 @@ public class SchedulerBase { * <li>a map that relates * {@link DeadlineConstraint}s with its "target" {@link ITaskAdapter}s. */ - private void createComponentDeadlineMap() { - if(deadlines == null) { - return; - } - - for(DeadlineConstraint currentDeadline : deadlines) { - for(ITaskAdapter<?> deployableComponent : systemModelAdapter - .getDeployableComponents()) { - if(deployableComponent.getObject() == currentDeadline.getStartComponent()) { - componentDeadlineSourceMap.put(deployableComponent, currentDeadline); - } else if(deployableComponent.getObject() == currentDeadline.getEndComponent()) { - deadlineTargetComponent.put(currentDeadline, deployableComponent); - } - } - } - } + // private void createComponentDeadlineMap() { + // if(deadlines == null) { + // return; + // } + // + // for(DeadlineConstraint currentDeadline : deadlines) { + // for(ITaskAdapter<?> deployableComponent : schedule) { + // if(deployableComponent.getObject() == currentDeadline.getStartComponent()) { + // componentDeadlineSourceMap.put(deployableComponent, currentDeadline); + // } else if(deployableComponent.getObject() == currentDeadline.getEndComponent()) { + // deadlineTargetComponent.put(currentDeadline, deployableComponent); + // } + // } + // } + // } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings index aae4aefe..ebcee155 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/.ratings @@ -1 +1 @@ -TDMABusScheduler.java bb1c12e4869678eab21f3e52ba6b5f1ef65023f2 RED +TDMABusScheduler.java b711592d931474543263e86dccd3b5ac39b17f22 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java index cbec0226..20b532bc 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/comm/TDMABusScheduler.java @@ -43,7 +43,6 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IGatewayUnitAdapter; 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.ITransmissionUnitAdapter; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.AcyclicTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.comm.Message; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.comm.IMessageRouter; @@ -73,10 +72,9 @@ public class TDMABusScheduler<S extends InstantiatedTaskMappingEntry, T extends private IMessageRouter messageRouter; /** Constructs a {@link TDMABusScheduler} for a given input model. */ - public TDMABusScheduler(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - super(systemModelAdapter, expSpec); - this.messageRouter = new ShortestPathRouter(systemModelAdapter); + public TDMABusScheduler(ExplorationSpecification expSpec) { + super(expSpec); + this.messageRouter = new ShortestPathRouter(); } /** Add simple TDMA bus schedule / communication time to a pure task schedule. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings index fb9132f6..ecbc1135 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/.ratings @@ -1,3 +1,3 @@ -EDFSchedulerBase.java eb253ffeff2b7bd71467dc4459c7f4051c3c0c0a RED -FailSilentEDFScheduler.java a2b809f6d8162be4483900a83c60b1c9a9ad0341 RED -FaultDetectionVotingEDFScheduler.java ba3a487c9c995d4e1a49a6e646532f893bb5ab92 RED +EDFSchedulerBase.java 8bbcd90eeb796de2072d74cd7b669083c2b1bb73 RED +FailSilentEDFScheduler.java 14c2fbb0ece5087d7c004fb372ad83fa6e85e5cc RED +FaultDetectionVotingEDFScheduler.java 0d34f4702e29c2610b26656ca07288cfb8b5012e RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java index 040c5820..a8da54ef 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/EDFSchedulerBase.java @@ -40,7 +40,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot; 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.AcyclicTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; @@ -251,18 +250,16 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T } /** Constructs a simple EDF scheduler for a given exploration run */ - public EDFSchedulerBase(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - super(systemModelAdapter, expSpec); + public EDFSchedulerBase(ExplorationSpecification expSpec) { + super(expSpec); } /** * Creates and returns a release queue for the given {@link TaskMappingEncoding}. A release * queue contains those {@link SchedulingObject}s which remain to be scheduled. */ - private synchronized SortedSet<SchedulingObject> createReleaseQueue( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - InstantiatedAcyclicTaskGraphEncoding<S, ?> acycItgEnc) { + private synchronized SortedSet<SchedulingObject> + createReleaseQueue(InstantiatedAcyclicTaskGraphEncoding<S, ?> acycItgEnc) { SchedulingObjectComparator EDFTopologicalComparator = new SchedulingObjectComparator(acycItgEnc); TreeSet<SchedulingObject> releaseQueue = @@ -278,8 +275,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T while(iter.hasNext()) { ITaskAdapter<?> deployableComponent = iter.next(); // create the instance of each hyper-period - for(int i = 0; i < systemModelAdapter.getHyperPeriod() / - taskGraph.getPeriod(); i++) { + for(int i = 0; i < acycItgEnc.getHyperPeriod() / taskGraph.getPeriod(); i++) { double releasetime = i * taskGraph.getPeriod(); double effectiveDeadline = releasetime + taskGraph.getPeriod(); @@ -329,8 +325,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T */ public void schedule(InstantiatedAcyclicTaskGraphEncoding<S, ?> acycItgEnc, PartitionMappingEncoding partEnc, T taskMapping, StrictTTSchedule<S, T> schedule) { - SortedSet<SchedulingObject> releaseQueue = - createReleaseQueue(systemModelAdapter, acycItgEnc); + SortedSet<SchedulingObject> releaseQueue = createReleaseQueue(acycItgEnc); // Create copy of release queue if(releaseQueue.isEmpty()) { throw new RuntimeException("Scheduler failed..."); @@ -386,7 +381,7 @@ public abstract class EDFSchedulerBase<S extends InstantiatedTaskMappingEntry, T ITaskAdapter<?> targetDeployableComponent = deadlineTargetComponent.get(currentDeadline); TaskGraph tgOfDeadlineTarget = - systemModelAdapter.getAcyclicTaskGraph(targetDeployableComponent); + acycItgEnc.getTaskGraphOf(targetDeployableComponent); Collection<ITaskAdapter<?>> deadlineTargetPredescessors = Graphs.predecessorListOf(tgOfDeadlineTarget.getDelegateGraph(), targetDeployableComponent); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java index 64f7d4ab..6dcfc322 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FailSilentEDFScheduler.java @@ -28,7 +28,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot; 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.model.ExplorationSpecification; /** @@ -40,9 +39,8 @@ public class FailSilentEDFScheduler extends EDFSchedulerBase<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> { /** Constructs a simple EDF scheduler for a given exploration run */ - public FailSilentEDFScheduler(SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - super(systemModelAdapter, expSpec); + public FailSilentEDFScheduler(ExplorationSpecification expSpec) { + super(expSpec); } /** diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java index 059f98c7..af93ad1d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/sched/proc/FaultDetectionVotingEDFScheduler.java @@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedu import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot; 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.AcyclicTaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.SignalAdapterWeightedEdge; import org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel.FaultDetector; @@ -42,10 +41,8 @@ public class FaultDetectionVotingEDFScheduler extends EDFSchedulerBase<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> { /** Constructs a simple EDF scheduler for a given exploration run */ - public FaultDetectionVotingEDFScheduler( - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter, - ExplorationSpecification expSpec) { - super(systemModelAdapter, expSpec); + public FaultDetectionVotingEDFScheduler(ExplorationSpecification expSpec) { + super(expSpec); } /** 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 fb01f2d1..08bc0aa0 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 @@ -5,7 +5,7 @@ IExplorationContraintTransformationModule.java a7ab4345519341a13ec2de1879c7efbd9 IExplorationEncoding.java 510843700127afb540eda56934dbac3726b63529 RED IExplorationEvaluatationService.java 0b4af374a83386f3ac0e7fa8ba47b571da6fe58a RED IExplorationModule.java 8990c654e649f043fa9813b8bf9113ac7bd42d27 RED -IExplorationRepairService.java 173f7631650eec36de1b001ced15547bda4df82a RED +IExplorationRepairService.java e923c43c49e0c83daef71707d5fdb66444f859f8 RED IExplorationService.java 891b8c4ce01e40ab31bf69231a63fd61c57ac98e RED IExplorationTargetEvaluator.java 9b39b44f64ad8195583b00f8e3852bbc912f75fc RED IExplorationTransformationService.java aa63b9453ad395a111016cfd7fa7a30f35f4ea17 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java index 482ea809..9fdbc6c6 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/IExplorationRepairService.java @@ -17,7 +17,6 @@ package org.fortiss.af3.exploration.alg.service; import java.util.List; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.exception.ExplorationException; import org.opt4j.core.Genotype; @@ -35,12 +34,10 @@ public interface IExplorationRepairService extends IExplorationService<IRepairMo * * @param genotype * {@link Genotype} that could be repaired. - * @param systemModelAdapter - * current {@link SystemModelAdapter} of the DSE. * @return List of applicable {@link IRepairModule}s (in order). * @throws ExplorationException * if any applicable {@link IRepairModule} could not be instantiated. */ - <T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) throws ExplorationException; + <T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype) + throws ExplorationException; } 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 4c6b32d1..b3e401f2 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 +ExplorationRepairService.java ac50a5e53792c6793ff4b8ad5aa9812141990f5c RED ExplorationTransformationService.java 96640353f12abd867378b84b5437811ca7996d8f RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java index ea56523c..940ceda7 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/service/internal/ExplorationRepairService.java @@ -100,8 +100,7 @@ public class ExplorationRepairService extends ObjectAwareServiceBase<IRepairModu /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override - public <T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype, - SystemModelAdapter<?, ?, ?, ?, ?, ?, ?> systemModelAdapter) + public <T extends Genotype> List<IRepairModule<T>> getRepairFunctionsOf(T genotype) throws ExplorationException { List<IRepairModule<T>> repairModuleInstances = new ArrayList<>(); Collection<IRepairModule<?>> registeredHandlers = @@ -113,7 +112,7 @@ public class ExplorationRepairService extends ObjectAwareServiceBase<IRepairModu Constructor<IRepairModule<T>> extConstructor = (Constructor<IRepairModule<T>>)curModuleTemplate.getClass() .getConstructor(SystemModelAdapter.class); - moduleInstance = extConstructor.newInstance(systemModelAdapter); + moduleInstance = extConstructor.newInstance(); } catch(Exception e) { throw new ExplorationException( "Could not instantiate the repair module from its registered template. Please check if the required Constructors are present.", -- GitLab