ReferencePointMethod¶
-
class
desdeo_mcdm.interactive.
ReferencePointMethod
(problem, ideal, nadir, epsilon=1e-06, objective_names=None, minimize=None)[source]¶ Bases:
desdeo_mcdm.interactive.InteractiveMethod.InteractiveMethod
Implements the Reference Point Method as presented in Wierzbicki 1982.
In the Reference Point Method, the Decision Maker (DM) specifies desirable aspiration levels for objective functions. Vectors formed of these aspiration levels are then used to derive scalarizing functions having minimal values at weakly, properly or Pareto optimal solutions. It is important that reference points are intuitive and easy for the DM to specify, their consistency is not an essential requirement. Before the solution process starts, some information is given to the DM about the problem. If possible, the ideal objective vector and the (approximated) nadir objective vector are presented.
At each iteration, the DM is asked to give desired aspiration levels for the objective functions. Using this information to formulate a reference point, achievement function is minimized and a (weakly, properly or) Pareto optimal solution is obtained. This solution is then presented to the DM. In addition, k other (weakly, properly or) Pareto optimal solutions are calculated using perturbed reference points, where k is the number of objectives in the problem. The alternative solutions are also presented to the DM. If (s)he finds any of the k + 1 solutions satisfactory, the solution process is ended. Otherwise, the DM is asked to present a new reference point and the iteration described above is repeated.
The idea in perturbed reference points is that the DM gets better understanding of the possible solutions around the current solution. If the reference point is far from the Pareto optimal set, the DM gets a wider description of the Pareto optimal set and if the reference point is near the Pareto optimal set, then a finer description of the Pareto optimal set is given.
In this method, the DM has to specify aspiration levels and compare objective vectors. The DM is free to change her/his mind during the process and can direct the solution process without being forced to understand complicated concepts and their meaning. On the other hand, the method does not necessarily help the DM to find more satisfactory solutions.
- Parameters
problem (MOProblem) – Problem to be solved.
ideal (np.ndarray) – The ideal objective vector of the problem.
nadir (np.ndarray) – The nadir objective vector of the problem. This may also be the “worst” objective vector provided by the Decision Maker if the approximation of Nadir vector is not applicable or if the Decision Maker wishes to provide even worse objective vector than what the approximated Nadir vector is.
epsilon (float) – A small number used in calculating the utopian point.
epsilon – A small number used in calculating the utopian point. Default value is 1e-6.
objective_names (Optional[List[str]], optional) – Names of the objectives. The length of the list must match the number of elements in ideal vector.
minimize (Optional[List[int]], optional) – Multipliers for each objective. ‘-1’ indicates maximization and ‘1’ minimization. Defaults to all objective values being minimized.
- Raises
RPMException – Dimensions of ideal, nadir, objective_names, and minimize-list do not match.
Methods Summary
calculate_prp
(ref_point, f_current)Calculate perturbed reference points.
handle_initial_request
(request)Handles the initial request by parsing the response appropriately.
handle_request
(request)Handle the Decision Maker’s requests after the first iteration round, so-called intermediate requests.
iterate
(request)Perform the next logical iteration step based on the given request type.
solve_asf
(ref_point, x0, …[, …])Solve Achievement scalarizing function.
start
()Start the solution process with initializing the first request.
Methods Documentation
-
calculate_prp
(ref_point, f_current)[source]¶ Calculate perturbed reference points.
- Parameters
ref_point (np.ndarray) – Current reference point.
f_current (np.ndarray) – Current solution.
- Returns
Perturbed reference points.
- Return type
np.ndarray
-
handle_initial_request
(request)[source]¶ Handles the initial request by parsing the response appropriately.
- Parameters
request (RPMInitialRequest) – Initial request including the Decision Maker’s initial preferences.
- Returns
New request with updated solution process information.
- Return type
-
handle_request
(request)[source]¶ Handle the Decision Maker’s requests after the first iteration round, so-called intermediate requests.
- Parameters
request (RPMRequest) – Intermediate request including the Decision Maker’s response.
- Returns
In case last iteration, request to stop the solution process. Otherwise, new request with updated solution process information.
- Return type
Union[RPMRequest, RPMStopRequest]
-
iterate
(request)[source]¶ Perform the next logical iteration step based on the given request type.
- Parameters
request (Union[RPMInitialRequest, RPMRequest]) – Either initial or intermediate request.
- Returns
A new request with content depending on the Decision Maker’s preferences.
- Return type
Union[RPMRequest, RPMStopRequest]
-
solve_asf
(ref_point, x0, preferential_factors, nadir, utopian, objectives, variable_bounds=None, method=None)[source]¶ Solve Achievement scalarizing function.
- Parameters
ref_point (np.ndarray) – Reference point.
x0 (np.ndarray) – Initial values for decision variables.
preferential_factors (np.ndarray) – Preferential factors on how much would the Decision Maker wish to improve the values of each objective function.
nadir (np.ndarray) – Nadir vector.
utopian (np.ndarray) – Utopian vector.
objectives (np.ndarray) – The objective function values for each input vector.
variable_bounds (Optional[np.ndarray) – Lower and upper bounds of each variable as a 2D numpy array. If undefined variables, None instead.
method (Union[ScalarMethod, str, None]) – The optimization method the scalarizer should be minimized with.
- Returns
A dictionary with at least the following entries: ‘x’ indicating the optimal variables found, ‘fun’ the optimal value of the optimized function, and ‘success’ a boolean indicating whether the optimization was conducted successfully.
- Return type
dict