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 c357d3ae7ec79c833bd8eb8ee1f153d91705f40d..02b6f64c552c9bf1f73d2cb57b2f53d80398cbce 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 @@ -170,8 +170,8 @@ public class CompositeExplorationSolution<P extends Phenotype> { singleSolution.getSubSolution(InstantiatedTaskMappingEncoding.class); PartitionMappingEncoding pmEncoding = singleSolution.getSubSolution(PartitionMappingEncoding.class); - SuperSet<ComponentToExecutionUnitAllocationEntry> compExecUnitAllocs = - createSuperSet("Optimized_Allocations"); + SuperSet<ComponentToExecutionUnitAllocationEntry> compExecUnitAllocs = createSuperSet( + "Optimized_Allocations", ComponentToExecutionUnitAllocationEntry.class); for(Partition resource : tm.getResources()) { for(ITaskAdapter<?> task : tm.getRequesters(resource)) { Component af3Component = task.getAssignedComponent(); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java index 48630805e5b935759a7cb18dbc3147667b4c0d66..41ce92d11b2e7a6a8c39bffa990c691160c36c8d 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/Opt4JSingleExplorationSolution.java @@ -15,8 +15,6 @@ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j; -import static org.fortiss.af3.exploration.util.ExplorationUtils.getReturnTypeOf; - import java.util.Map; import java.util.Map.Entry; @@ -51,7 +49,7 @@ public class Opt4JSingleExplorationSolution extends SolutionQuantification { // Determine the ExplorationTarget class to identify the correct return value type. Objective objective = problemModule.getObjectiveOf(targetAssoc.getValue()); ExplorationTarget<?> concreteExpTarget = targetAssoc.getKey(); - Class<?> expectedResultType = getReturnTypeOf(concreteExpTarget); + Class<?> expectedResultType = concreteExpTarget.getResultType(); // FIXME: throw an exception here. assert (expectedResultType != null) : "Could not determine the result type of the exploration target " + concreteExpTarget.getName() + @@ -67,6 +65,12 @@ public class Opt4JSingleExplorationSolution extends SolutionQuantification { if(expectedResultType.equals(Boolean.class) || IModelElement.class.isAssignableFrom(expectedResultType)) { result = Boolean.valueOf(objectives.get(objective).getDouble() <= 10E-9); + } else if(expectedResultType.equals(Double.class) && + result.getClass().equals(Integer.class)) { + // FIXME: Remove this special case: It shall not be needed anymore, once we got rid + // of the static type definition in EMF meta-models and derive them from the + // referenced annotations. + result = Double.valueOf((Integer)result); } else if(result != null && !result.getClass().equals(expectedResultType)) { // Note: if the result is null, a serious constraint violation is indicated. Its // corresponding solution will be filtered out in a later stage. 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 e4348f7ddd25ab2c673761251f5822f47b266618..34829a41bcc67e89c8036a28c2a9a6cf44447025 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 250ff5f0ee41829b051b4c597810ae80dc73a0cc RED +InternalIsolatedCommunicationSet.java 46aa91e7690c31e46c6e852d8eed54b246fa4654 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 de9b8f9b505c8abc468d7005636e7f5b09779d7a..7b5f0edda6a6bcadd60ced408f214c5d4bac59c0 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 @@ -182,4 +182,18 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl // TODO Auto-generated method stub return null; } + + /** {@inheritDoc} */ + @Override + public Class<Boolean> getResultType() { + // TODO Auto-generated method stub + return null; + } + + /** {@inheritDoc} */ + @Override + public void setResultType(Class<Boolean> type) { + // TODO Auto-generated method stub + + } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java index e5b10b22471e25c5fc938510608112d34708bf70..78cc908ad03ea3881e2434b483032a309bcd1dc2 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java @@ -17,8 +17,8 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.c import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.impl.EObjectImpl; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression; import org.fortiss.af3.exploration.model.ExplorationConstraint; import org.fortiss.af3.exploration.model.ExplorationTarget; @@ -173,4 +173,18 @@ public class InternalReplicationConstraint extends EObjectImpl // TODO Auto-generated method stub return null; } + + /** {@inheritDoc} */ + @Override + public Class<Boolean> getResultType() { + // TODO Auto-generated method stub + return null; + } + + /** {@inheritDoc} */ + @Override + public void setResultType(Class<Boolean> type) { + // TODO Auto-generated method stub + + } } diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java index 1eea1fafc9ec89224aefb7bd76175827ec8e1925..ca06fdc9d7a9384e5247776627ca6710ebc8fbb8 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java @@ -19,8 +19,8 @@ import java.util.Collection; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.impl.EObjectImpl; -import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter; +import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.ITaskAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.mapping.IMappingEntry; import org.fortiss.af3.exploration.dsl_v2.model.expression.IExpression; import org.fortiss.af3.exploration.model.ExplorationConstraint; @@ -166,4 +166,18 @@ public class InternalSeparationConstraint extends EObjectImpl // TODO Auto-generated method stub return null; } + + /** {@inheritDoc} */ + @Override + public Class<Boolean> getResultType() { + // TODO Auto-generated method stub + return null; + } + + /** {@inheritDoc} */ + @Override + public void setResultType(Class<Boolean> type) { + // TODO Auto-generated method stub + + } } 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 a746124992216d254e5879f036a46e0e742c67e5..26142f29e2b2f091fa4aac3cd41d3201be310dd4 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 ad2b868aa3dce2c7708ee6cc90f357b79a4cf799 RED FailSilentReliabilityEvaluator.java 83211c8e2b69579c424a486cd6845bb8d1bb69fa RED FaultDetectionVotingReliabilityEvaluator.java 189fdfd0daed3348c510a6aeac0bd391e835c524 RED -MappingEvaluatorObjective.java 5a1e083a5f18be458b73c6fc4fd9d37b9f69d213 RED +MappingEvaluatorObjective.java 6ca3fa4dcbaeb61b38ad1d36a318dbb9ead58831 RED ReliabilityEvaluatorBase.java 98fa54270cba25137112fe55f3551fbd8064ac28 RED 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 98906e205e46ecb5a682a026fd82897745f5f2d2..a93b07f5c1f06a19d776abb02cfbd68c3cf0bd93 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 @@ -88,7 +88,7 @@ public class MappingEvaluatorObjective extends TaskMappingEvaluator { // The minMax Term is always non-zero. // FIXME: Using "BigInteger" as a type is a hack: It is a workaround to comply with the // construction of objectives in the UI. - @SuppressWarnings("null") Number retVal = minMaxTerm.accept(this, BigInteger.class); + @SuppressWarnings("null") Number retVal = minMaxTerm.accept(this, Number.class); return retVal instanceof BigInteger ? new IntegerValue(retVal.intValue()) : new DoubleValue(retVal.doubleValue()); diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings index 3058d130754982693642becdf785b0ecfa28c94e..360af31c6e3ccda36750b7aa1730b4309f9f29c0 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/.ratings @@ -4,4 +4,4 @@ ScheduleLabelGenerator.java 0ceecedfec9802bbcaa33525d61e1a60a70d3841 RED SchedulePlotter.java 29b1156c9419d4ff3314c4b2c932aeb46f4749f8 RED ScheduleToolTipGenerator.java cedfa0dd7ebc7b48d7cc70e966eebaeee9636caf RED TaskSeriesCollectionFromSchedule.java b53b7af649c48980520ad572da8c7bbdbae0aed5 RED -XYPlotter.java 4fd144980d0d55bccbe8840c8e049b9bf3d41118 RED +XYPlotter.java 4ab3c02351dab5e78cea843dc6665ddee46a636c RED diff --git a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java index 78fb189b484df79ae326d3f6262f6a3f3a4f0d3b..280226ef257e2779bf90903196d77caf86bd4df1 100644 --- a/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java +++ b/org.fortiss.af3.exploration.alg/trunk/src/org/fortiss/af3/exploration/alg/plot/XYPlotter.java @@ -459,15 +459,11 @@ public class XYPlotter extends JFrame implements ChartMouseListener, ActionListe coordinateToSolution.clear(); for(SingleExplorationSolution solution : explorationResult.getSolutions()) { - /* Retrieve the solution values of the selected objectives. */ - Map<ExplorationTarget<?>, ExplorationResult<?>> objValues = - solution.getSolutionMap().map(); - Object xResultVal = null; Object yResultVal = null; if(Xaxis != null && Yaxis != null) { - ExplorationResult<?> xExpResult = objValues.get(Xaxis.getTarget()); - ExplorationResult<?> yExpResult = objValues.get(Yaxis.getTarget()); + ExplorationResult<?> xExpResult = solution.get(Xaxis.getTarget()); + ExplorationResult<?> yExpResult = solution.get(Yaxis.getTarget()); if(xExpResult != null && yExpResult != null) { xResultVal = xExpResult.getResult(); yResultVal = yExpResult.getResult(); @@ -503,17 +499,14 @@ public class XYPlotter extends JFrame implements ChartMouseListener, ActionListe .stream().filter(r -> r == currentSolution).findAny(); if(singleExpSol.isPresent()) { SingleExplorationSolution currentSolMap = singleExpSol.get(); - Map<ExplorationTarget<?>, ExplorationResult<?>> objectiveValues = - currentSolMap.getSolutionMap().map(); - // TODO: identifying the elements by their names is not good style, the map is not // required. /* Update the list of exact objective values */ - if(objectiveValues != null) { + if(currentSolMap != null) { // display the objective values for(int i = 0; i < goalList.size(); i++) { ExplorationTarget<?> target = goalList.get(i); - ExplorationResult<?> expResult = objectiveValues.get(target); + ExplorationResult<?> expResult = currentSolMap.get(target); if(objectiveToGuiItems.get(target) != null && (expResult != null && expResult.getResult() instanceof Double)) { objectiveToGuiItems.get(target).objTextField