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 074416c7c05342e3157f8a312cb72dffc68d2a00..66e9ccf83a50dcbbfc94ef67ad9bc814a6617c5a 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,4 +1,4 @@ -CompositeExplorationSolution.java 7a32ca49d7ae4aa4ddc83a3c70ecdcfa5b1376a0 RED +CompositeExplorationSolution.java c35b0b0cf5658300b5e8c4f2cc9e217c29ae37a3 RED DSEFactory.java 0a2f2cc6a197e760c1f8223339ffa5f16856b184 RED Explorer.java 2194a74cbe51ca9e7dafb008dcefb51a54064dc8 RED ImplicitExplorationTargetFactory.java e45c6c3344b46a275e2c74b5c714900229f5f8d3 RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java index 8e2d1728d351a694dcf4fdeb5bddab22fdb8b11d..6616895151cbc20232e223e65a20067ab5726e51 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/CompositeExplorationSolution.java @@ -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; - } }