Skip to content
Snippets Groups Projects
Commit c28043a7 authored by Alexander Diewald's avatar Alexander Diewald
Browse files

Exploration.alg: Remove moved Transformation methods.

* The SuperSet transformation methods are now implemented in a TransformationStrategy (Sub-package modeltransformation). Remove the leftover stubs.
refs 3254
parent 1b7aa078
No related branches found
No related tags found
No related merge requests found
CompositeExplorationSolution.java 7a32ca49d7ae4aa4ddc83a3c70ecdcfa5b1376a0 RED
CompositeExplorationSolution.java c35b0b0cf5658300b5e8c4f2cc9e217c29ae37a3 RED
DSEFactory.java 0a2f2cc6a197e760c1f8223339ffa5f16856b184 RED
Explorer.java 2194a74cbe51ca9e7dafb008dcefb51a54064dc8 RED
ImplicitExplorationTargetFactory.java e45c6c3344b46a275e2c74b5c714900229f5f8d3 RED
......
......@@ -15,13 +15,9 @@
+--------------------------------------------------------------------------*/
package org.fortiss.af3.exploration.alg.dse;
import static org.fortiss.af3.allocation.utils.AllocationModelElementFactory.createAllocationEntry;
import static org.fortiss.af3.exploration.alg.service.ExplorationService.getService;
import static org.fortiss.af3.exploration.alg.service.IExplorationTransformationService.TransformationContext.DSE_INTERNAL;
import static org.fortiss.af3.exploration.util.DSMLModelElementFactory.createSuperSet;
import static org.fortiss.af3.exploration.util.DesignSpaceExplorationModelElementFactory.createSingleExplorationSolution;
import static org.fortiss.af3.partition.util.PartitionModelElementFactory.createPartition;
import static org.fortiss.tooling.common.util.LambdaUtils.getFirst;
import java.util.ArrayList;
import java.util.Collection;
......@@ -30,20 +26,13 @@ import java.util.Map;
import java.util.Map.Entry;
import org.eclipse.emf.ecore.EObject;
import org.fortiss.af3.component.model.Component;
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.partitionmapping.PartitionMappingEntry;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEncoding;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.instantiatedmapping.InstantiatedTaskMappingEntry;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.extensions.compositegene.phenotype.Phenotype;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IExplorationSolution;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.IScheduleSolution;
import org.fortiss.af3.exploration.alg.dse.backend.opt4j.solution.StrictTTSchedule;
import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter;
import org.fortiss.af3.exploration.alg.service.ExplorationTransformationInputs;
import org.fortiss.af3.exploration.alg.service.IExplorationTransformationService;
import org.fortiss.af3.exploration.dsl_v2.model.expression.SuperSet;
import org.fortiss.af3.exploration.model.ExplorationTarget;
import org.fortiss.af3.exploration.model.SuperSetMap;
import org.fortiss.af3.exploration.model.solutions.ExplorationResult;
......@@ -51,11 +40,6 @@ import org.fortiss.af3.exploration.model.solutions.ExplorationSolution;
import org.fortiss.af3.exploration.model.solutions.SingleExplorationSolution;
import org.fortiss.af3.exploration.model.solutions.SolutionState;
import org.fortiss.af3.exploration.model.solutions.SolutionsFactory;
import org.fortiss.af3.partition.model.allocation.PartitionToExecutionUnitAllocationEntry;
import org.fortiss.af3.partition.model.allocation.TaskToPartitionAllocationEntry;
import org.fortiss.af3.platform.model.ExecutionUnit;
import org.fortiss.af3.platform.model.allocation.ComponentToExecutionUnitAllocationEntry;
import org.fortiss.af3.task.model.Task;
import org.fortiss.tooling.base.model.element.IModelElement;
import org.opt4j.core.Value;
......@@ -69,10 +53,6 @@ import com.google.common.collect.MutableClassToInstanceMap;
* @author barner
*/
public class CompositeExplorationSolution<P extends Phenotype> {
/** Relates the internal partition representation with generated AF3 Partitions. */
private Map<Partition, org.fortiss.af3.partition.model.Partition> partToAF3PartMap =
new HashMap<>();
/**
* Map to store the {@link SolutionQuantification} for all pareto-optimal
* {@link IExplorationSolution}s of an exploration run.
......@@ -112,9 +92,10 @@ public class CompositeExplorationSolution<P extends Phenotype> {
/** {@inheritDoc} */
@Override
public String toString() {
String rval = "After " + completedIterations +
" completed iterations, the exploration result contains " +
explorationResultMap.size() + " individual(s) (= archive size).\n\n";
String rval =
"After " + completedIterations +
" completed iterations, the exploration result contains " +
explorationResultMap.size() + " individual(s) (= archive size).\n\n";
for(IExplorationSolution<?> solution : explorationResultMap.keySet()) {
IScheduleSolution<?> scheduleSolution = solution.getSubSolution(StrictTTSchedule.class);
......@@ -154,8 +135,7 @@ public class CompositeExplorationSolution<P extends Phenotype> {
}
/**
* Returns {@code this} {@link CompositeExplorationSolution} as a {@link ExplorationSolution}
* .
* Returns {@code this} {@link CompositeExplorationSolution} as a {@link ExplorationSolution} .
*/
@SuppressWarnings("unchecked")
public <T, S extends IModelElement> ExplorationSolution convertToExplorationSolution()
......@@ -186,8 +166,7 @@ public class CompositeExplorationSolution<P extends Phenotype> {
}
ClassToInstanceMap<Phenotype> internalSolutions = MutableClassToInstanceMap.create();
for(Class<? extends Phenotype> solutionType : singleSolution
.getAllSubSolutionClasses()) {
for(Class<? extends Phenotype> solutionType : singleSolution.getAllSubSolutionClasses()) {
internalSolutions.put(solutionType, singleSolution.getSubSolution(solutionType));
}
......@@ -198,28 +177,12 @@ public class CompositeExplorationSolution<P extends Phenotype> {
// from the Phenotypes. This is the inverse setup of the model-oriented transformations
// where we request desired types. Here, we'd calculate all types that can be produced.
outputTypes.add(SuperSetMap.class);
// outputTypes.add(org.fortiss.af3.partition.model.Partition.class);
// outputTypes.add(ComponentToExecutionUnitAllocationEntry.class);
// outputTypes.add(TaskToPartitionAllocationEntry.class);
// outputTypes.add(PartitionToExecutionUnitAllocationEntry.class);
ExplorationTransformationInputs inputs =
new ExplorationTransformationInputs(null, internalSolutions);
Map<Class<EObject>, ?> solutionModels =
getService(IExplorationTransformationService.class)
.getTransformedModels(DSE_INTERNAL, null, inputs, outputTypes, "");
getService(IExplorationTransformationService.class).getTransformedModels(
DSE_INTERNAL, null, inputs, outputTypes, "");
singleExpSolution.setSolutionSets((SuperSetMap)solutionModels.get(SuperSetMap.class));
// InstantiatedTaskMappingEncoding<InstantiatedTaskMappingEntry> tm =
// singleSolution.getSubSolution(InstantiatedTaskMappingEncoding.class);
// PartitionMappingEncoding pmEncoding =
// singleSolution.getSubSolution(PartitionMappingEncoding.class);
// singleExpSolution.getSolutionSets().put(ComponentToExecutionUnitAllocationEntry.class,
// createCompExecUnitAllocs(tm, pmEncoding));
// singleExpSolution.getSolutionSets().put(org.fortiss.af3.partition.model.Partition.class,
// createPartitions(pmEncoding));
// singleExpSolution.getSolutionSets().put(PartitionToExecutionUnitAllocationEntry.class,
// createPartitionToExecutionUnitAllocations(pmEncoding));
// singleExpSolution.getSolutionSets().put(TaskToPartitionAllocationEntry.class,
// createTaskToExecutionUnitAllocations(tm));
// Invalid solutions are filtered before.
singleExpSolution.setSolutionState(SolutionState.OPTIMIZED);
......@@ -235,85 +198,4 @@ public class CompositeExplorationSolution<P extends Phenotype> {
return expSol;
}
/**
* Creates the {@link SuperSet} of {@link ComponentToExecutionUnitAllocationEntry} calculated by
* the DSE.
*/
private SuperSet<ComponentToExecutionUnitAllocationEntry> createCompExecUnitAllocs(
InstantiatedTaskMappingEncoding<InstantiatedTaskMappingEntry> tm,
PartitionMappingEncoding pmEncoding) {
SuperSet<ComponentToExecutionUnitAllocationEntry> compExecUnitAllocs = createSuperSet(
"Optimized_Allocations", ComponentToExecutionUnitAllocationEntry.class);
for(Partition resource : tm.getResources()) {
for(ITaskAdapter<?> task : tm.getRequesters(resource)) {
Component af3Component = task.getAssignedComponent();
ComponentToExecutionUnitAllocationEntry allocEntry =
createAllocationEntry(ComponentToExecutionUnitAllocationEntry.class);
allocEntry.getSourceElements().add(af3Component);
allocEntry.setTargetElement(
(IModelElement)getFirst(pmEncoding.getAllocatedResourcesFor(resource)).get()
.getObject());
compExecUnitAllocs.getEntries().add(allocEntry);
}
}
return compExecUnitAllocs;
}
/** Creates the {@link SuperSet} of generated partitions by the DSE. */
private SuperSet<org.fortiss.af3.partition.model.Partition>
createPartitions(PartitionMappingEncoding partMapping) {
SuperSet<org.fortiss.af3.partition.model.Partition> partitions =
createSuperSet("Partitions", org.fortiss.af3.partition.model.Partition.class);
int i = 0;
for(Partition internalPartition : partMapping.getRequesters()) {
org.fortiss.af3.partition.model.Partition af3Partition =
createPartition("Partition_" + i++);
partToAF3PartMap.put(internalPartition, af3Partition);
partitions.getEntries().add(af3Partition);
}
return partitions;
}
/**
* Creates the {@link SuperSet} of {@link TaskToPartitionAllocationEntry}s calculated by the
* DSE.
*/
private SuperSet<TaskToPartitionAllocationEntry> createTaskToExecutionUnitAllocations(
InstantiatedTaskMappingEncoding<InstantiatedTaskMappingEntry> taskMapping) {
SuperSet<TaskToPartitionAllocationEntry> allocations =
createSuperSet("TaskToPart", TaskToPartitionAllocationEntry.class);
for(InstantiatedTaskMappingEntry entry : taskMapping.getMappingEntries()) {
org.fortiss.af3.partition.model.Partition af3Partition =
partToAF3PartMap.get(entry.getTarget());
assert (af3Partition != null) : "Error in the mapping of internal Partitions --> AF3 Partitions.";
TaskToPartitionAllocationEntry af3AllocEntry =
createAllocationEntry(TaskToPartitionAllocationEntry.class);
af3AllocEntry.getSourceElements().add((Task)entry.getSource().getObject());
af3AllocEntry.setTargetElement(af3Partition);
allocations.getEntries().add(af3AllocEntry);
}
return allocations;
}
/**
* Creates the {@link SuperSet} of {@link PartitionToExecutionUnitAllocationEntry}s calculated
* by the DSE.
*/
private SuperSet<PartitionToExecutionUnitAllocationEntry>
createPartitionToExecutionUnitAllocations(PartitionMappingEncoding partMapping) {
SuperSet<PartitionToExecutionUnitAllocationEntry> allocations =
createSuperSet("PartToExU", PartitionToExecutionUnitAllocationEntry.class);
for(PartitionMappingEntry entry : partMapping.getMappingEntries()) {
org.fortiss.af3.partition.model.Partition af3Partition =
partToAF3PartMap.get(entry.getSource());
assert (af3Partition != null) : "Error in the mapping of internal Partitions --> AF3 Partitions.";
PartitionToExecutionUnitAllocationEntry af3AllocEntry =
createAllocationEntry(PartitionToExecutionUnitAllocationEntry.class);
af3AllocEntry.setSourceElement(af3Partition);
af3AllocEntry.getTargetElements().add((ExecutionUnit)entry.getTarget().getObject());
allocations.getEntries().add(af3AllocEntry);
}
return allocations;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment