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

RPMRequest

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

start()[source]

Start the solution process with initializing the first request.

Returns

Initial request.

Return type

RPMInitialRequest