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 6278617d23fcaedad5c5f13dc764edf214ef6962..949d73e7654184b6f704266dc162a13e451787ee 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 e8a221bb175a30be7d4e780c58c2ba809980c47b RED -Explorer.java 367aeeeeb26d22791c640e1b74c0af43277a3037 RED +DSEFactory.java 4a1dab2f05976a1bd191aef340b94b62ef0c6ece RED +Explorer.java b14a77607cfadf81aed523d7b53b14559482c44c RED ImplicitExplorationTargetFactory.java 7ce651a2161c71a2a90acf0f32b1e50ee23f160f RED SolutionQuantification.java efd31f192c3adbf1a4434452a19eb836a17390e2 RED -TaskMappingFactory.java f8f5541a563b46050daaf1c6a854c233e90792f7 RED +TaskMappingFactory.java 5c01939ddbc3bf44d81094f4112dbd301a26dee4 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 59585161d4a0b6de7ebc63e20254e43b9f363fdf..71a21ce4469575d71650372b3896ad717c403048 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 @@ -122,7 +122,7 @@ public class DSEFactory { createSafetyFunctionArchProblem(archExpProblemModule, systemModelAdapter, execDepGraph); } createPartitionMappingProblem(archExpProblemModule, dse, systemModelAdapter, execDepGraph); - createPlatformCommunicationGraphProblem(archExpProblemModule, dse, systemModelAdapter, + createPlatformCommunicationGraphProblem(archExpProblemModule, systemModelAdapter, execDepGraph); createAbstractTaskMappingProblem(tmFactory, archExpProblemModule, dse, systemModelAdapter, execDepGraph); @@ -211,8 +211,14 @@ public class DSEFactory { archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders); } + /** + * Creates a subproblem to obtain a flat graph of the communication network of target platform. + * It is intended to connect the virtual and physical architecture. The implementation as an + * encoding allows to consider changes made to the target platform during the exploration. + */ + @SuppressWarnings("unchecked") private void createPlatformCommunicationGraphProblem( - ArchitectureExplorationProblemModule archExpProblemModule, DseSpecification dse, + ArchitectureExplorationProblemModule archExpProblemModule, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, DecoderDependencyGraph execDepGraph) throws CycleFoundException { Class<PlatformCommunicationGraphEncoding> pmEnodingClass = @@ -223,7 +229,6 @@ public class DSEFactory { @SuppressWarnings("rawtypes") List<ComposableDecoder> pmDecoders = new ArrayList<>(); PartitionMappingDecoderGraph pmgDecoder = new PartitionMappingDecoderGraph(); pmDecoders.add(pmgDecoder); - // pmCreator.registerAssocDecoders(pmgDecoder); archExpProblemModule.registerSubProblem(pmEnodingClass, pmCreator, pmDecoders); } @@ -335,6 +340,7 @@ public class DSEFactory { * @throws UnsupportedDataTypeException * if the given {@link ExecutionModel} is not "wrapped" to factory in this method. */ + @SuppressWarnings("unchecked") public <S extends TaskMappingEntry<?, Partition>> TaskMappingFactory<?, ? extends TaskMappingEncoding<?, S>> createTaskMappingFactory(ExecutionModel execModel) throws UnsupportedDataTypeException { 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 d54f5164837b0919fed952abba078c72bc4a8b0b..332d72132a0e20f5625009e38f89ab924169bf8c 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 b647535f92ebdf1e428757f6fe1e918964feb4f2 RED +Opt4JExplorerBackend.java 1cbe89233576aa55d6705b92fc31934a5f4eb584 RED Opt4JSingleExplorationSolution.java 5b9e6ccdb887605faaa4d2a8b17b8fa1350fbafd RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings index eb213614bbe296005a54e5caad43d3a440dc94c6..372551f4cf55a5f447a4959471eae289169ed15a 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/partitionmapping/.ratings @@ -1 +1 @@ -PartitionMappingCreator.java 9c831443bf9cdc547dede8df28dcaf8cfac3ab55 RED +PartitionMappingCreator.java dd76847eaeb119609c58ea7412cd9ae4330d7a7e RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings new file mode 100644 index 0000000000000000000000000000000000000000..81bd771cfcdb16902b25dfdcd63e5334eeff8666 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/create/platform/.ratings @@ -0,0 +1 @@ +PlatformCommunicationGraphCreator.java dca11304889fd796f721c4035940290a602659fb RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings index eb47cb8ca83aad42d5da801e4dcfca05dddee997..cd67613f83ab4b3a5d190db9e89f05a1d132ad14 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/.ratings @@ -1,4 +1,4 @@ ArchExpSubEncoding.java 60e13a2cb13bb36e9f8f7149f322dbed5398eafb RED ArchitectureExplorationEncoding.java e7ff265079ae5838bf84abf9d05712409031a970 RED -MappingEncoding.java f7db94bf2af8dd5817ad564135d226301c6b41d5 RED -MappingEntryBase.java f173c8ee60dd175e9bc1240d1e1cc14d46d24d69 RED +MappingEncoding.java f23852b2e5ae6e327a6c5609142e0307ca6bf5a1 RED +MappingEntryBase.java 11073c027f7f28dfa1a8a3fe80cca68b0a66b48a RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java index 80c2fe78cad8d05172a9b6c9a29b07c590879d59..7d6c8ae741085a1054055974a183f812499ed7dd 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEncoding.java @@ -119,6 +119,7 @@ public abstract class MappingEncoding<G extends Genotype, S extends IRequestAdap return allocationMap.keySet(); } + /** {@inheritDoc} */ @Override public abstract MappingEncoding<G, S, T, M> clone(); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java index 057c56f8940e520cf9015b6ef6004a99a7116777..68a351fc19172030549cfee65b239f691aa6e78c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/MappingEntryBase.java @@ -27,6 +27,8 @@ import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.MutableClassToInstanceMap; /** + * Base class for {@link IMappingEntry}s. Defines fields for source and target allocations plus + * associated mapping entries residing in other {@link MappingEncoding} than the current one. * * @author diewald */ @@ -42,6 +44,7 @@ public abstract class MappingEntryBase<S extends IRequestAdapter<?>, T extends I protected ClassToInstanceMap<IMappingEntry<S, T>> associatedEntries = MutableClassToInstanceMap.create(); + /** Constructor. */ public MappingEntryBase(S source, T target) { this.source = source; this.target = target; @@ -84,6 +87,7 @@ public abstract class MappingEntryBase<S extends IRequestAdapter<?>, T extends I return associatedEntries.getInstance(type); } + /** {@inheritDoc} */ @Override public abstract IMappingEntry<S, T> clone(); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings index 11c83e6fb40d90852db276c40606e2dea9db99bd..e4348f7ddd25ab2c673761251f5822f47b266618 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/.ratings @@ -1 +1 @@ -InternalIsolatedCommunicationSet.java 3957bb1e915e770b731e671900913a135b78b475 RED +InternalIsolatedCommunicationSet.java 250ff5f0ee41829b051b4c597810ae80dc73a0cc RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java index dc7d4e68c0395e98744e25237e02c89cbe234615..de9b8f9b505c8abc468d7005636e7f5b09779d7a 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java @@ -48,9 +48,9 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl private boolean isSoft = false; - private Set<IMappingEntry> isolatedCommunicationSet; + private Set<IMappingEntry<?, ?>> isolatedCommunicationSet; - public InternalIsolatedCommunicationSet(Set<IMappingEntry> isolatedCommunicationSet) { + public InternalIsolatedCommunicationSet(Set<IMappingEntry<?, ?>> isolatedCommunicationSet) { this.isolatedCommunicationSet = isolatedCommunicationSet; } @@ -121,30 +121,32 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl // NOP. } - public Set<IMappingEntry> getIsolatedCommunicationSet() { + public Set<IMappingEntry<?, ?>> getIsolatedCommunicationSet() { return isolatedCommunicationSet; } - public void setIsolatedCommunicationSet(Set<IMappingEntry> isolatedCommunicationSet) { + public void setIsolatedCommunicationSet(Set<IMappingEntry<?, ?>> isolatedCommunicationSet) { this.isolatedCommunicationSet = isolatedCommunicationSet; } - public void addToIsolatedCommunicationSet(Collection<? extends IMappingEntry> addEntries) { + public void + addToIsolatedCommunicationSet(Collection<? extends IMappingEntry<?, ?>> addEntries) { this.isolatedCommunicationSet.addAll(addEntries); } - public void removeFromIsolatedCommunicationSet(Collection<? extends IMappingEntry> rmEntries) { + public void removeFromIsolatedCommunicationSet( + Collection<? extends IMappingEntry<?, ?>> rmEntries) { this.isolatedCommunicationSet.removeAll(rmEntries); } - public void replaceEntry(IMappingEntry oldEntry, IMappingEntry newEntry) { + public void replaceEntry(IMappingEntry<?, ?> oldEntry, IMappingEntry<?, ?> newEntry) { this.isolatedCommunicationSet.remove(oldEntry); this.isolatedCommunicationSet.add(newEntry); } public void replaceEntriesIfPresent( - Map<? extends IMappingEntry, ? extends IMappingEntry> replacementMap) { - for(Entry<? extends IMappingEntry, ? extends IMappingEntry> entry : replacementMap + Map<? extends IMappingEntry<?, ?>, ? extends IMappingEntry<?, ?>> replacementMap) { + for(Entry<? extends IMappingEntry<?, ?>, ? extends IMappingEntry<?, ?>> entry : replacementMap .entrySet()) { if(contains(entry.getKey())) { replaceEntry(entry.getKey(), entry.getValue()); @@ -152,7 +154,7 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl } } - public boolean contains(IMappingEntry entry) { + public boolean contains(IMappingEntry<?, ?> entry) { return isolatedCommunicationSet.contains(entry); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings index d9a7bac001845a085ac17b0bdbf47501ba08b341..34061c3613d523b667df82075b32b170431beec6 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/.ratings @@ -1,3 +1,3 @@ Partition.java b870fdd306818d8195b662daee9546feebb28e18 RED -PartitionMappingEncoding.java 91d0233fc1e2301b40cc955defa82dafadc724df RED -PartitionMappingEntry.java 16130a3bd2f157c4f5f5ef6cb91d1b72137f0acd RED +PartitionMappingEncoding.java 09dd8deba0a922ba9f5bdf8138676e945095edfc RED +PartitionMappingEntry.java 2f8f082e6bcd49dbe2f5ba88724850b54b20d637 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java index 1ad321a36bb05cc343b939e2d6ce7f63a1ec1b79..9968729f9f35c58850e1f8022ad3d7f7e6f0c4b3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/partitionmapping/PartitionMappingEncoding.java @@ -36,10 +36,18 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.random.RandomExploration; public class PartitionMappingEncoding extends MappingEncoding<PartitionMappingEncoding, Partition, IResourceAdapter<?>, PartitionMappingEntry> implements ComposableGenotype, Cloneable { + /** Set of physical target resources, i.e., execution units. */ private Collection<? extends IResourceAdapter<?>> targetSet; + /** Strategy that defines how the initial mapping is constructed. */ public enum CREATE_STARTEGY { - MIN_SET, RANDOM_SET, MAX_SET + /** One Partition per physical execution unit. */ + MIN_SET, + /** Random number of partitions per physical execution unit. */ + RANDOM_SET, + + /** Same number of partitions per physical execution units as tasks exist in the system. */ + MAX_SET } /** Constructor. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings new file mode 100644 index 0000000000000000000000000000000000000000..6b254b2338b996a443e9ddbf3957a5760823e563 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/.ratings @@ -0,0 +1 @@ +PlatformCommunicationGraphEncoding.java 92da4ce692afa447c13769a3bda1f3bb1fa7d783 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java index 7128803a0c438a32e9c9868caa3161b3d3c94af9..7fb776aeace0add8459875a3387113be425c7713 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/platform/PlatformCommunicationGraphEncoding.java @@ -84,8 +84,6 @@ public class PlatformCommunicationGraphEncoding implements IExplorationEncoding, public PlatformCommunicationGraphEncoding newInstance() { PlatformCommunicationGraphEncoding pcgEncoding = new PlatformCommunicationGraphEncoding(systemModelAdapter, this.platformGraph); - - // Graphs.addGraph(pcgEncoding.platformGraph, this.platformGraph); return pcgEncoding; } 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 b942c38582557671e7f22f9231adbdb0734273ea..b642ae770502cfe0617fa81653d2530993b49ce3 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 cb575233524890c6687479dc65d782b5836c0858 RED -InstantiatedAcyclicTaskGraphEncoding.java 1af9264d3486603df67ac8cd223348429566d81c RED -InstantiatedTaskGraphEncoding.java 7b2e02e92ec82f8c6a796d19c01de6ff82f12cfc RED +AbstractTaskGraphEncoding.java 79c2482106c0fa2895dc5ca2760bc68e8199ea89 RED +InstantiatedAcyclicTaskGraphEncoding.java 5446f693086aaa2a0b39e1c8180af186a7c55809 RED +InstantiatedTaskGraphEncoding.java 1ffb6b33efb6673d51a8ef99822caf42f43b2782 RED SafeTaskGraphEncoding.java 49f4c06f6db45e7751794bcc7e3892570c8daa29 RED -TaskGraphEncoding.java 96dee6e872b408cef6630b700da2ee91eb5e2853 RED +TaskGraphEncoding.java 85067f10567e2104119c61d8e599a7f28f18932d 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 a94ef29dd2fc13b4d7dd21d9b93af197e302ba59..829fd8fbfd1f63d84462299b6d4955df29eade77 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 @@ -27,8 +27,8 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; * * @author diewald */ -public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C> extends - TaskGraphEncoding<G, C, DefaultTaskGraph> { +public class AbstractTaskGraphEncoding<G extends ComposableGenotype, C> + extends TaskGraphEncoding<G, C, DefaultTaskGraph<?>> { /** Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter)}. */ public AbstractTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter) { 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 9cfa44d579a6c5af0f53497ed0f318065c17dd26..652b4c5c0318396a5747377aab9905fdf31e0395 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 @@ -40,7 +40,7 @@ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMapp */ public InstantiatedAcyclicTaskGraphEncoding( SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter, - Collection<DefaultTaskGraph> taskGraphs) { + Collection<DefaultTaskGraph<?>> taskGraphs) { super(systemModelAdapter, AcyclicTaskGraph.transformToAcyclicGraphs(taskGraphs)); } @@ -51,7 +51,8 @@ public class InstantiatedAcyclicTaskGraphEncoding<T extends InstantiatedTaskMapp } /** Copy Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(TaskGraphEncoding)}. */ - public InstantiatedAcyclicTaskGraphEncoding(InstantiatedAcyclicTaskGraphEncoding<T, C> encoding) { + public InstantiatedAcyclicTaskGraphEncoding( + InstantiatedAcyclicTaskGraphEncoding<T, C> encoding) { super(encoding); } 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 0cd7e6e0f7f907e06d868e963d1b5d2996471607..7f7d6635d64fb0ba264d6ae0029708242ca74473 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 @@ -29,14 +29,14 @@ import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; * * @author diewald */ -public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C> extends - TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph> { +public class InstantiatedTaskGraphEncoding<T extends InstantiatedTaskMappingEntry, C> + extends TaskGraphEncoding<InstantiatedTaskMappingEncoding<T>, C, DefaultTaskGraph<?>> { /** * Constructor. See {@link TaskGraphEncoding#TaskGraphEncoding(SystemModelAdapter, Collection)}. */ public InstantiatedTaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter, - Collection<DefaultTaskGraph> taskGraphs) { + Collection<DefaultTaskGraph<?>> taskGraphs) { super(systemModelAdapter, taskGraphs); } 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 57cbf17b135afd5aab74de79c01d39eef3d1deb4..7f0692831e67be52371ec10d2020a17c9957e889 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 @@ -39,8 +39,8 @@ import org.opt4j.core.Genotype; * * @author diewald */ -public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> implements - IExplorationEncoding, ComposablePhenotype<G>, Cloneable { +public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> + implements IExplorationEncoding, ComposablePhenotype<G>, Cloneable { /** References the {@link SystemModelAdapter} which adapts the input models. */ protected SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter; @@ -68,9 +68,8 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> imple public TaskGraphEncoding(SystemModelAdapter<C, ?, ?, ?, ?, ?> systemModelAdapter) { this.systemModelAdapter = systemModelAdapter; - taskGraphs = - (Collection<T>)systemModelAdapter.getTaskGraphs().stream().map(tg -> tg.copy()) - .collect(Collectors.toSet()); + taskGraphs = (Collection<T>)systemModelAdapter.getTaskGraphs().stream().map(tg -> tg.copy()) + .collect(Collectors.toSet()); replicableComponents.addAll(systemModelAdapter.getReplicableComponents()); deployableComponents.addAll(systemModelAdapter.getDeployableComponents()); @@ -244,7 +243,7 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> imple * <i>Side-note:</i> Each task may be located in only one {@link TaskGraph}. * * @returns {@code true} iff a containing {@link TaskGraph} has been found. - * */ + */ public boolean removeTask(IDeployableComponentAdapter<C> task) { TaskGraph taskGraph = getGraphOf(task, taskGraphs); if(taskGraph != null) { @@ -280,8 +279,8 @@ public class TaskGraphEncoding<G extends Genotype, C, T extends TaskGraph> imple * @return The asociated {@link IDeployableComponentAdapter}, or {@code null} if none can be * identified. */ - public synchronized IDeployableComponentAdapter<C> getDeployableComponentOf( - EObject originalEObject) { + public synchronized IDeployableComponentAdapter<C> + getDeployableComponentOf(EObject originalEObject) { for(IDeployableComponentAdapter<C> deployableComponentAdapter : deployableComponents) { if(deployableComponentAdapter.getObject() == originalEObject) { return deployableComponentAdapter; diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings index d6ba481e3fe673b3ccce8f660295ed8fc493e484..3804d0b702a10d692d898c3d98be5dfb273ea7aa 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/.ratings @@ -1,2 +1,2 @@ -TaskMappingEncoding.java f2cc21b6294896288c9bfe70870bf38d0b30cb71 RED -TaskMappingEntry.java 83535c1ad58bc3016f2d9fe409d5b1f80394b501 RED +TaskMappingEncoding.java 18a5a3aa6edbfaf22497f329e7c4a99f526cc142 RED +TaskMappingEntry.java 6d6f0d8700aad210d47ee29f7581ed4f231c3d1a RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java index 2b7476fd937094bbb7bae71dbf1db1558dece4e1..adb2b3ad53d05b28d6ca89c1d8773743724bf48e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/TaskMappingEncoding.java @@ -81,7 +81,8 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< HashMultimap.create(); /** Stores the references between {@link IMappingEntry} to keep track of association updates. */ - protected Multimap<IMappingEntry, IMappingEntry> referencedByMap = HashMultimap.create(); + protected Multimap<IMappingEntry<?, ?>, IMappingEntry<?, ?>> referencedByMap = + HashMultimap.create(); /** * Map of disallowed {@link IDeployableComponentAdapter} -> {@link IExecutionUnitAdapter} @@ -122,6 +123,7 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< * Constructor that is initialized with a reference to the DSE specification and the input * system. */ + @SuppressWarnings("unchecked") public TaskMappingEncoding(DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, PartitionMappingEncoding partMappingEncoding, TaskGraphEncoding<?, ?, ?> tgEncoding) { @@ -188,6 +190,13 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< // TODO: This is a HACK, which is required to get the recent set of target partitions. Here, the // task mapping class architecture needs to be reworked. + /** + * Injects a new {@link PartitionMappingEncoding} into the {@link TaskMappingEncoding} such that + * the correct target resources are present for updated virtual target platforms. + * + * @param partMappingEncoding + * updated target partition encoding. + */ public void updatePartitionMapping(PartitionMappingEncoding partMappingEncoding) { this.partMappingEncoding = partMappingEncoding; } @@ -498,7 +507,8 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< * derived. * @return The created {@link TaskMappingEntry}. */ - protected abstract <S extends TaskMappingEntry> T createEntry(S allocEntry); + protected abstract <U extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> T + createEntry(U allocEntry); /** * Constructs a random {@TaskMappingEntry} for the given deployable @@ -570,9 +580,10 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< } /** Removes the given {@code entry} of the given {@code task} from the mapping. */ + @SuppressWarnings({"rawtypes", "unchecked"}) public void removeEntry(T entry) { allocationMap.remove(entry.getSource(), entry); - referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement(entry)); + referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement((IMappingEntry)entry)); } /** @@ -581,7 +592,7 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< */ public T removeRandomEntry(S deployableComponent) { List<T> entries = new ArrayList<>(); - entries.addAll((Collection<? extends T>)allocationMap.get(deployableComponent)); + entries.addAll(allocationMap.get(deployableComponent)); int idx = rand.nextInt(entries.size()); T rmEntry = entries.get(idx); removeEntry(rmEntry); @@ -592,9 +603,10 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< * Removes the given {@link IDeployableComponentAdapter} and, consequently, all associated * entries from the mapping. */ + @SuppressWarnings({"rawtypes", "unchecked"}) public Collection<T> removeTask(S deployableComponent) { for(T entry : allocationMap.get(deployableComponent)) { - referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement(entry)); + referencedByMap.get(entry).forEach(e -> e.rmAssociatedElement((IMappingEntry)entry)); } return allocationMap.removeAll(deployableComponent); } @@ -669,11 +681,11 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< getExcludedDeploymentTargets(IDeployableComponentAdapter<?> deployableComponent) { Collection<IExecutionUnitAdapter<?>> rval = getDisAllowedAllocations(deployableComponent); - Collection<InternalSeparationConstraint> sepConstraints = - getConstraintsOf(InternalSeparationConstraint.class); + // Collection<InternalSeparationConstraint> sepConstraints = + // getConstraintsOf(InternalSeparationConstraint.class); - Optional<InternalSeparationConstraint> relevantSepConstraint = sepConstraints.stream() - .filter(c -> c.getRequesterSet().contains(deployableComponent)).findAny(); + // Optional<InternalSeparationConstraint> relevantSepConstraint = sepConstraints.stream() + // .filter(c -> c.getRequesterSet().contains(deployableComponent)).findAny(); // TODO: Reinclude for the safety exploration. // if(relevantSepConstraint.isPresent()) { @@ -750,6 +762,12 @@ public abstract class TaskMappingEncoding<S extends IDeployableComponentAdapter< return tgEncoding; } + /** + * Returns the list of Partitions that are allocated to the given list of physical execution + * units. The method is intended to extract a list of partitions that are valid allocation + * targets iff the list of physical execution units is defined by the set of mapping constraints + * (e.g., derived from available I/Os). + */ public List<Partition> getAllowedPartitionTargets(List<IExecutionUnitAdapter<?>> physExecUnits) { List<Partition> execList = new ArrayList<>(); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings index df46f858d95e1c2ac5f040af713dfbb6c0392d8c..6a4ccc06368cbe3d23357709d6f911e585685dd4 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/.ratings @@ -1,2 +1,2 @@ -AbstractTaskMappingEncoding.java 08b8a85ba4b9bf9a375f80c7852a3d2e9990c1e7 RED +AbstractTaskMappingEncoding.java 3f3a6ad042d6eafebe3c3ed47f4ccbde11a2b8fb RED AbstractTaskMappingEntry.java b039009446aa861a4a13fa4ceb479a4ca9818045 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java index 7b08725024fc7386d57739e60d8865c5d61671b0..a9e63b25be5da60ad452585835a9709148ba8cb7 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/abstractmapping/AbstractTaskMappingEncoding.java @@ -69,8 +69,7 @@ public class AbstractTaskMappingEncoding /** Copy Constructor. */ public AbstractTaskMappingEncoding(DseSpecification dse, SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, - PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) - throws ExplorationException { + PartitionMappingEncoding partEnc, TaskGraphEncoding<?, ?, ?> tgEncoding) { super(dse, systemModelAdapter, partEnc, tgEncoding); } @@ -132,10 +131,10 @@ public class AbstractTaskMappingEncoding /** {@inheritDoc} */ @Override - protected <S extends TaskMappingEntry> AbstractTaskMappingEntry createEntry(S allocEntry) { + protected <S extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> + AbstractTaskMappingEntry createEntry(S allocEntry) { // TODO: Remove the ugly casts. - return new AbstractTaskMappingEntry((IDeployableComponentAdapter<?>)allocEntry.getSource(), - (Partition)allocEntry.getTarget()); + return new AbstractTaskMappingEntry(allocEntry.getSource(), allocEntry.getTarget()); } /** {@inheritDoc} */ @@ -154,13 +153,8 @@ public class AbstractTaskMappingEncoding @Override public AbstractTaskMappingEncoding clone() { AbstractTaskMappingEncoding clonedEncoding; - try { - clonedEncoding = new AbstractTaskMappingEncoding(dse, systemModelAdapter, - partMappingEncoding, tgEncoding); - } catch(ExplorationException e) { - // Opt4J does not allow to throw Exceptions here. - throw new RuntimeException(e); - } + clonedEncoding = new AbstractTaskMappingEncoding(dse, systemModelAdapter, + partMappingEncoding, tgEncoding); Map<AbstractTaskMappingEntry, AbstractTaskMappingEntry> copyAssocMap = new HashMap<>(); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings index c529c99bdd9f0e7f58d07675e69732c47b23fdc9..7caec5ff372c2adfba54e3bbbbfc1262fbd6a6b5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/.ratings @@ -1,6 +1,6 @@ -FailSilentTaskMappingEncoding.java a792b00025cd97aaef95e76c79563240df23ae00 RED +FailSilentTaskMappingEncoding.java fc5578ebb844f9b56b080480fb5c1eb112fd4bfa RED FailSilentTaskMappingEntry.java 61bdca6fdc8f36e3e82755af639fc27ab83b2ec6 RED -FaultDetectionVotingTaskMappingEncoding.java 8fb17ee77def5375fdc2630b7a28cf2b8fbf55ed RED +FaultDetectionVotingTaskMappingEncoding.java ed6ddc5125f9d225ef2c77f7f0ffb5ca83d607cc RED FaultDetectionVotingTaskMappingEntry.java bb0c1531a1173c58f07e67c41de8919fb9ad55f8 RED -InstantiatedTaskMappingEncoding.java 5b91552c0185414270ad0993dac1aac68834399f RED +InstantiatedTaskMappingEncoding.java 8d846f0ae16025f97bce21cecf9f13a802186a3e RED InstantiatedTaskMappingEntry.java 1bb380c1f473bb9d8db1b831037e5185818bd74e RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java index 3ff346fe82d68a65613d2aead325fd4967b53f6c..2b84d4f0a4a5e60d11ace219a21599f30014eccb 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FailSilentTaskMappingEncoding.java @@ -106,7 +106,8 @@ public class FailSilentTaskMappingEncoding /** {@inheritDoc} */ @Override - public <S extends TaskMappingEntry> FailSilentTaskMappingEntry createEntry(S mapping) { + public <S extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> + FailSilentTaskMappingEntry createEntry(S mapping) { return new FailSilentTaskMappingEntry((AbstractTaskMappingEntry)mapping); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java index 6a4183ae1892e4c016ddfff291508ab2ebd0ed1d..6884185367d372d586903c0ebf9eff3edf8f8525 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/instantiatedmapping/FaultDetectionVotingTaskMappingEncoding.java @@ -101,8 +101,8 @@ public class FaultDetectionVotingTaskMappingEncoding extends /** {@inheritDoc} */ @Override - public <S extends TaskMappingEntry> FaultDetectionVotingTaskMappingEntry - createEntry(S mapping) { + public <S extends TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> + FaultDetectionVotingTaskMappingEntry createEntry(S mapping) { // TODO: Do not use 0, magic constant. return new FaultDetectionVotingTaskMappingEntry((AbstractTaskMappingEntry)mapping, 0); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings index a3edbd75730efdfb5b1005aa9bcd260353d8c693..bb10776df1f97284bf3cf7aafb67db376b7c417d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/.ratings @@ -1,4 +1,4 @@ ComposableCreator.java 14cb174847cd3a0882bc4fd17cf8cbe18b2b7f36 RED -ComposableCreatorBase.java 0364eb1b0251e1548111be3d24207f21e92d0ea6 RED +ComposableCreatorBase.java 0fb620915e2304057db795c29da86414b22958a0 RED CompositeCreator.java 65ab9f283191b081e40e8587431fd0a95f1daca6 RED CompositeCreatorBase.java ce0a74a4b8acf68069534443468f4995a091139e RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java index b63db2537140c5e9f4d48f0c2617cc37908793a6..08ca7be33ca03969994bae542ae7493854aa933f 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/create/ComposableCreatorBase.java @@ -101,6 +101,7 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> * * @throws DecodingException */ + @SuppressWarnings("unchecked") @Override public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> decodeCreatedGenotype( G genotype, FlatPhenotypeMap<Phenotype> decodedPhenotypes, @@ -113,7 +114,7 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> new FlatPhenotypeMap<Phenotype>(systemModelAdapter); intermediatePhenos.addAll(decodedPhenotypes); - @SuppressWarnings("unchecked") Optional<? extends ComposableDecoder<G, P>> idDecoder = + Optional<? extends ComposableDecoder<G, P>> idDecoder = (Optional<? extends ComposableDecoder<G, P>>)subDecoders.stream().filter( d -> Arrays.asList(genotype.getClass()).containsAll(d.getRequiredTypes())) .findAny(); @@ -127,10 +128,8 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> * } */ - @SuppressWarnings("unchecked") ComposableDecoder<G, P> castedDecoder = - (ComposableDecoder<G, P>)decoder; - @SuppressWarnings("unchecked") Class<P> decPhenotypeType = - (Class<P>)decoder.getOutputType(); + ComposableDecoder<G, P> castedDecoder = (ComposableDecoder<G, P>)decoder; + Class<P> decPhenotypeType = (Class<P>)decoder.getOutputType(); // TODO: Here, the check with the Required Phenotypes should be removed, and replaced // with a check such that the required pheno/genotypes are available at this point. if(!decoderExecuted.get(decoder) && decoder != idDecoder.orElse(null) && @@ -138,8 +137,7 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> intermediatePhenos.containsAll(castedDecoder.getRequiredTypes())) { decoderExecuted.put(decoder, true); - @SuppressWarnings("unchecked") P decPhenotype = - (P)decoder.decodeComposable(genotype, intermediatePhenos); + P decPhenotype = (P)decoder.decodeComposable(genotype, intermediatePhenos); // Null indicates a decoding error here. if(decPhenotype == null && !(decoder instanceof ConstraintGenerationDecoder)) { throw new DecodingException(genotype, decoder); @@ -161,21 +159,6 @@ public abstract class ComposableCreatorBase<G extends ComposableGenotype> return phenotypes; } - /** - * Checks whether the collection of required input types contains hybrid {@link Genotype}s and - * if they were already created. - */ - private boolean isHybridPhenoRequiredAndCreated( - Set<Class<? extends Genotype>> createdGenotypeTypeSet, Collection<Class<?>> reqTypes) { - for(Class<?> reqType : reqTypes) { - if(Genotype.class.isAssignableFrom(reqType) && - !createdGenotypeTypeSet.contains(reqType)) { - return false; - } - } - return true; - } - /** {@inheritDoc} */ @Override public <P extends ComposablePhenotype<G>> FlatPhenotypeMap<Phenotype> diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings index c51efbcafec1725b43381beeada5775f7b50ee2a..7e571dabdf39ba44b314a031e144d7c3b9bc41ba 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/.ratings @@ -1,5 +1,5 @@ -ComposableDecoder.java 95f1e8f3b8d60c52704c9f003f9772fe3897c1cf RED +ComposableDecoder.java 197abec80b880e25fccfc66d61b471b0b5d7e10f RED ComposableDecoderBase.java 4f366cc6c0f8ca929cac43d9c5de675cbafbb132 RED CompositeDecoder.java 9d34dd0b342e6433ab894974f9430531ce2de39a RED -CompositeDecoderBase.java aaeca798f88c1abb7aeed9843a7fb41c5935653f RED +CompositeDecoderBase.java 9b41916f13b73ae910e3a3135b0a2ee97c48b81b RED PhenotypeDecoder.java 44079e8545aaf8b8729919f0b07c774c3ca0df06 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java index fc32f1b315506dfb255df78234e18ac868a782a4..cedb145df9db80a134926e899c0a56500d3f4f82 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/ComposableDecoder.java @@ -36,6 +36,10 @@ import org.opt4j.core.problem.Decoder; public interface ComposableDecoder<G extends ComposableGenotype, P extends ComposablePhenotype<?>> extends IDependencyModule<IExplorationEncoding, P> { + /** + * Returns the most relevant {@link Genotype} used for the Decoder whereas other dependencies + * declare the <i>additionally</i> required information. + */ Class<?> getPrimaryInputType(); /** diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java index b631f18f29fe2c016a911baf661056d7222d6632..33a42479f9ca32a7f9e20fe2f8e05f7a13fff65c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/decode/CompositeDecoderBase.java @@ -236,6 +236,7 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e * * @throws CycleFoundException */ + @SuppressWarnings("unchecked") @Override public <G extends ComposableGenotype, CP extends ComposablePhenotype<G>, D extends ComposableDecoder<G, CP>> void registerSubDecoder(Class<G> subGenotype, D subDecoder) throws CycleFoundException { @@ -246,7 +247,7 @@ public abstract class CompositeDecoderBase<C extends CompositeGenotype<Class<? e registeredSubDecoders.put(subDecoder, (Class<? extends ComposableGenotype>)subDecoder.getPrimaryInputType()); - @SuppressWarnings("unchecked") ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>> castedSubDecoder = + ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>> castedSubDecoder = (ComposableDecoder<ComposableGenotype, ComposablePhenotype<?>>)subDecoder; depGraph.addOperator(castedSubDecoder); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings index eeaa7a87bb03c5f175d6b1065946611308b79823..b69be0d2c9adc72637af8a626713c0144538c74d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/.ratings @@ -1,3 +1,3 @@ ComposableEvaluator.java 5882908b5b90aa31bcf806cbfca047d2d0725640 RED CompositeEvaluator.java 185b9a6776a419ce0fc2adae31eced97c0d756d5 RED -CompositeEvaluatorBase.java a9eceb013909352357df569d11d4a781d339a66e RED +CompositeEvaluatorBase.java 892ecced8aa996be57baad178bdbeefd6855c2d6 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java index 06b23dd5cbc2004e8a8d7dfc47629cbaacedfea2..1ecde2ab17a1e269f7ddb2d29819ace8bd606c78 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/extensions/compositegene/evaluate/CompositeEvaluatorBase.java @@ -264,7 +264,8 @@ public abstract class CompositeEvaluatorBase<P extends CompositePhenotype<?>> (Class<SP>)currSubPhenotype.getClass(); phenotypeTypeMap.putEncoding(currSupPhenotypeType, currSubPhenotype); if(CompositePhenotype.class.isAssignableFrom(currSubPhenotype.getClass())) { - List<SP> subPhenos = ((CompositePhenotype)currSubPhenotype).getSubPhenotypes(); + @SuppressWarnings("unchecked") List<SP> subPhenos = + (List<SP>)((CompositePhenotype<?>)currSubPhenotype).getSubPhenotypes(); subPhenotypes.addAll(0, subPhenos); } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings index de77162afd62be1bd2ae76dda7e228d9bb0a19eb..da01c918ad1b24012354ea3e6fd20c229c30a8ba 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/partitionmapping/.ratings @@ -1,2 +1,2 @@ -CopyPartitionMapping.java d70d75d2c4ad2e31461d3735ccb12087aa9eff10 RED +CopyPartitionMapping.java 3e77f3bb93cdcb5839e6c050261f7a671bef6de0 RED CopyPartitionMappingModule.java 679212216ca3f9ae3fbeeaeeeeb5813dc762952d RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/platform/.ratings new file mode 100644 index 0000000000000000000000000000000000000000..f94f131c6640b641fa2e1fb6f1ff481b02700508 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/platform/.ratings @@ -0,0 +1,2 @@ +CopyPlatformCommunicationGraph.java 33a0bca299979ad7d6a25848e7828ca2d7017513 RED +CopyPlatformCommunicationGraphModule.java 0dd4ad33e694d3b4ddb8fb404b56e46b51bf5fd3 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings index 5ed817869cd8b641af62643740f1aa8d71f60754..6fd222c91b81e1500e1a9e13493e8d78f12acd74 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/copy/taskmapping/.ratings @@ -1,3 +1,3 @@ -CopyAbstractTaskMapping.java edbd8e4cc926cf2e055e024011ce67c009fe0d8b RED +CopyAbstractTaskMapping.java c6df9e76c182ca083303703cdd7d53ebe5cb6960 RED CopyInstanceTaskMapping.java 902538ef9927500d5e16ff8b50364560bed10a6b RED CopyTaskMappingModule.java 4904f2062265901c4a9d070449a06d40f6c054a4 RED 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 dbbda0b305935adb5022caa17ddb9d4365f7ae50..cc9a1fc560dd5e31e1cfde68cb4c95d63574531a 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 @@ -5,4 +5,6 @@ CrossoverRandManyAllocation.java b24cef44f25dfed6429e933281b8da3be681580c RED CrossoverSingleAllocation.java 1f4607e9a03f9627b56d4a04b7dcde0c37bf460f RED NopCrossover.java 70500c9db651250298c97e261e4f8a0d8b6941e3 RED NopCrossoverInstantiatedTaskMappingModule.java 95156489b862633b428a87df2ae51aa304c7f6f1 RED +NopCrossoverPartitionMappingModule.java ac1eb750baf51027e352f4b95e6145e914bc4d19 RED +NopCrossoverPlatformCommunicationGraphModule.java 1e4b42a28f38a42fbddd0b5ad793679c96cb3330 RED NopCrossoverSFArchModule.java 65379d3a5e26993de3cb72856e0e66b645e8b064 RED 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 9ca1d2b020ea95d725bb1ff1f928796bb8ee9155..2ad622cfba69786e59e1896c5b804a77043a46cf 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,2 +1,3 @@ MutateBase.java b151fab2adf99fa9dbe43805c0fbb7d856234165 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/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/partitionmapping/.ratings index 19f115e01bff1ba36421ed45ccc9b6602cac8447..da3e59a293b6c61958466c45c9bc83f4c729256d 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 739af618e683706a4550a162813a987219176a11 RED +MutatePartitionBase.java db3ed01fe0a4fdf4c504d84b264ac724ae4447e7 RED MutatePartitionDecrement.java 741a0280e5e65d5360dba834e926cc879b9bd94a RED MutatePartitionIncrement.java e550d00c767f2350b7b6f7d664d3b7766e71059c RED PartitionMappingModule.java 379d07cd5495d4ddc657269a85962d95fde1287c RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/platform/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/platform/.ratings new file mode 100644 index 0000000000000000000000000000000000000000..028b9bd0625e368db0b3adc9a6a8d65d7ee8aa67 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/operator/mutate/platform/.ratings @@ -0,0 +1 @@ +NopPlatformCommGraphMutateModule.java 08577f7b156f428332be4a371fa6bc7f1f129c2b RED 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 a9a10c0096f1c00855d9fd4beec9bf1261fdaece..fee32671e26239ea727e424b709a21694225a3be 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 @@ -5,4 +5,4 @@ DseProblemModuleBase.java 67ea368a0824fb500f85bf49868754455049b9c9 RED EvaluatorWrapper.java 47ff0b2df7f75e232fa269b55750f0e2c408b08c RED ExplorationGoalPriorityMultiEvaluator.java 0f900f86c8adc14b69d95bb8eb3a34ea1ed2d41e RED ProblemModuleBase.java fb1401b846d001dfc78bbd8b8881929788b10d41 RED -StrictTTDecoder.java b20a51c3310b2302ba0b1281ffda049a59df30fc RED +StrictTTDecoder.java 0553585f0cd521b0d5012aeec5508785fc305529 RED 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 10249da84343948cbd87a101f5c968dbf4c5dd42..c1264bf5e01fe548e351439c0ee1520e9905eef8 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 e893d02f24db27df9752ee65e19dcf8f135f5d56 RED +MessageDecoder.java 8763b821ca5bbb4637aadf78c599f5fe103eb5cf RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/.ratings deleted file mode 100644 index c3a5110277a1a8b8ff773a4e9b33772d862c2f9c..0000000000000000000000000000000000000000 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/instantiatemapping/.ratings +++ /dev/null @@ -1,3 +0,0 @@ -AbstractTaskMappingDecoder.java 56d2d2f6edc999d0e802bc5f4e7e470307456a08 RED -FailSilentAbstractTaskMappingDecoder.java f1a6618527b827342f4886e685a5abbb898eb205 RED -FaultDetectionVotingAbstractTaskMappingDecoder.java cf6444e5c9ccf0b20365a2b55774d932a881712a RED 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 25e51fadd4a3f0426417d5aa1242ebaf6bad15ef..8c060808d6908c84b6811023cba3448fcb883448 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 2a307ac8b3adc3e2a6ae10ff64463deac0d54b28 RED -InstantiatedTaskMappingDecoderAcyclic.java 45b939b3efe28493c5734f6603cafa991b50fb6f RED +InstantiatedTaskMappingDecoder.java 57e46646ba44ffaa4af2612718dc31feb47b9f35 RED +InstantiatedTaskMappingDecoderAcyclic.java 7abff3b7998604fa61a32b4cfa1d98fb9960ffb6 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 c029197cc557a90b74dd9b67fb1c9e859460e213..021724d7f9a932bb6115d41a42674f56c680b814 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 @@ -72,8 +72,8 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt SafetyFunctionArchEncoding<?> sfEnc = phenotypeTypeMap.getEncoding(SafetyFunctionArchEncoding.class); - Collection<DefaultTaskGraph> tgColl = atgEnc.getTaskGraphs(); - TaskGraphInstantiator<DefaultTaskGraph> tgInstatiator = + Collection<DefaultTaskGraph<?>> tgColl = atgEnc.getTaskGraphs(); + TaskGraphInstantiator<DefaultTaskGraph<?>> tgInstatiator = new TaskGraphInstantiator<>(tgColl, genotype); InstantiatedTaskGraphEncoding<T, C> itgEnc = new InstantiatedTaskGraphEncoding<T, C>( systemModelAdapter, tgInstatiator.createMultipleInstanceTaskGraphs(tgColl)); @@ -103,7 +103,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt // Get the "containing" task graph. We must check all replacement components (instances) // since we don't know which one was instantiated (or it would be more costly to find // out). - DefaultTaskGraph sfTG = null; + DefaultTaskGraph<?> sfTG = null; for(IDeployableComponentAdapter<?> curSFCompAdp : sfCompAdp .getReplacementComponents()) { sfTG = itgEnc.getTaskGraphOf(curSFCompAdp); @@ -203,7 +203,7 @@ public class InstantiatedTaskMappingDecoder<T extends InstantiatedTaskMappingEnt * {@link IDeployableComponentAdapter} of the currently processed output aggregation * element. */ - private void updateTaskGraph(DefaultTaskGraph sfTG, + private void updateTaskGraph(DefaultTaskGraph<?> sfTG, Collection<IDeployableComponentAdapter<?>> realizingSFUnits, Collection<IDeployableComponentAdapter<?>> realizingDiagUnits, Collection<IDeployableComponentAdapter<?>> outComps, diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/partitionmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/partitionmapping/.ratings new file mode 100644 index 0000000000000000000000000000000000000000..efe3ea0143774a01236e60e6770e934ea799c7e6 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/partitionmapping/.ratings @@ -0,0 +1,2 @@ +PartitionMappingDecoderGraph.java d164596ac52b41fbe7be9b926418a5cbf53edb08 RED +PartitionMappingIdentityDecoder.java e1a56b26ca22e952b8c965f79ff748f48da3407c RED 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 561f89b445f9f4d174bac308fae1322fae493a92..d1b26cf669c29a624e6588072467995675e1b21b 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 5e73fc62be3b05def91ff00e326dbbb382770e98 RED -SFGraphDecoder.java 77a9236bab238e44f6bc4ec94b974fea26b58106 RED -SFMappingConstraintDecoder.java 381bc13803e7e16994df84a7ec3d5c108d35a12f RED -SFMappingDecoder.java 7455f2aa6211310c95a24a26bdf152eb6c04fac3 RED +SFEncodingDecoder.java 8e1594c92aa5e0c23d07038bb63db5b483c4f727 RED +SFGraphDecoder.java 7290792dbf7bd2f22e909a1f166ab2dcaae7ee7d RED +SFMappingConstraintDecoder.java 31ccf2a6cb337edce54fd77edb793e096f1a393d RED +SFMappingDecoder.java 48342dcb954a8129e640ab89bbaf57fe028febf9 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java index 651363256a2fb386dbb53c9e44da0ecb641895df..36e00e783a6b5c49f0978fef7e44e7af07889f29 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/safetyfunction/SFMappingDecoder.java @@ -114,7 +114,7 @@ public class SFMappingDecoder<C> // TODO: use a more generic solution to instantiate these tyoes of constraints during // the creation phase. - Set<IMappingEntry> existingEntries = new HashSet<>(); + Set<IMappingEntry<?, ?>> existingEntries = new HashSet<>(); if(outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class).isEmpty()) { for(IDeployableComponentAdapter<C> comp : sFAEntry.getSafetyFunctionAdapter() .getAllComponents()) { @@ -144,7 +144,7 @@ public class SFMappingDecoder<C> // Match the encoding with the selected channel number. for(int i = entryNumber; i < channelNumber; i++) { try { - Set<IMappingEntry> createdEntries = new HashSet<>(); + Set<IMappingEntry<?, ?>> createdEntries = new HashSet<>(); createdEntries.addAll(addSFComponents(outGenotype, sfComps)); if(diagPresent) { createdEntries.addAll(addSFComponents(outGenotype, diagComps)); @@ -164,7 +164,7 @@ public class SFMappingDecoder<C> List<InternalIsolatedCommunicationSet> isoCommSet = new ArrayList<>( outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class)); for(int i = entryNumber - 1; i > channelNumber; i--) { - Collection<IMappingEntry> rmEntries = + Collection<IMappingEntry<?, ?>> rmEntries = isoCommSet.get(i).getIsolatedCommunicationSet(); removeSFEntries(outGenotype, rmEntries); @@ -195,7 +195,7 @@ public class SFMappingDecoder<C> List<InternalIsolatedCommunicationSet> isoComm = new ArrayList<>( outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class)); for(int i = 0; i < entryNumber; i++) { - Set<IMappingEntry> createdEntries = addSFComponents(outGenotype, diagComps); + Set<IMappingEntry<?, ?>> createdEntries = addSFComponents(outGenotype, diagComps); InternalIsolatedCommunicationSet curConstr = isoComm.get(i); curConstr.addToIsolatedCommunicationSet(createdEntries); } @@ -224,9 +224,9 @@ public class SFMappingDecoder<C> * if no valid allocation targets can be identified for one * {@link IDeployableComponentAdapter}. */ - private Set<IMappingEntry> addSFComponents(AbstractTaskMappingEncoding outGenotype, + private Set<IMappingEntry<?, ?>> addSFComponents(AbstractTaskMappingEncoding outGenotype, Collection<IDeployableComponentAdapter<C>> sfComps) throws ExplorationException { - Set<IMappingEntry> createdEntries = new HashSet<>(); + Set<IMappingEntry<?, ?>> createdEntries = new HashSet<>(); if(sfComps != null) { for(IDeployableComponentAdapter<C> curSFComp : sfComps) { createdEntries.add(outGenotype.createAndAddRandomEntry(curSFComp)); @@ -238,8 +238,8 @@ public class SFMappingDecoder<C> /** Removes the given {@link IMappingEntry}s from the {@link AbstractTaskMappingEncoding}. */ private void removeSFEntries(AbstractTaskMappingEncoding outGenotype, - Collection<IMappingEntry> sfEntries) { - for(IMappingEntry sfEntry : sfEntries) { + Collection<IMappingEntry<?, ?>> sfEntries) { + for(IMappingEntry<?, ?> sfEntry : sfEntries) { outGenotype.removeEntry((AbstractTaskMappingEntry)sfEntry); } } @@ -249,7 +249,7 @@ public class SFMappingDecoder<C> * the given {@link IMappingEntry}. If none is found {@code null} is returned. */ private InternalIsolatedCommunicationSet getMatchingIsolationCommConstraint( - AbstractTaskMappingEncoding outGenotype, IMappingEntry entry) { + AbstractTaskMappingEncoding outGenotype, IMappingEntry<?, ?> entry) { InternalIsolatedCommunicationSet matchingConstraint = null; Collection<InternalIsolatedCommunicationSet> isoComm = outGenotype.getConstraintsOf(InternalIsolatedCommunicationSet.class); @@ -268,7 +268,7 @@ public class SFMappingDecoder<C> * given {@link IMappingEntry} from the given {@link AbstractTaskMappingEncoding}. */ private void removeMatchingConstraint(AbstractTaskMappingEncoding outGenotype, - IMappingEntry entry) { + IMappingEntry<?, ?> entry) { InternalIsolatedCommunicationSet rmConstr = getMatchingIsolationCommConstraint(outGenotype, entry); assert rmConstr != null; diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings index 52d49b4dd86fc166dc3aac105730f6c4a030d942..c42351455e14fca612baea53759deb3b407cd66d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/.ratings @@ -1 +1,2 @@ -AbstractTaskMappingIdentityDecoder.java 4b452975b3da72fb535a9e67013d45f9494e9203 RED +AbstractTaskMappingIdentityDecoder.java b1556259f12c67e465031f63f21a47e327f42ab9 RED +TaskMappingDecoderBase.java 969f0a27fad48ecf6de04e9ea4034602aeb21a20 RED 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 new file mode 100644 index 0000000000000000000000000000000000000000..706484f3c96433412beb3f9c646b93fba2356a55 --- /dev/null +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/taskmapping/instantiate/.ratings @@ -0,0 +1,4 @@ +AbstractTaskMappingDecoder.java 8daae35d8536b37e000eed45cec870fa94958f2e RED +FailSilentAbstractTaskMappingDecoder.java 64dc3dac76cabf96f0dc39e5e7192c5caa04a7b0 RED +FaultDetectionVotingAbstractTaskMappingDecoder.java 68bcd5b7faedc97269973023e5f9b6eebb020c1e RED +TaskInstanceResourceAlignmentDecoder.java 116f72a16a02c9aac617cc4c9684cd583b87e1b6 RED 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 9537295392acfaf402279e213ce562cc68ef0ef5..1c98fc295f9ac5d24b5d1486a142185f85777596 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 @@ -1,6 +1,6 @@ ArchExpSubSolution.java 3bb56206fe70f19f7cb6aee575eba552ce9bbc4e RED ArchitectureSolution.java 8ba40ce339c4195641ed1b67c79718e297d66e4c RED IExplorationSolution.java a6153937197358907ceec46606a7f28620c26f2b RED -IScheduleSolution.java 989614e232dcc1d4ade33ea2a76e90b514f175d7 RED -StrictTTSchedule.java 65d194e0783917ecd6f103c8997ab65e88ef0c4a RED +IScheduleSolution.java 8a2959147bdca874fd43b1591bc5471b68c04333 RED +StrictTTSchedule.java 59958b5cacbe4a02e27ab82aac0afc501b10864f RED TimeSlot.java a394badca1460454c91e0d82b0d124f8b2a2ebcf RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java index db6a97dae44818574e93c0c5e30765846b5432ef..1f219222f59260ca87ab38fc11bebe91b790812b 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/solution/IScheduleSolution.java @@ -31,5 +31,5 @@ public interface IScheduleSolution<P extends Phenotype> extends IExplorationEnco * Returns the {@link TimeSlot} that has been reserved for the given {@link IMappingEntry}. * Returns null, if no {@link TimeSlot} could be found. */ - public TimeSlot getTimeSlotOf(IMappingEntry entry); + public TimeSlot getTimeSlotOf(IMappingEntry<?, ?> entry); } 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 ca518264c9e07182b66b878bdd2e3b7ae481ba23..12ba03306fabf0a270dbc96150f49e5d51931bd5 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 @@ -311,7 +311,7 @@ public class StrictTTSchedule<S extends TaskMappingEntry<IDeployableComponentAda /** {@inheritDoc} */ @Override - public TimeSlot getTimeSlotOf(IMappingEntry entry) { + public TimeSlot getTimeSlotOf(IMappingEntry<?, ?> entry) { return timeSlotsOfMappingEntries.get(entry); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings index ce981368d06ab57cc181a625036631f56425b13c..307c2f617966932472fcb9cadf06595effdc42e1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/.ratings @@ -3,4 +3,4 @@ ArchitectureEvaluator.java 600c424651bc22bacecef9e596360763fdf28585 RED ExplorationTargetEvaluatorBase.java b6db855e18f03c4f5c8dd7b42dbae72836509f01 RED ExpressionEvaluatorBase.java 1552c9232d4ef9589560b6a95523ca21739ad110 RED ITopLevelEvaluator.java 032ec6375efff2234664690f271cec98816abcc5 RED -MappingEvaluator.java 7e8d03539f5c42f9273967ee461e19ca41e839cd RED +TaskMappingEvaluator.java 34231ad9255d3b7accdba5c1e75f3ecb4be4512f RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java index c3746755125fff2101f2fc43c91484ce1bc68cc9..4f5b2682905c0846303d473bf6e5924a8260cd74 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/TaskMappingEvaluator.java @@ -21,6 +21,8 @@ import java.util.Collection; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.MappingEncoding; 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.IDeployableComponentAdapter; 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.SystemModelAdapter; @@ -36,15 +38,16 @@ import org.fortiss.tooling.base.model.element.IModelElement; * * @author diewald */ -public abstract class TaskMappingEvaluator - extends ExpressionEvaluatorBase<TaskMappingEncoding, Double, ExplorationTarget<Double>> { +public abstract class TaskMappingEvaluator extends + ExpressionEvaluatorBase<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Double, ExplorationTarget<Double>> { /** Reference to the mapping which shall be evaluated here. */ - protected MappingEncoding mapping; + protected MappingEncoding<?, IDeployableComponentAdapter<?>, Partition, ?> mapping; + /** Mapping of Partitions to physical execution units. */ // FIXME: HACK in order to validate the mapping of components/tasks to phys exec units if // partitions are used. - protected MappingEncoding virtMapping; + protected MappingEncoding<?, Partition, ?, ?> virtMapping; /** Empty prototype constructor. */ public TaskMappingEvaluator() { @@ -67,14 +70,14 @@ public abstract class TaskMappingEvaluator IRequestAdapter<?> requestAdp = systemModelAdapter.getDeployableComponentOf(requester); - Collection<IResourceAdapter<?>> allocResourceAdps = - mapping.getAllocatedResourcesFor(requestAdp); + Collection<Partition> allocResourceAdps = + mapping.getAllocatedResourcesFor((IDeployableComponentAdapter<?>)requestAdp); for(IResourceAdapter<?> allocResource : allocResourceAdps) { if(allocResource.getObject() == resource) { return Boolean.valueOf(true); } else if(allocResource instanceof Partition) { // TODO: HACK, remove after transition to full table based representation. - IResourceAdapter<?> physResource = (IResourceAdapter<?>)virtMapping + IResourceAdapter<?> physResource = virtMapping .getAllocatedResourcesFor((Partition)allocResource).iterator().next(); if(physResource.getObject() == resource) { return Boolean.valueOf(true); @@ -93,8 +96,8 @@ public abstract class TaskMappingEvaluator IRequestAdapter<?> requestAdp = systemModelAdapter.getDeployableComponentOf(requester); - Collection<IResourceAdapter<?>> allocResourceAdps = - mapping.getAllocatedResourcesFor(requestAdp); + Collection<Partition> allocResourceAdps = + mapping.getAllocatedResourcesFor((IDeployableComponentAdapter<?>)requestAdp); for(IResourceAdapter<?> allocResource : allocResourceAdps) { if(allocResource.getObject() == resource) { return Boolean.valueOf(false); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings index 643e553058782a484e67425295f82f0388f5a0aa..ca186bd241a6b98acb9ad598e7f2ae29147ad35e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/.ratings @@ -1,8 +1,8 @@ -ComponentMultiAllocationConstraintEvaluator.java 1f3c1c96391de15f5b21377f52dde183b16428cc RED +ComponentMultiAllocationConstraintEvaluator.java dd4460755f6dc04b67032d5ce5b68d0ae7c03cfa RED ComponentMultiDislocationConstraintEvaluator.java e63169976a3075d5d9ac62767bf6c17bc4ddfe07 RED ConstraintEvaluatorBase.java f42f71e64d32201b232c24542a2c0367a6293942 RED DeadlineConstraintEvaluator.java a023d233a2ee768cef573a67e06ae1fe0b53ddbe RED IConstraintEvaluator.java bca49bbdea5e089b0d045fc356ceedcb466df55e RED -MappingEvaluatorConstraint.java fec8cf995cbafa433235f8f6715bc5183c2f8ba3 RED +MappingEvaluatorConstraint.java dc7f0f8492827efad3c131ef5ab6768bba2b90ee RED PeriodConstraintEvaluator.java 52dc75180579f154a514816223461e27cb9ca84d RED -SafetyIntegrityLevelConstraintEvaluator.java 34018532882a83860e35aa5bb102735c5be5772b RED +SafetyIntegrityLevelConstraintEvaluator.java a689ee98f7243165b5186ccb70b37bdff1606748 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java index 86018dea5015731dec99a9f2b452ab17e673bb07..2b74ee445a02cc9af17ca0eea265f4311b6fc2f4 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/ComponentMultiAllocationConstraintEvaluator.java @@ -121,7 +121,7 @@ public class ComponentMultiAllocationConstraintEvaluator<S extends InstantiatedT return false; } - for(IMappingEntry entry : entries) { + for(IMappingEntry<?, ?> entry : entries) { if(!((ComponentMultiAllocationConstraint)expTarget).getExecutionUnits() .contains(entry.getTarget().getObject())) { return false; diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java index 629b43d63e352c29bc7da0f3db53c75095abd9ce..8149529c16114ae746320e06fc5372f93088dc95 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/MappingEvaluatorConstraint.java @@ -16,11 +16,14 @@ package org.fortiss.af3.exploration.alg.dse.evaluator.constraint; import org.eclipse.emf.ecore.EObject; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding; 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.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.evaluator.TaskMappingEvaluator; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator; import org.fortiss.af3.exploration.dsl_v2.model.function.Maximize; @@ -37,7 +40,7 @@ import com.google.common.collect.ClassToInstanceMap; * @author diewald */ public class MappingEvaluatorConstraint extends TaskMappingEvaluator implements - IConstraintEvaluator<TaskMappingEncoding, Boolean, ExplorationConstraint<Boolean>> { + IConstraintEvaluator<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Boolean, ExplorationConstraint<Boolean>> { /** Prototype constructor. */ public MappingEvaluatorConstraint() { @@ -54,7 +57,8 @@ public class MappingEvaluatorConstraint extends TaskMappingEvaluator implements /** {@inheritDoc} */ @Override - public Value<?> evaluateGoal(TaskMappingEncoding phenotype, + public Value<?> evaluateGoal( + TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> phenotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap, ClassToInstanceMap<EObject> transformedModels) { mapping = phenotype; @@ -91,7 +95,7 @@ public class MappingEvaluatorConstraint extends TaskMappingEvaluator implements /** {@inheritDoc} */ @Override - public IExplorationTargetEvaluator<TaskMappingEncoding, Double, ExplorationTarget<Double>> + public IExplorationTargetEvaluator<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Double, ExplorationTarget<Double>> createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, ExplorationTarget<Double> explorationTarget) throws InstantiationException, Exception { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java index 9f373511bbf5d8e8b9f0b6da575f51fdf2a5c037..6e39ec41520b2ae0cebfad201a092720492ba4dc 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/constraint/SafetyIntegrityLevelConstraintEvaluator.java @@ -126,7 +126,8 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM // TODO: Port to org.fortiss.af3.safety /** Helper function for the calculation of the actual SIL of a deployed component. */ - private SIL detectSIL(IDeployableComponentAdapter<?> deployableComponent, + private SIL detectSIL( + @SuppressWarnings("unused") IDeployableComponentAdapter<?> deployableComponent, Collection<S> allEntries) { // Determine the number of replications onto different execution units. This separation is // yet very primitive. @@ -139,23 +140,23 @@ public class SafetyIntegrityLevelConstraintEvaluator<S extends InstantiatedTaskM // Determine the SIL of a "safety function", i.e. a safety-annotated component mapped onto // an execution unit, according to the tables given in IEC 61508-2. List<SIL> parallelSILs = new ArrayList<SIL>(); - for(IExecutionUnitAdapter<?> ecu : hwReplica) { - // TODO: Update the SafetyAnalysis Evaluator with comparable SILs. - // double sff = ecu.getSafeFailureFraction(); - // if(sff >= 0.0 && sff < 0.6) { - // parallelSILs.add(SIL.SIL0); - // } else if(sff < 0.9) { - // parallelSILs.add(SIL.SIL1); - // } else if(sff < 0.99) { - // parallelSILs.add(SIL.SIL2); - // } else if(sff <= 1.0) { - // parallelSILs.add(SIL.SIL3); - // } else { - // throw new RuntimeException( - // "An invalid value for the safe failure fraction has been given to the optimization. - // The allowed range is 0 to 1."); - // } - } + // for(IExecutionUnitAdapter<?> ecu : hwReplica) { + // TODO: Update the SafetyAnalysis Evaluator with comparable SILs. + // double sff = ecu.getSafeFailureFraction(); + // if(sff >= 0.0 && sff < 0.6) { + // parallelSILs.add(SIL.SIL0); + // } else if(sff < 0.9) { + // parallelSILs.add(SIL.SIL1); + // } else if(sff < 0.99) { + // parallelSILs.add(SIL.SIL2); + // } else if(sff <= 1.0) { + // parallelSILs.add(SIL.SIL3); + // } else { + // throw new RuntimeException( + // "An invalid value for the safe failure fraction has been given to the optimization. + // The allowed range is 0 to 1."); + // } + // } // Determine the overall SIL of the safety function considering the hardware replication. // The upper limit is set to 4, in accordance with IEC 61508. diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings index b3af968cfd7fe8bd3cb875086f8e9989e520d686..4e26c4bffa97a79f984a155b5f48782656956df0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/.ratings @@ -1,5 +1,5 @@ -EnergyObjectiveEvaluator.java 02220e3d8cee11e21c0107d27d0e559b038471f3 RED -FailSilentReliabilityEvaluator.java 4971dc34163580168686c3db9c0216defaa19631 RED -FaultDetectionVotingReliabilityEvaluator.java 519228a5192f9e70c088e101dd766767f10dda1f RED -MappingEvaluatorObjective.java 9a07bad8acb0b63e9798097435bdaed7a0ddf09b RED -ReliabilityEvaluatorBase.java baea1cb7dc9f90e4bf763ef542c182aa497d1057 RED +EnergyObjectiveEvaluator.java 5d9f8a7b9144fd8eb3b70dc6c66b2624bf3cddb1 RED +FailSilentReliabilityEvaluator.java 8808fe9805ec75dad6d44e97d320ececb9501742 RED +FaultDetectionVotingReliabilityEvaluator.java 4e7edb17054a81aec398c9d95e99b0a1e8268322 RED +MappingEvaluatorObjective.java 6258cac448f074f569bd750e54892cc2652fb613 RED +ReliabilityEvaluatorBase.java e20aadec51a62a486a03c9e47da074613c6bea42 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java index d554da612cb158538edfa6c3fb422611fb745695..f162a2bcd8c0eae84f1b48bbfbd5563c14acd355 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/EnergyObjectiveEvaluator.java @@ -89,8 +89,7 @@ public class EnergyObjectiveEvaluator<S extends TaskMappingEntry<IDeployableComp (IExecutionUnitAdapter<?>)deploymentTarget; // TODO: Rework Schedule to avoid casting. IDeployableComponentAdapter<?> deployedComponent = - (IDeployableComponentAdapter<?>)t.getDeployedRequester() - .getSource(); + t.getDeployedRequester().getSource(); energy += deployedComponent.getEnergyConsumption(executionUnit); } else if(deploymentTarget instanceof ICommunicationResourceAdapter) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java index 0f022d9fbdc884ab29d841415d8afefd09611975..a6e25f949fdbf2c3dfd803714d4cddeb987391de 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FailSilentReliabilityEvaluator.java @@ -47,7 +47,7 @@ public class FailSilentReliabilityEvaluator extends @Override protected double evaluateInternal( StrictTTSchedule<FailSilentTaskMappingEntry, FailSilentTaskMappingEncoding> schedule, - FailSilentTaskMappingEncoding itmEnc, DefaultTaskGraph taskGraph, + FailSilentTaskMappingEncoding itmEnc, DefaultTaskGraph<?> taskGraph, FailureType failureProbabilityType) { // for the StrictTTFaileSilence model, no sdc could occur diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java index 6c002733e5d0cea6adba0d6b5c2cba7e2ba6316c..f0b05a668cd610a23df634fdb0c49aa5c7500ebe 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/FaultDetectionVotingReliabilityEvaluator.java @@ -108,7 +108,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends null; /** Last task graph */ - private DefaultTaskGraph lastTaskGraph = null; + private DefaultTaskGraph<?> lastTaskGraph = null; /** Last analysis result */ private ReliabilityMeasure lastResult = null; @@ -130,7 +130,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends @Override public double evaluateInternal( StrictTTSchedule<FaultDetectionVotingTaskMappingEntry, FaultDetectionVotingTaskMappingEncoding> schedule, - FaultDetectionVotingTaskMappingEncoding itmEnc, DefaultTaskGraph taskGraph, + FaultDetectionVotingTaskMappingEncoding itmEnc, DefaultTaskGraph<?> taskGraph, FailureType failureProbabilityType) { // TODO: Implement this caching in a safer way, and potentially extend it to other cases. @@ -189,7 +189,8 @@ public class FaultDetectionVotingReliabilityEvaluator extends /** Entry point for task analysis */ private ReliabilityMeasure taskAnalysis(IDeployableComponentAdapter<?> deployableComponent, - DefaultTaskGraph taskgraph, Collection<FaultDetectionVotingTaskMappingEntry> mappings) { + DefaultTaskGraph<?> taskgraph, + Collection<FaultDetectionVotingTaskMappingEntry> mappings) { ReliabilityMeasure rm = new ReliabilityMeasure(); ActorAnalysisNode start = new ActorAnalysisNode(); @@ -202,7 +203,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends /** Analyzes the reliability of a task. */ private void taskAnalysis(IDeployableComponentAdapter<?> deployableComponent, - ActorAnalysisNode current, DefaultTaskGraph taskgraph, ReliabilityMeasure rm, + ActorAnalysisNode current, DefaultTaskGraph<?> taskgraph, ReliabilityMeasure rm, List<FaultDetectionVotingTaskMappingEntry> mappings) { // the start node @@ -283,7 +284,7 @@ public class FaultDetectionVotingReliabilityEvaluator extends * Defines the reliability value assigned to the logical components. * @return {@link ReliabilityMeasure} for the given {@link TaskGraph}. */ - private ReliabilityMeasure appAnalysis(DefaultTaskGraph tg, + private ReliabilityMeasure appAnalysis(DefaultTaskGraph<?> tg, Map<IDeployableComponentAdapter<?>, ReliabilityMeasure> actorReliabilities) { ReliabilityMeasure rm = new ReliabilityMeasure(); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java index a3a217f44d4e05f06069878ecd4d833a98a3af19..4ce36691ed8d57d7aba912730a42bd6a5c244cc9 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java @@ -18,11 +18,14 @@ package org.fortiss.af3.exploration.alg.dse.evaluator.objective; import java.math.BigInteger; import org.eclipse.emf.ecore.EObject; +import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.Partition; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.partitionmapping.PartitionMappingEncoding; 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.extensions.compositegene.phenotype.FlatPhenotypeMap; import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype; import org.fortiss.af3.exploration.alg.dse.evaluator.TaskMappingEvaluator; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.service.IExplorationTargetEvaluator; import org.fortiss.af3.exploration.dsl_v2.model.arithmetic.IArithmeticExpression; @@ -63,7 +66,8 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator { /** {@inheritDoc} */ @Override - public Value<?> evaluateGoal(TaskMappingEncoding phenotype, + public Value<?> evaluateGoal( + TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>> phenotype, FlatPhenotypeMap<Phenotype> phenotypeTypeMap, ClassToInstanceMap<EObject> transformedModels) throws Exception { mapping = phenotype; @@ -82,7 +86,8 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator { assert (minMaxTerm != null); // The minMax Term is always non-zero. - Number retVal = minMaxTerm.accept(this, Number.class); + // TODO: redefine the + @SuppressWarnings("null") Number retVal = minMaxTerm.accept(this, Number.class); return retVal instanceof BigInteger ? new IntegerValue(retVal.intValue()) : new DoubleValue(retVal.doubleValue()); @@ -104,7 +109,7 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator { /** {@inheritDoc} */ @Override - public IExplorationTargetEvaluator<TaskMappingEncoding, Double, ExplorationTarget<Double>> + public IExplorationTargetEvaluator<TaskMappingEncoding<IDeployableComponentAdapter<?>, TaskMappingEntry<IDeployableComponentAdapter<?>, Partition>>, Double, ExplorationTarget<Double>> createEvaluator(SystemModelAdapter<?, ?, ?, ?, ?, ?> systemModelAdapter, ExplorationTarget<Double> explorationTarget) throws InstantiationException, Exception { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java index e41f5cedb36eee56c472a4b114a27f031f710cfc..17ad13626b7f899866f495aaecf03ef355f6b643 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/ReliabilityEvaluatorBase.java @@ -247,7 +247,7 @@ public abstract class ReliabilityEvaluatorBase<S extends InstantiatedTaskMapping * If the failure probability is 0, -100 is returned to avoid log(0). */ protected abstract double evaluateInternal(StrictTTSchedule<S, T> schedule, T itmEnc, - DefaultTaskGraph taskGraph, FailureType failureProbabilityType); + DefaultTaskGraph<?> taskGraph, FailureType failureProbabilityType); /** * {@inheritDoc} diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings index 2106354e6a5edec580d21df79cd6ba52f2c4c7ef..c3c1a8a1736c1cf1db858eaeb01675ecc3106d62 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/.ratings @@ -1,6 +1,6 @@ ComponentArchitectureFinalizer.java ec0e29b2ed27aecccae28bab0253b8e068276a17 RED ComponentArchitectureInitializer.java 4b1e1f03b6205b91e6a9dae5ae5f77ad5ef9ed78 RED ComponentArchitectureInserter.java 9ab94811d460d06fa1ce2f72e40911beb7982e94 RED -ComponentArchitectureInstantiator.java 9258569c6b1a43bcdde104fc133d444f6ae5d002 RED -ComponentArchitectureReplicator.java cbf6fcc9c69b4833664fe10dc5eac0941f014870 RED +ComponentArchitectureInstantiator.java afa254d07ee7590e5f6a0d6f289673005f872b62 RED +ComponentArchitectureReplicator.java a3f395333815fc495c7cc306fe998092d552bdb5 RED ComponentArchitectureTransformer.java 9eded58c64a6077a3a5cb13cf3d7d78779b70a49 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java index f548e095bf5e4034a9d606f59be7cf3ce872e957..ba60a39fb176f74b062b1ec8617bedeb7f001eb6 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureInstantiator.java @@ -179,7 +179,7 @@ public class ComponentArchitectureInstantiator instantiatedComponent); instantiatedComponents.add(instantiatedComponent); } else { - IMappingEntry abstrEntr = pickFirstInstanceOf(AbstractTaskMappingEntry.class, + IMappingEntry<?, ?> abstrEntr = pickFirstInstanceOf(AbstractTaskMappingEntry.class, entry.getAssociatedElement()); Component genComp = (Component)encEntryModelElemAssoc.get(abstrEntr, Component.class); @@ -235,7 +235,7 @@ public class ComponentArchitectureInstantiator /** Updates the association maps with the modifications introduced by the instantiation. */ // TODO: generalize this update method to also consider children. - private void updateAssocMaps(IMappingEntry entry, Component poolComponent, + private void updateAssocMaps(IMappingEntry<?, ?> entry, Component poolComponent, Component origComponent, Component abstrGenComponent, Component instantiatedComponent) { origToGenAssocMap.remove(origComponent, abstrGenComponent); origToGenAssocMap.put(origComponent, instantiatedComponent); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java index 2f731c353e33c96c0d62da2319febd74a9c3e316..44414a36541c474c84da9520e8aab4d5c815d1b5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/comparch/ComponentArchitectureReplicator.java @@ -235,7 +235,7 @@ public class ComponentArchitectureReplicator e); } - for(IMappingEntry entry : mapping.getMappingEntries()) { + for(IMappingEntry<?, ?> entry : mapping.getMappingEntries()) { if(!isPartOfIsolationCommConstraint( mapping.getConstraintsOf(InternalIsolatedCommunicationSet.class), entry)) { continue; @@ -244,7 +244,7 @@ public class ComponentArchitectureReplicator Collection<InternalIsolatedCommunicationSet> others = getOtherIsolationCommConstraints(mapping, entry); for(InternalIsolatedCommunicationSet otherSet : others) { - for(IMappingEntry conEntry : otherSet.getIsolatedCommunicationSet()) { + for(IMappingEntry<?, ?> conEntry : otherSet.getIsolatedCommunicationSet()) { Component otherGenComp = (Component)encEntryModelElemAssoc.get(conEntry, Component.class); removeAllConnectionsBetween(genComponent, otherGenComp); @@ -275,7 +275,7 @@ public class ComponentArchitectureReplicator * include the given {@link IMappingEntry}. */ private static Collection<InternalIsolatedCommunicationSet> getOtherIsolationCommConstraints( - TaskMappingEncoding<?, ?> encoding, IMappingEntry entry) { + TaskMappingEncoding<?, ?> encoding, IMappingEntry<?, ?> entry) { Collection<InternalIsolatedCommunicationSet> otherConstraints = new HashSet<>(); Collection<InternalIsolatedCommunicationSet> isoComm = encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class); @@ -293,7 +293,7 @@ public class ComponentArchitectureReplicator * {@link InternalIsolatedCommunicationSet}s. */ private static boolean isPartOfIsolationCommConstraint( - Collection<InternalIsolatedCommunicationSet> isoComm, IMappingEntry entry) { + Collection<InternalIsolatedCommunicationSet> isoComm, IMappingEntry<?, ?> entry) { for(InternalIsolatedCommunicationSet constr : isoComm) { if(constr.contains(entry)) { return true; diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings index 7d01ed135cf726233d25ed3f1478d7df8ed66f9d..488e7cf243cfeb674e0824705b873a0776b9f34b 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/.ratings @@ -1,4 +1,4 @@ -DeploymentFinalizer.java 39bb5a9d1953ca96b4713fa34a72a7c3e3d54e08 RED +DeploymentFinalizer.java 092db412513fd59d462e2a796c324281d335c2c3 RED DeploymentInitializer.java 9d5023ee12fc92185bb418c735f1d6c5196dcab8 RED DeploymentReplicator.java 7c65dd646ca37477be592bb620536f15c48fa1f8 RED -ExplorationSolutionToDeployment.java 2013adebdac360e8113acb05e640661c484a0a8a RED +ExplorationSolutionToDeployment.java 8a8f53838eab59d0ce3af8950e313f9969ee130c RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java index 8202d405e0e98d2485aa8a63739073955239a27e..54c00ad2e2b7878d7dcc7974e4abd9e2a2f9106b 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/DeploymentFinalizer.java @@ -113,7 +113,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> { ExplorationEncodingMap<IExplorationEncoding> explorationEncodings, SubClassToInstanceMap<N> transformedModels, EObject outputModel) throws TransformationModuleException { - IMappingEncoding mapping = explorationEncodings.getEncoding(IMappingEncoding.class); + @SuppressWarnings("unchecked") IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>>> mapping = + explorationEncodings.getEncoding(IMappingEncoding.class); if(mapping == null) { throw new TransformationModuleException(this, "An IMappingEncoding is required for this module to operate properly."); @@ -166,10 +167,10 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> { * processed in an AF3 compatible {@link Deployment}. */ private List<ComponentAllocation> allocateComponentsToExecutionUnits( - IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>>> mappingEncoding) { + IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, ?> mapping) { List<ComponentAllocation> componentToExecutionUnitAllocations = new ArrayList<ComponentAllocation>(); - for(IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>> curEntry : mappingEncoding + for(IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>> curEntry : mapping .getMappingEntries()) { Component curComponent = (Component)encEntryModelElemAssoc.get(curEntry, Component.class); @@ -178,7 +179,8 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> { // replication that is performed for abstract entries while we have instantiated entries // here. if(curComponent == null) { - for(IMappingEntry assocEntry : curEntry.getAssociatedElement()) { + for(IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>> assocEntry : curEntry + .getAssociatedElement()) { curComponent = (Component)encEntryModelElemAssoc.get(assocEntry, Component.class); if(curComponent != null) { @@ -203,13 +205,17 @@ public class DeploymentFinalizer extends TransformationModuleBase<Deployment> { */ // TODO: how to handle instantiated components? private void createDeploymentParameterMap(ComponentArchitecture originalCA, - PlatformArchitecture originalPA, Deployment deployment, IMappingEncoding mapping) { + PlatformArchitecture originalPA, Deployment deployment, + IMappingEncoding<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IExecutionUnitAdapter<?>>> mapping) { List<Deployment> allDeploymentsWithParameters = getDeploymentsWithParametersOf(originalCA, originalPA); // Get the referenced Component Pool of the original Component Architecture & the deployment // specific parameters. - ComponentArchitecture compPool = getFirstComponentPool(mapping); + // Ugly casting is needed due to limitations in Java to recognize subtypes in generic + // handling. + @SuppressWarnings({"rawtypes", "unchecked"}) ComponentArchitecture compPool = + getFirstComponentPool((IMappingEncoding)mapping); List<Deployment> poolParameterDeployments = getDeploymentsWithParametersOf(compPool, originalPA); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java index 6ed5053b10106f33657f700839d5268e777648bb..dda88dcff473476601968f2cb9a1c0daa5dc4d5d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/modeltransformation/deployment/ExplorationSolutionToDeployment.java @@ -92,7 +92,8 @@ public class ExplorationSolutionToDeployment extends TransformationStrategyBase< SubClassToInstanceMap<N> transformedModels, EObject outputModel) throws TransformationModuleException { if(state == TransformationState.INITIALIZING) { - IMappingEncoding mapping = explorationEncodings.getEncoding(IMappingEncoding.class); + @SuppressWarnings("unchecked") IMappingEncoding<IDeployableComponentAdapter<?>, ?, IMappingEntry<IDeployableComponentAdapter<?>, ?>> mapping = + explorationEncodings.getEncoding(IMappingEncoding.class); if(mapping == null) { throw new TransformationModuleException(this, "An IMappingEncoding is required for this module to operate properly."); 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 4b52b55836a65abfd504612a53f41a5b25b163ad..a88db7b2c802fd70c30e9bec9c4efc7b425529ea 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 ad44b628dbebce557336757e62959c18b3a81816 RED -FaultDetectionVotingExecModelFactory.java 93c534680243eb4d469042505f2484189cf68ffe RED +FailSilentExecModelFactory.java ce11e05c0e28b6a097b518c8c64c7dbb69fa0cdd RED +FaultDetectionVotingExecModelFactory.java 14645f9d06fa26cdc9e7ebc65b2e590a39969e63 RED 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 c6b7235f1eba9aea3519fc354b77e191fb303a64..757b45994da7168aadd16998b070be187311d422 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 @@ -13,6 +13,5 @@ ISafetyFunctionAdapter.java 594df1308c5ea7ab7320129ec3ba77f3f2d584e1 RED ISignalAdapter.java 6bc37547141af089e14b7615eb39910bf2a24c98 RED ITransmissionUnitAdapter.java 8965b73bfe9ef232a2a6d5427f7001761716d583 RED InternalComponentParameters.java 2b19f4eeddee84e4c6e558ed9a1613cba33b7665 RED -PlatformCommunicationGraph.java 2027ae507bc0917546cf2c32098aacc1ed582472 RED -SystemModelAdapter.java d88a9d02727ad2f92d73701da57f3b3e738d16d7 RED +SystemModelAdapter.java 134da2696e1a36e9d7e1b042b0bab3158d05a3bf RED SystemParameterContainer.java eddfc430acd8661dfe8ffbf191ef71a83157eff5 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 ac3d139ebe9644d5d078985add090745bff72afd..1f33576017cbad9d4a07a00c4486f6ad8f32297b 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 @@ -312,7 +312,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { // Temporary task graph: add vertices (= software components / tasks that need to be mapped // to processing elements, and that potentially require data from other software components) - DefaultTaskGraph temporaryTaskGraph = new DefaultTaskGraph(); + DefaultTaskGraph<?> temporaryTaskGraph = new DefaultTaskGraph<>(); // createTaskForrest(); for(IDeployableComponentAdapter<?> deployableComponent : deployableComponents) { temporaryTaskGraph.addTask(deployableComponent); @@ -368,7 +368,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { List<Set<IDeployableComponentAdapter<?>>> connectedSets = ci.connectedSets(); // Reconstruct TaskGraphs from vertex sets of connected components for(Set<IDeployableComponentAdapter<?>> connectedSet : connectedSets) { - TaskGraph taskGraph = new DefaultTaskGraph(); + TaskGraph taskGraph = new DefaultTaskGraph<>(); Graphs.addAllVertices(taskGraph.getGraph(), connectedSet); for(ISignalAdapter<?> message : messages) { @@ -426,9 +426,10 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { new HashMap<IDeployableComponentAdapter<C>, T>(); for(T taskGraph : graphs) { - for(@SuppressWarnings("rawtypes") IDeployableComponentAdapter deployableComponent : taskGraph - .getGraph().vertexSet()) { - componentToGraphMap.put(deployableComponent, taskGraph); + for(IDeployableComponentAdapter<?> deployableComponent : taskGraph.getGraph() + .vertexSet()) { + componentToGraphMap.put((IDeployableComponentAdapter<C>)deployableComponent, + taskGraph); } } @@ -515,7 +516,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { * * @throws Exception */ - private void addDataDependenciesToTaskGraph(DefaultTaskGraph taskGraph) throws Exception { + private void addDataDependenciesToTaskGraph(DefaultTaskGraph<?> taskGraph) throws Exception { // TODO: Currently, top-level components are considered as deployable components (=tasks) for(ISignalAdapter<?> channelAdapter : messages) { @@ -818,7 +819,7 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { * Returns the {@link DefaultTaskGraph} in which a given deployable component (=task) is * contained. */ - public DefaultTaskGraph + public DefaultTaskGraph<?> getAcyclicTaskGraph(IDeployableComponentAdapter<?> deployableComponent) { return componentInAcyclicGraph.get(deployableComponent); } @@ -952,6 +953,8 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { * Set of already traversed connectors (to avoid loops). * @param nextTargetConnector * Current {@link IConnector} whose target {@link IConnector}s need to be searched. + * @param deploymentTargets + * Set of execution units present on the target platform. * @return Collection of {@link IConnector}s that are actual target {@link IConnector}s of the * {@code sourceConnector}. */ @@ -1006,7 +1009,6 @@ public class SystemModelAdapter<C, E, S, G, TR, M> { } } } - for(IConnection currConn : connectorTgt.getIncoming()) { IConnector currTgtConnector = currConn.getSource(); if(currTgtConnector.getOwner().getContainer() != tgtElement) { diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings index 2b38cc6910abf2fe60b5f5604256592b2f4d0af5..9f8fbf3e092186ce2ba2dc524e91939af8972c16 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/.ratings @@ -1,4 +1,4 @@ -AF3DeployableComponentAdapter.java 12703eb580d9c8e09e2c4660db114f38e3b12c20 RED +AF3DeployableComponentAdapter.java e19b08011718d3aaa1c072945f4d0c1b723add2f RED AF3ExecutionUnitAdapter.java 95b1d4b3e933372e5e45e41ecd4e2730f823bcc5 RED AF3GatewayAdapter.java f61ab5ff2fa58f561ea6720ba1add06c0d1f437e RED AF3LogicalArchitectureAdapter.java b129b15fefcd1864df1d2584f2ca0820ef6600c4 RED @@ -9,5 +9,5 @@ AF3RequestAdapter.java 8b551cf83401d93705d0527184a961ea8244daa3 RED AF3ResourceAdapter.java f20b7da41445acadc3d3cc5b662a993ecbaed47a RED AF3ResourceConnectionAdapter.java b0804eb7d4a2b36065d45bfd90ad548ca7e6c0f8 RED AF3SignalAdapter.java 66182f23909cf222fff5524158525bf432239b35 RED -AF3SystemModelAdapter.java 44a475a40479856fa35b147eb71bfcd3ea3f1060 RED +AF3SystemModelAdapter.java e65fffe8d5970a65296f57434a980cd7035994fc RED AF3TransmissionUnitAdapter.java 9221b239d1d54cc0b2f01b3c385faa660ed1d3e0 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java index 14cb34aa0db6985c8c82f17b8c75fda73e29e9d1..daa63fdb17aabf824a10eb5bcd4505c0b11bfe61 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/af3/AF3DeployableComponentAdapter.java @@ -36,6 +36,7 @@ import org.fortiss.af3.safety.model.annotation.SafetyIntegrityLevel; public class AF3DeployableComponentAdapter extends AF3RequestAdapter<Component> implements IDeployableComponentAdapter<Component> { /** Map of possible Wcets defined by the deployment target. */ + @SuppressWarnings("unused") private Map<IExecutionUnitAdapter<?>, Double> wcetMap; /** Map of possible energy consumption defined by the deployment target. */ 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 9857a36f4e3eb903e3043531ea59426a83b96ee3..269ee57a865915bb8b52c54145c41d57f9746834 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 5a4c07640b15eff2da05b8054547d2ad03704ed9 RED +AcyclicTaskGraph.java 87b725593dd67491bdc28b8f41c5cc75d19eea64 RED ChannelAdapterWeightedEdge.java ef160bea5d74f09617388767313657dd76283f61 RED -DefaultTaskGraph.java 51fc0ef55ba32b59c95feb6989be1ecb32b5334e RED -TaskGraph.java 4a22a1beb6129396b7b478624bf1df2540598504 RED +DefaultTaskGraph.java bf03b79a978932543c71424ed1dcfb549dfbd9f8 RED +TaskGraph.java 0e859151bb4ff33f3203e013edd08e5f3e95f439 RED TaskGraphInstantiator.java fe92d5016c6c5b901c20ab418566286ef58d5a9c RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java index 3ba439ef31c4bde638fd848a29cd28c17202fa49..a682e516b159d9ec18357234332afc56ed910692 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/AcyclicTaskGraph.java @@ -32,9 +32,12 @@ import org.jgrapht.alg.interfaces.MinimumSpanningTree; import org.jgrapht.graph.ListenableDirectedWeightedGraph; /** - * Creates a Directed acyclic task graph of all the {@link IDeployableComponentAdapter}s. <li>Each - * {@link ISignalAdapter} is examined:</li> <li>If there exists no path between a target of the - * {@link ISignalAdapter} and it source, add an edge to the {@link DefaultTaskGraph}.</li> <li> + * Creates a Directed acyclic task graph of all the {@link IDeployableComponentAdapter}s. + * <li>Each + * {@link ISignalAdapter} is examined:</li> + * <li>If there exists no path between a target of the + * {@link ISignalAdapter} and it source, add an edge to the {@link DefaultTaskGraph}.</li> + * <li> * Otherwise, a loop is detected. Then, the detected loop is cut either by not adding the edge (if * the source vertex is strongly causal) or by removing an edge between the vertices (i.e. * {@link IDeployableComponentAdapter}s) that are closest to the current {@link ISignalAdapter} by @@ -45,7 +48,7 @@ import org.jgrapht.graph.ListenableDirectedWeightedGraph; * * @author diewald */ -public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph { +public class AcyclicTaskGraph extends DefaultTaskGraph<AcyclicTaskGraph> { /** Constructor. */ public AcyclicTaskGraph() { @@ -83,6 +86,8 @@ public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph { } /** {@inheritDoc} */ + // TODO: Parameterize the task graph correctly. + @SuppressWarnings("unchecked") @Override public AcyclicTaskGraph copy() { AcyclicTaskGraph clonedTaskGraph; @@ -106,8 +111,8 @@ public class AcyclicTaskGraph extends DefaultTaskGraph implements TaskGraph { * Transforms all existing {@link TaskGraph}s of {@code this} {@link TaskGraphEncoding} into * {@link AcyclicTaskGraph}s. */ - public static <T extends TaskGraph> Collection<AcyclicTaskGraph> transformToAcyclicGraphs( - Collection<T> cyclicTGs) { + public static <T extends TaskGraph> Collection<AcyclicTaskGraph> + transformToAcyclicGraphs(Collection<T> cyclicTGs) { Collection<AcyclicTaskGraph> acyclicTGCollection = new ArrayList<>(); for(TaskGraph tg : cyclicTGs) { AcyclicTaskGraph acycTG = new AcyclicTaskGraph(tg); 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 df19ad2b95f6a576ef91edb409a2b060854fb3e9..b75b7d354ba365ebd5865c98839bc62352f8fde9 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 @@ -54,7 +54,7 @@ import com.google.common.collect.Multimap; * @author huang */ -public class DefaultTaskGraph implements TaskGraph, Cloneable { +public class DefaultTaskGraph<T extends DefaultTaskGraph<?>> implements TaskGraph, Cloneable { /** Underlying graph implementation */ // TODO: Add a weight w.r.t. transmission time, when deployed protected ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> graph; @@ -79,9 +79,8 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable { /** Creates an empty {@link DefaultTaskGraph}. */ public DefaultTaskGraph() { - graph = - new ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>( - ChannelAdapterWeightedEdge.class); + graph = new ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge>( + ChannelAdapterWeightedEdge.class); taskFaultDetectorsMap = new HashMap<IDeployableComponentAdapter<?>, SortedSet<FaultDetector>>(); @@ -155,8 +154,8 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable { IDeployableComponentAdapter<?> destinationComponent, ISignalAdapter<?> channelAdapter) { graph.addVertex(sourceComponent); graph.addVertex(destinationComponent); - return graph.addEdge(sourceComponent, destinationComponent, new ChannelAdapterWeightedEdge( - channelAdapter)); + return graph.addEdge(sourceComponent, destinationComponent, + new ChannelAdapterWeightedEdge(channelAdapter)); } /** {@inheritDoc} */ @@ -168,8 +167,7 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable { // TODO: Get rid of this method! /** {@inheritDoc} */ @Override - public - ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> + public ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> getGraph() { return graph; } @@ -201,7 +199,8 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable { // TODO: readd the period consistency check for task graphs. // if(period != null && !period.equals(deployableComponentPeriod)) { // throw new InvalidTimingModelException( - // "The periods of the task graph could not be identified. Currently, only tasks with the same period or non-periodic task graphs are allowed."); + // "The periods of the task graph could not be identified. Currently, only tasks with + // the same period or non-periodic task graphs are allowed."); // } } } @@ -267,10 +266,10 @@ public class DefaultTaskGraph implements TaskGraph, Cloneable { /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override - public DefaultTaskGraph copy() { - DefaultTaskGraph clonedTaskGraph; + public T copy() { + T clonedTaskGraph; try { - clonedTaskGraph = (DefaultTaskGraph)super.clone(); + clonedTaskGraph = (T)super.clone(); } catch(CloneNotSupportedException e) { throw new AssertionError(); } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java index b780ceb0311202d194f042d30641058242ea9fd7..4fbbb98a2e274c403e854fd5c5b3df07fc68beb3 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/arch/taskgraph/TaskGraph.java @@ -40,8 +40,7 @@ public interface TaskGraph { // TODO: Get rid of this method! /** Returns the underlying {@link ListenableDirectedWeightedGraph}. */ - public - ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> + public ListenableDirectedWeightedGraph<IDeployableComponentAdapter<?>, ChannelAdapterWeightedEdge> getGraph(); /** 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 fa19520a017a5d6c105704f400ad72371f8a6c84..e1693337349e028a023007aea9ea99156d991cc7 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 6c99d518bfc9e31bb174c299017b561ec69314aa RED -MessageGenerator.java 4d7b8bb7d59a10129c686a344241701f9b0fd376 RED +Message.java c76010ee09dbf91335ddbba7dd062c961c94a23b RED +MessageGenerator.java cc0c56a394e5ccbd909d981305d52ba2021fc8fd RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java index 7f8b1c9f0472a7b635a9bf971d47c4f56f657233..d304ff9b301daa5ff56b2d620b9ebef350ca6412 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/comm/Message.java @@ -173,7 +173,7 @@ public class Message implements Comparable<Message> { } /** Returns the {@link IMappingEntry} of the sender of this message. */ - public IMappingEntry getSender() { + public IMappingEntry<?, ?> getSender() { return sender; } 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 d8d5c45482f03ad8fd27641bb5cd95839b023463..44ec4c47a70eb8c86cf3652d6a12390d3d774b49 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 @@ -126,6 +126,7 @@ public class MessageGenerator<S extends TaskMappingEntry<IDeployableComponentAda * {@link IMappingEntry}s if the sender and the receiver are not mapped onto the same * {@link IExecutionUnitAdapter}. */ + @SuppressWarnings("unchecked") private Message generateMessageForSenderEntry(ISignalAdapter<?> senderChannel, InstantiatedTaskMappingEntry senderMappingEntry, Collection<S> mappingEntriesOfSuccesors, @@ -180,7 +181,8 @@ public class MessageGenerator<S extends TaskMappingEntry<IDeployableComponentAda private Collection<InternalIsolatedCommunicationSet> getOtherIsolationCommConstraints(T outGenotype, S entry) { // TODO: here we use the knowledge that we have instantiated task mapping entries. - IMappingEntry actualEntry = entry.getAssociatedElement(AbstractTaskMappingEntry.class); + IMappingEntry<?, ?> actualEntry = + entry.getAssociatedElement(AbstractTaskMappingEntry.class); Collection<InternalIsolatedCommunicationSet> otherConstraints = new HashSet<>(); Collection<InternalIsolatedCommunicationSet> isoComm = diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings index 82094e2594f7b8d73581e1e994671a05c0fe0d8a..9f82cf5a9ae7ffef61063f4017577640e18241e8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/.ratings @@ -1,2 +1,2 @@ -IMappingEncoding.java cd427e08588b59de29490c75c8a07947a115d4d7 RED -IMappingEntry.java eba204428624604d850b3656ff58d56fb0c69591 RED +IMappingEncoding.java faa8d770688ae74d54318b155be59d39a3fe3cd9 RED +IMappingEntry.java 21bbb8e403894b56a0b0b97685fa526c4ea01c25 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java index 84560179af261a2eb3ae1c3163ba3d2367810267..02378fcb8e8982995e1fc63d6a6c420ee365ec3e 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEncoding.java @@ -34,6 +34,10 @@ public interface IMappingEncoding<S extends IRequestAdapter<?>, T extends IResou */ public Collection<T> getAllocatedResourcesFor(S source); + /** + * Returns the set of {@link IResourceAdapter}s to which {@link IRequestAdapter}s can be + * allocated. + */ public Collection<T> getResources(); /** diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java index a667682d10863655d6318083ce485fa2c0c64370..616cd919c2519391255f0829626833789f76193c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/IMappingEntry.java @@ -33,5 +33,8 @@ public interface IMappingEntry<S extends IRequestAdapter<?>, T extends IResource /** Return target resource to which the request is mapped. */ T getTarget(); + /** + * Creates a clone/copy of the mapping entry containing the same source and target references. + */ IMappingEntry<S, T> clone(); } 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 dde6feb1a760f393f656f289d834ec65dc852474..ac2e908b501c508489411c6370142b943c34642a 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 614435555c3e3966179d5462220a2e008f5a5ec0 RED -MessageRouterBase.java bf2a94c29c4df1128816ba95be1bf55e0aca920b RED -ShortestPathRouter.java 5f5c7ec5a104015ada6d7552bacf2d4d3fe93b1e RED +IMessageRouter.java 502b0083ba82de6a70813c4c7ca9606ebb2ba65f RED +MessageRouter.java f3d02c7b380380b6020eb63240e8dd4537208819 RED +ShortestPathRouter.java 757864be955c0b8fae4ce490cfc843e29ea06729 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java index d70bea0a6e06bc4d44f1fe2e9275e4f6668f3bac..1117e989c2a92e41639f6304d5a729f1fa225305 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/sysmodel/mapping/comm/IMessageRouter.java @@ -31,8 +31,12 @@ import org.jgrapht.graph.DefaultEdge; * @author diewald */ public interface IMessageRouter { - + /** + * Defines the strategy implemented by a message router. Currently, only shortest path routing + * is supported. + */ public enum RoutingStrategy { + /** Route messages with a minimal number of intermediate hops. */ SHORTEST_PATH; } 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 9548c8bb361df0a94b7a5c386bb0d8217e020827..d1a348ad2041b1aa8c284f34fff3554bf1ae8f10 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 @@ -38,6 +38,7 @@ 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; /** Contains the calculated routes of the generated {@link Message}s. */ 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 86878edf838e472fdfb479ff0152a058029d6a9d..7fdcdf31a5500b2d9fda7dd143c8402491618e19 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 @@ -44,6 +44,7 @@ import org.jgrapht.graph.DirectedSubgraph; 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 */ @@ -80,12 +81,12 @@ public class ShortestPathRouter extends MessageRouter { // throw e; // } - if(shortestPathForCurrentMessage == null) { - shortestPathForCurrentMessage = - new BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>( - pcgEncoding.getActualGraph(), source); - // shortestPathForSender.put(source, shortestPathForCurrentMessage); - } + // if(shortestPathForCurrentMessage == null) { + shortestPathForCurrentMessage = + new BellmanFordShortestPath<IResourceAdapter<?>, DefaultEdge>( + pcgEncoding.getActualGraph(), source); + // shortestPathForSender.put(source, shortestPathForCurrentMessage); + // } for(IResourceAdapter<?> currentReceiver : receiverResources) { List<DefaultEdge> shortestMessagePath = null; 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 3efff2ade4bf2b5fdaa9423ef52725e80eca961b..76880c7d4fb1c0dc902694f5ac1bb248574dc785 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 f25bcd63b0a8dd2f5e72c72261246286bf48c841 RED +TDMABusScheduler.java b637503506b0a53020d35d3d944ec5d8c8f101bf RED 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 4a6e0c7660f06a6622635db0a2a094882957aa26..0c173fae0195c1e23cb94725c5ae6647287ec759 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 ccef414626ed16974de7a2524cf68fcef718fcb8 RED FailSilentEDFScheduler.java 121a3f20080cf87677e4cb6c695751ee7cf70cc9 RED -FaultDetectionVotingEDFScheduler.java 01c337cc9870e7ccdf9adf69a61474b0e8f13196 RED +FaultDetectionVotingEDFScheduler.java b16293a95822a802cf87ea88ecba7180913698c9 RED 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 382b708f21a8f23da602ea57ce05f18ab0055af1..ce73235a028825185cf32adaf6ef079197db332a 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 @@ -28,8 +28,8 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.TimeSlot; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IExecutionUnitAdapter; 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.ChannelAdapterWeightedEdge; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.taskgraph.TaskGraph; import org.fortiss.af3.exploration.alg.dse.sysmodel.faultmodel.FaultDetector; import org.fortiss.af3.exploration.model.ExplorationSpecification; @@ -66,7 +66,7 @@ public class FaultDetectionVotingEDFScheduler extends Apfloat voterDelay = new Apfloat(0, DOUBLE_PRECISION); - TaskGraph taskGraph = acycItgEnc.getTaskGraphOf(receiver); + AcyclicTaskGraph taskGraph = acycItgEnc.getTaskGraphOf(receiver); for(ChannelAdapterWeightedEdge edge : taskGraph.getGraph().incomingEdgesOf(receiver)) { IDeployableComponentAdapter<?> sender = taskGraph.getGraph().getEdgeSource(edge); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings index 4cd0265cd6a9ef27bdea68e8bdd37a3f41d27d28..54f52d20d29f95cf4ed433f0d876ac0c622bc867 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/.ratings @@ -1,3 +1,3 @@ DependencyEdge.java 2de1bcec554c6167f132b3808040704867c65b7f RED -DependencyGraph.java e5cb4014cde4fcec189db78b18e374bc4ea29c32 RED +DependencyGraph.java 3c7e6385ed928f6a0bf9d55c05a75415234bb25c RED IDependencyModule.java 51c66e0f96ef56e9c5f34ead3b4efeddf2193b55 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java index 7c5b263a7fd3dc96443ee6d842e94f10511774c6..719571f1f2313ba9df26a2009b01e4aade4f356b 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/DependencyGraph.java @@ -79,6 +79,10 @@ public abstract class DependencyGraph<V, T extends IDependencyModule<V, ? extend /** Operators which implement an identity operation. */ private Multimap<Class<? extends V>, T> identityOperators = HashMultimap.create(); + /** + * Identity operators whose only purpose is to place an input encoding in the phenotype. Such a + * operator does not declare any other dependencies. + */ private Map<Class<? extends V>, T> pureIdentityOperators = new HashMap<>(); /** Constructor. */ diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings index cb1ffee9f7acc0cdda6f917b45a3fe9ad97ca345..4e939f8bfee780eb6ae8f4c7eb9b0cf4bc40bf79 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/graph/display/.ratings @@ -1,6 +1,6 @@ AF3JGraphTVisualizer.java 3608982f88f8605806a93887c7637f05cfaad39f RED JGraphTVisualizer.java 178b8a5caeba118ce61d867a4f090bdfaaa33021 RED NamedAF3Vertex.java a149c2cc614086aeac840e5624af97b906802a4e RED -NamedVertex.java e2e0efb1b9fd37926907a6e3daf1a0e486b12ce7 RED +NamedVertex.java d7f25cd2df6da0569a4b7bcad23683a1cd9d244e RED ObjectJGraphTVisualizer.java 284fd7554765867b5b08701e502063c54d55ea05 RED ObjectVertex.java e9249d0502db6fe91b70f333c5dbe30ceadbc0e8 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings index 7e82944391be39c0f539fb17dbeffd44c6be2e74..eb3019420c2325b694900e85a43495baf1347176 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/.ratings @@ -1,6 +1,6 @@ -AF3Utils.java ae4bb78f77989e3a5689bfff80298c1bdeccdb3a RED +AF3Utils.java 32a99e6c777f54f31dd81e4771daf6067be1aa7e RED DesignSpaceExplorationModelElementFactory.java 9dc330973f132c4b936e4dc7ee8407614faf2ff6 RED -ExplorationAlgDebugUtils.java ff9feee46a3d00dd21d007a53f71f2de1ce10a94 RED +ExplorationAlgDebugUtils.java 74c0f408542f3656481173ee71a14dfef0a77814 RED ExplorationAlgUtils.java 1deb317ed1d276e778fb64d207a1784a4919518b RED ExplorationEcoreUtils.java 48ed07aec3cd93e66d37abc10d50636d591f1c71 RED GraphUtils.java a1cec037a4d54bcf196dc5eebddc72b033993d6f RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java index 18fff4f9cdf8e8508b060f1cd297960394673bac..35e1af1abe0566134578bf8d1ad5ca4309e6003c 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/AF3Utils.java @@ -55,6 +55,7 @@ import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.Ta import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.abstractmapping.AbstractTaskMappingEntry; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IDeployableComponentAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IModelElementAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IResourceConnectionAdapter.ConnectionType; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.SystemModelAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEncoding; @@ -604,7 +605,7 @@ public class AF3Utils { * {@code null} if none is found. */ public static ComponentArchitecture getFirstComponentPool( - IMappingEncoding<IDeployableComponentAdapter<?>, ?, IMappingEntry<IDeployableComponentAdapter<?>, ?>> mapping) { + IMappingEncoding<IDeployableComponentAdapter<?>, IResourceAdapter<?>, IMappingEntry<IDeployableComponentAdapter<?>, IResourceAdapter<?>>> mapping) { for(IDeployableComponentAdapter<?> deployableComponent : mapping.getRequesters()) { if(deployableComponent.isInstantiation()) { // TODO: Avoid casting: Parameterize the IModelElementAdapter to use EObject-derived diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java index 2ce3105a7cabe1af2c8259abbe768941ef8816af..adcf5a6c2ad9b9b7938969f7c41a946e14336cc5 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/util/ExplorationAlgDebugUtils.java @@ -109,7 +109,7 @@ public class ExplorationAlgDebugUtils { encoding.getConstraintsOf(InternalIsolatedCommunicationSet.class); // TODO: Remove the ugly casting when converting the internal constraints into "real" ones. for(InternalIsolatedCommunicationSet curConstr : constrs) { - for(IMappingEntry entry : curConstr.getIsolatedCommunicationSet()) { + for(IMappingEntry<?, ?> entry : curConstr.getIsolatedCommunicationSet()) { if(!encoding.containsEntry((AbstractTaskMappingEntry)entry)) { return false; }