diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java index ba9ffcc412dcce75246f0086081efe8720fc67ee..91ec0e643c0b4e339cf7e9365766d26535e33278 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/WeightingFunctionEvaluator.java @@ -26,7 +26,7 @@ public class WeightingFunctionEvaluator implements IEvaluator { public void evaluate(WeightedTactic tactic) { WeightingFunction f = tactic.getParentStrategy().getWeightingFunction(); - final String functionClassName = f.getWeightingFunction(); + final String functionClassName = f.getWeightingFunctionImplementation(); Object o = null; try { @@ -44,6 +44,7 @@ public class WeightingFunctionEvaluator implements IEvaluator { } calculator = (IWeightingFunction) o; + calculator.setWeightingFunction(f); double newWeight = calculator.calculateWeight(tactic); logger.debug("Setting new weight of " + tactic.getName() + " to " + newWeight); tactic.setCurrentWeight(newWeight); diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java index 68571370992a8b28e09098ef37e037bbd1090234..284d82a16836ac83dc6336db4146544b44ec9e66 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/IWeightingFunction.java @@ -1,15 +1,33 @@ package edu.kit.ipd.descartes.adaptation.evaluation.weightingfunction; import edu.kit.ipd.descartes.mm.adaptation.Tactic; +import edu.kit.ipd.descartes.mm.adaptation.WeightedMetric; import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic; +import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction; +/** + * @author nhuber + * + */ public interface IWeightingFunction { - /** + + /** + * Sets the {@link WeightingFunction} that can be used + * by the {@link WeightingFunction} to derive the + * {@link WeightedMetric}s used to calculate the weight. + * + * @param function + */ + void setWeightingFunction(WeightingFunction function); + + /** * Calculates the new weight of the given {@link Tactic}. * * @param impact * @return */ - double calculateWeight(WeightedTactic weightedTactic); + double calculateWeight(WeightedTactic weightedTactic); + + } diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java index 245197beda84f53cf0320f0c3c1943c7bb983029..ae2ade1149a4986b9780937f8985b6eae5a6f0e9 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/RandomWeightsWeightingFunction.java @@ -3,6 +3,7 @@ package edu.kit.ipd.descartes.adaptation.evaluation.weightingfunction; import java.util.Random; import edu.kit.ipd.descartes.mm.adaptation.WeightedTactic; +import edu.kit.ipd.descartes.mm.adaptation.WeightingFunction; public class RandomWeightsWeightingFunction implements IWeightingFunction { @@ -11,4 +12,9 @@ public class RandomWeightsWeightingFunction implements IWeightingFunction { Random r = new Random(System.currentTimeMillis()); return r.nextDouble(); } + + @Override + public void setWeightingFunction(WeightingFunction function) { + // Left empty intentionally + } } diff --git a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java index 5394adb87e4a7ed165825b9744ba759d87db7808..cd172d7c92d99367ce2b5b7c5f798726bd8daaf2 100644 --- a/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java +++ b/edu.kit.ipd.descartes.adaptation/src/edu/kit/ipd/descartes/adaptation/evaluation/weightingfunction/WeightedSum.java @@ -14,14 +14,14 @@ public class WeightedSum implements IWeightingFunction { private Logger logger = Logger.getLogger(WeightedSum.class); private WeightingFunction weightingFunction = null; - public WeightedSum(WeightingFunction f) { - setWeightingFunction(f); + public WeightedSum() { } public WeightingFunction getWeightingFunction() { return weightingFunction; } + @Override public void setWeightingFunction(WeightingFunction weightingFunction) { this.weightingFunction = weightingFunction; } @@ -58,4 +58,5 @@ public class WeightedSum implements IWeightingFunction { return newWeight; } + }