From f4d2eaff8d531f929c3ba8ccaa598ed71d7e059c Mon Sep 17 00:00:00 2001 From: Alexander Diewald <diewald@fortiss.org> Date: Mon, 10 Jul 2017 13:04:24 +0000 Subject: [PATCH] - Fix double existence of the "expression" attribute in the MOEAExplorationObjective since the expression attribute has been added to EplorationTargets now. --- .../master/model/explorationDsl.ecore | 2 +- .../master/model/explorationDsl.genmodel | 2 +- .../InternalIsolatedCommunicationSet.java | 24 +++++++++++++++++++ .../InternalReplicationConstraint.java | 24 +++++++++++++++++++ .../InternalSeparationConstraint.java | 24 +++++++++++++++++++ .../opt4j/problem/EvaluatorWrapper.java | 10 ++++---- .../evaluator/ExpressionEvaluatorBase.java | 2 +- .../objective/MappingEvaluatorObjective.java | 10 ++++++-- ...gnSpaceExplorationModelElementFactory.java | 4 ++-- .../impl/LocationConstraintStaticImpl.java | 2 +- ...onExplorationTagetModelElementFactory.java | 12 +++++----- 11 files changed, 97 insertions(+), 19 deletions(-) diff --git a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore index 3d27d76a..446a2ec4 100644 --- a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore +++ b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.ecore @@ -6,7 +6,7 @@ <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="DEPRECATED/LEGACY."/> </eAnnotations> - <eStructuralFeatures xsi:type="ecore:EReference" name="expression" eType="#//expressions/Expression" + <eStructuralFeatures xsi:type="ecore:EReference" name="moeaExpression" eType="#//expressions/Expression" containment="true"> <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> <details key="documentation" value="DEPRECATED/LEGACY."/> diff --git a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel index 0c09a3b3..648be71e 100644 --- a/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel +++ b/org.fortiss.af3.exploration.alg/master/model/explorationDsl.genmodel @@ -11,7 +11,7 @@ <genPackages prefix="Model" basePackage="org.fortiss.af3.exploration.dsl" disposableProviderFactory="true" ecorePackage="explorationDsl.ecore#/"> <genClasses image="false" ecoreClass="explorationDsl.ecore#//MOEAExplorationExpression"> - <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference explorationDsl.ecore#//MOEAExplorationExpression/expression"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference explorationDsl.ecore#//MOEAExplorationExpression/moeaExpression"/> </genClasses> <nestedGenPackages prefix="Operators" basePackage="org.fortiss.af3.exploration.dsl.model" disposableProviderFactory="true" ecorePackage="explorationDsl.ecore#//operators"> diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java index bb688382..b6f0bedd 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/comm/constraint/InternalIsolatedCommunicationSet.java @@ -23,9 +23,12 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.impl.EObjectImpl; 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; +import org.fortiss.af3.exploration.model.ExplorationTarget; /** * DSE-internal {@link ExplorationConstraint} that marks a group of {@link IMappingEntry}s that are @@ -162,4 +165,25 @@ public class InternalIsolatedCommunicationSet extends EObjectImpl implements public Object clone() { return new InternalIsolatedCommunicationSet(this); } + + /** {@inheritDoc} */ + @Override + public IExpression getExpression() { + // TODO Auto-generated method stub + return null; + } + + /** {@inheritDoc} */ + @Override + public void setExpression(IExpression value) { + // TODO Auto-generated method stub + + } + + /** {@inheritDoc} */ + @Override + public EList<ExplorationTarget<Boolean>> getContainedTargets() { + // TODO Auto-generated method stub + return null; + } } diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java index 40ba57fb..229f2d70 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalReplicationConstraint.java @@ -17,10 +17,13 @@ $Id: codetemplates.xml 1 2011-01-01 00:00:01Z hoelzl $ +--------------------------------------------------------------------------*/ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.constraint; +import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.impl.EObjectImpl; 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.dsl_v2.model.expression.IExpression; import org.fortiss.af3.exploration.model.ExplorationConstraint; +import org.fortiss.af3.exploration.model.ExplorationTarget; /** * DSE-internal constraint to define the bounds for the number of replica of an @@ -155,4 +158,25 @@ public class InternalReplicationConstraint extends EObjectImpl implements public Object clone() { return new InternalReplicationConstraint(this); } + + /** {@inheritDoc} */ + @Override + public IExpression getExpression() { + // TODO Auto-generated method stub + return null; + } + + /** {@inheritDoc} */ + @Override + public void setExpression(IExpression value) { + // TODO Auto-generated method stub + + } + + /** {@inheritDoc} */ + @Override + public EList<ExplorationTarget<Boolean>> getContainedTargets() { + // TODO Auto-generated method stub + return null; + } } diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java index 7aecd613..c44dfaa9 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/encoding/taskmapping/constraint/InternalSeparationConstraint.java @@ -19,11 +19,14 @@ package org.fortiss.af3.exploration.alg.dse.backend.opt4j.encoding.taskmapping.c 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.IDeployableComponentAdapter; import org.fortiss.af3.exploration.alg.dse.sysmodel.arch.IRequestAdapter; 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; +import org.fortiss.af3.exploration.model.ExplorationTarget; import org.fortiss.af3.platform.model.IPlatformResource; /** @@ -148,4 +151,25 @@ public class InternalSeparationConstraint extends EObjectImpl implements public Object clone() { return new InternalSeparationConstraint(this); } + + /** {@inheritDoc} */ + @Override + public IExpression getExpression() { + // TODO Auto-generated method stub + return null; + } + + /** {@inheritDoc} */ + @Override + public void setExpression(IExpression value) { + // TODO Auto-generated method stub + + } + + /** {@inheritDoc} */ + @Override + public EList<ExplorationTarget<Boolean>> getContainedTargets() { + // TODO Auto-generated method stub + return null; + } } diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java index 2fdc35f5..b7b77d81 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/backend/opt4j/problem/EvaluatorWrapper.java @@ -34,7 +34,6 @@ import org.fortiss.af3.exploration.dsl_v2.model.function.Maximize; import org.fortiss.af3.exploration.dsl_v2.model.function.Minimize; import org.fortiss.af3.exploration.model.ExplorationObjective; import org.fortiss.af3.exploration.model.ExplorationTarget; -import org.fortiss.af3.exploration.model.ExplorationTargetExpression; import org.opt4j.core.DoubleValue; import org.opt4j.core.Objective; import org.opt4j.core.Objective.Sign; @@ -78,17 +77,18 @@ public class EvaluatorWrapper<P, RT, T extends ExplorationTarget<RT>> implements // Construct EA objectives and register it in objective map. Do not give an // "optimization direction" (min/max) in case of constraints. They default to minimization. OptimizationDirectionEnum direction = OptimizationDirectionEnum.MIN; + // TODO: Remove after deprecation of the MoeaExpression. Check first to handle this special + // case. if(goal instanceof MOEAExplorationExpression) { - Expression moExpr = ((MOEAExplorationExpression)goal).getExpression(); + Expression moExpr = ((MOEAExplorationExpression)goal).getMoeaExpression(); if(moExpr instanceof OptimizationDirection) { direction = ((OptimizationDirection)moExpr).getOperator(); } - } else if(goal instanceof ExplorationObjective<?> && - goal instanceof ExplorationTargetExpression<?>) { + } else if(goal instanceof ExplorationObjective) { // TODO: Reconsider the wrapping / passing to the ExpressionEvaluators. Probably, the // evaluators only need to be aware of the systemModelAdapter and the exploration // expression. - IExpression expr = ((ExplorationTargetExpression<?>)goal).getExpression(); + IExpression expr = goal.getExpression(); if(expr instanceof Minimize) { direction = OptimizationDirectionEnum.MIN; } else if(expr instanceof Maximize) { diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java index 354ed9c1..01e028dd 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/ExpressionEvaluatorBase.java @@ -76,7 +76,7 @@ public abstract class ExpressionEvaluatorBase<P extends Phenotype, RT, T extends this.systemModelAdapter = systemModelAdapter; this.explorationTarget = explorationTarget; - this.expression = ((ExplorationTargetExpression<?>)explorationTarget).getExpression(); + this.expression = explorationTarget.getExpression(); validateInputs(); } diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java index 79019567..4820c97a 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/dse/evaluator/objective/MappingEvaluatorObjective.java @@ -27,7 +27,6 @@ import org.fortiss.af3.exploration.alg.dse.evaluator.MappingEvaluator; 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; -import org.fortiss.af3.exploration.dsl_v2.model.function.IFunction; import org.fortiss.af3.exploration.dsl_v2.model.function.Maximize; import org.fortiss.af3.exploration.dsl_v2.model.function.Minimize; import org.fortiss.af3.exploration.model.ExplorationTarget; @@ -75,7 +74,14 @@ public class MappingEvaluatorObjective extends MappingEvaluator { // For ExplorationObjectives the expression begins either with a Minimize or Maximize // operation. - IArithmeticExpression minMaxTerm = ((IFunction)expression).getArgs(); + // FIXME: bad dsl design... + IArithmeticExpression minMaxTerm = null; + if(expression instanceof Minimize) { + minMaxTerm = ((Minimize)expression).getArgs(); + } else if(expression instanceof Maximize) { + minMaxTerm = ((Maximize)expression).getArgs(); + } + assert (minMaxTerm != null); Number retVal = minMaxTerm.accept(this, Number.class); diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java index 030baef5..c2979440 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/alg/util/DesignSpaceExplorationModelElementFactory.java @@ -157,7 +157,7 @@ public class DesignSpaceExplorationModelElementFactory { energyObjective.setPriority(0); ObjectiveExpression optExpr = createObjectiveExpression(OptimizationDirectionEnum.MIN); optExpr.setRight(createEnergyConsumptionSumExpression()); - energyObjective.setExpression(optExpr); + energyObjective.setMoeaExpression(optExpr); return energyObjective; } @@ -196,7 +196,7 @@ public class DesignSpaceExplorationModelElementFactory { failureMinObjective.setName("Failure Minimization"); failureMinObjective.setType(FailureType.ALL); failureMinObjective.setPriority(1); - failureMinObjective.setExpression(createFailureMinExpression()); + failureMinObjective.setMoeaExpression(createFailureMinExpression()); return failureMinObjective; } diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java index 72c207e6..5548e42b 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/model/location/impl/LocationConstraintStaticImpl.java @@ -79,7 +79,7 @@ public class LocationConstraintStaticImpl { if(locConstraint == null) { return null; } - Expression expr = locConstraint.getExpression(); + Expression expr = locConstraint.getMoeaExpression(); if(expr instanceof LocationPattern) { Expression lpExpr = ((LocationPattern<?, ?>)expr).getExpression(); if(lpExpr instanceof LocationOp) { diff --git a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java index c67b8d7e..8c76967a 100644 --- a/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java +++ b/org.fortiss.af3.exploration.alg/master/src/org/fortiss/af3/exploration/util/CommonExplorationTagetModelElementFactory.java @@ -58,7 +58,7 @@ public class CommonExplorationTagetModelElementFactory { ExecutionUnit execUnit) { ComponentAllocationConstraint cAllocConstr = createComponentAllocationConstraint(); // Construct the corresponding Expression via the LocationPattern. - cAllocConstr.setExpression(createLocationPattern(comp, LocationOperatorEnum.ALLOCATION, + cAllocConstr.setMoeaExpression(createLocationPattern(comp, LocationOperatorEnum.ALLOCATION, execUnit)); return cAllocConstr; } @@ -76,8 +76,8 @@ public class CommonExplorationTagetModelElementFactory { Component comp, ExecutionUnit execUnit) { ComponentDislocationConstraint cDislocConstr = createComponentDislocationConstraint(); // Construct the corresponding Expression via the LocationPattern. - cDislocConstr.setExpression(createLocationPattern(comp, LocationOperatorEnum.DISLOCATION, - execUnit)); + cDislocConstr.setMoeaExpression(createLocationPattern(comp, + LocationOperatorEnum.DISLOCATION, execUnit)); return cDislocConstr; } @@ -108,7 +108,7 @@ public class CommonExplorationTagetModelElementFactory { ConstraintExpression<TwoPropertyValueComparison<Double, Component, Component>> cExpr = ExplorationDslModelElementFactory.createConstraintExpression(null, null, twoPropValExpr); - deadlineConstr.setExpression(cExpr); + deadlineConstr.setMoeaExpression(cExpr); return deadlineConstr; } @@ -122,7 +122,7 @@ public class CommonExplorationTagetModelElementFactory { ConstraintExpression<SinglePropValueComparison<Double, Component>> cExpr = ExplorationDslModelElementFactory.createConstraintExpression(null, null, singlePropValExpr); - periodConstr.setExpression(cExpr); + periodConstr.setMoeaExpression(cExpr); return periodConstr; } @@ -131,7 +131,7 @@ public class CommonExplorationTagetModelElementFactory { LocationPattern<Component, ExecutionUnit> locationPattern) { LocationConstraint<Component, ExecutionUnit> createLocationConstraint = LocationFactory.eINSTANCE.createLocationConstraint(); - createLocationConstraint.setExpression(locationPattern); + createLocationConstraint.setMoeaExpression(locationPattern); return createLocationConstraint; } } -- GitLab