diff options
Diffstat (limited to 'subprojects/store-dse/src/main/java/tools/refinery/store/dse/objectives/Objective.java')
-rw-r--r-- | subprojects/store-dse/src/main/java/tools/refinery/store/dse/objectives/Objective.java | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/objectives/Objective.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/objectives/Objective.java deleted file mode 100644 index c7313622..00000000 --- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/objectives/Objective.java +++ /dev/null | |||
@@ -1,101 +0,0 @@ | |||
1 | /******************************************************************************* | ||
2 | * Copyright (c) 2010-2014, Miklos Foldenyi, Andras Szabolcs Nagy, Abel Hegedus, Akos Horvath, Zoltan Ujhelyi and Daniel Varro | ||
3 | * Copyright (c) 2023 The Refinery Authors <https://refinery.tools/> | ||
4 | * This program and the accompanying materials are made available under the | ||
5 | * terms of the Eclipse Public License v. 2.0 which is available at | ||
6 | * http://www.eclipse.org/legal/epl-v20.html. | ||
7 | * | ||
8 | * SPDX-License-Identifier: EPL-2.0 | ||
9 | *******************************************************************************/ | ||
10 | package tools.refinery.store.dse.objectives; | ||
11 | |||
12 | import tools.refinery.store.dse.DesignSpaceExplorationAdapter; | ||
13 | |||
14 | import java.util.Comparator; | ||
15 | |||
16 | /** | ||
17 | * | ||
18 | * Implementation of this interface represents a single objective of the DSE problem, which can assess a solution | ||
19 | * (trajectory) in a single number. It has a name and a comparator which orders two solution based on the calculated | ||
20 | * value. | ||
21 | * <p> | ||
22 | * Objectives can be either hard or soft objectives. Hard objectives can be satisfied or unsatisfied. If all of the hard | ||
23 | * objectives are satisfied on a single solution, then it is considered to be a valid (or goal) solution. | ||
24 | * <p> | ||
25 | * Certain objectives can have inner state for calculating the fitness value. In this case a new instance is necessary | ||
26 | * for every new thread, and the {@code createNew} method should not return the same instance more than once. | ||
27 | * | ||
28 | * @author Andras Szabolcs Nagy | ||
29 | * | ||
30 | */ | ||
31 | public interface Objective { | ||
32 | |||
33 | /** | ||
34 | * Returns the name of the objective. | ||
35 | * | ||
36 | * @return The name of the objective. | ||
37 | */ | ||
38 | String getName(); | ||
39 | |||
40 | /** | ||
41 | * Sets the {@link Comparator} which is used to compare fitness (doubles). It determines whether the objective is to | ||
42 | * minimize or maximize (or minimize or maximize a delta from a given number). | ||
43 | * | ||
44 | * @param comparator The comparator. | ||
45 | */ | ||
46 | void setComparator(Comparator<Double> comparator); | ||
47 | |||
48 | /** | ||
49 | * Returns a {@link Comparator} which is used to compare fitness (doubles). It determines whether the objective is | ||
50 | * to minimize or maximize (or minimize or maximize a delta from a given number). | ||
51 | * | ||
52 | * @return The comparator. | ||
53 | */ | ||
54 | Comparator<Double> getComparator(); | ||
55 | |||
56 | /** | ||
57 | * Calculates the value of the objective on a given solution (trajectory). | ||
58 | * | ||
59 | * @param context | ||
60 | * The {@link DesignSpaceExplorationAdapter} | ||
61 | * @return The objective value in double. | ||
62 | */ | ||
63 | Double getFitness(DesignSpaceExplorationAdapter context); | ||
64 | |||
65 | /** | ||
66 | * Initializes the objective. It is called exactly once for every thread starts. | ||
67 | * | ||
68 | * @param context | ||
69 | * The {@link DesignSpaceExplorationAdapter}. | ||
70 | */ | ||
71 | void init(DesignSpaceExplorationAdapter context); | ||
72 | |||
73 | /** | ||
74 | * Returns an instance of the {@link Objective}. If it returns the same instance, all the methods has to be thread | ||
75 | * save as they are called concurrently. | ||
76 | * | ||
77 | * @return An instance of the objective. | ||
78 | */ | ||
79 | Objective createNew(); | ||
80 | |||
81 | /** | ||
82 | * Returns true if the objective is a hard objective. In such a case the method | ||
83 | * {@link Objective#satisfiesHardObjective(Double)} is called. | ||
84 | * | ||
85 | * @return True if the objective is a hard objective. | ||
86 | * @see Objective#satisfiesHardObjective(Double) | ||
87 | * @see Objective | ||
88 | */ | ||
89 | boolean isHardObjective(); | ||
90 | |||
91 | /** | ||
92 | * Determines if the given fitness value satisfies the hard objective. | ||
93 | * | ||
94 | * @param fitness | ||
95 | * The fitness value of a solution. | ||
96 | * @return True if it satisfies the hard objective or it is a soft constraint. | ||
97 | * @see Objective | ||
98 | */ | ||
99 | boolean satisfiesHardObjective(Double fitness); | ||
100 | |||
101 | } | ||