View Source Descisionex.AnalyticHierarchy (Descisionex v1.0.0)
Link to this section Summary
Functions
Runs the full AHP pipeline: normalize comparison matrix, calculate criteria weights, consistency ratio, alternatives weights by criteria, and final alternatives weights. Requires comparison_matrix, criteria, alternatives, and alternatives_matrix to be set beforehand.
Calculates alternatives weights for analytic hierarchy (criteria must be set, such as comparison matrix and weights before must be calculated!).
Calculates alternatives weights by criteria for analytic hierarchy (criteria must be set, such as comparison matrix!).
Calculates the consistency ratio (CR) of the comparison matrix. CR < 0.1 indicates acceptable consistency. Requires criteria weights to be calculated first.
Calculates weights for normalized comparison matrix for analytic hierarchy (criteria must be set, such as comparison matrix!).
Normalizes comparison matrix for analytic hierarchy (criteria must be set, such as comparison matrix!).
Set alternatives for analytic hierarchy.
Set alternatives matrix for analytic hierarchy (criteria must be set!).
Set criteria for analytic hierarchy.
Set pre-tagged alternatives matrix for analytic hierarchy (criteria must be set!). The map keys must correspond to criteria names.
Link to this section Functions
Runs the full AHP pipeline: normalize comparison matrix, calculate criteria weights, consistency ratio, alternatives weights by criteria, and final alternatives weights. Requires comparison_matrix, criteria, alternatives, and alternatives_matrix to be set beforehand.
examples
Examples
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.set_alternatives(["alt1", "alt2"]) |> Descisionex.AnalyticHierarchy.set_alternatives_matrix([[[1, 2], [2, 1]], [[3, 1], [1, 3]]]) |> Descisionex.AnalyticHierarchy.calculate() |> Map.get(:alternatives_weights) |> Enum.sum() |> Float.round(2)
1.0
Calculates alternatives weights for analytic hierarchy (criteria must be set, such as comparison matrix and weights before must be calculated!).
examples
Examples
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.normalize_comparison_matrix() |> Descisionex.AnalyticHierarchy.set_alternatives(["some", "alternatives"]) |> Descisionex.AnalyticHierarchy.set_alternatives_matrix([[[1, 2, 3]], [[4, 5, 6]]]) |> Descisionex.AnalyticHierarchy.calculate_alternatives_weights_by_criteria() |> Descisionex.AnalyticHierarchy.calculate_alternatives_weights()
** (ArgumentError) Weights must be calculated before!
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.normalize_comparison_matrix() |> Descisionex.AnalyticHierarchy.calculate_criteria_weights() |> Descisionex.AnalyticHierarchy.set_alternatives(["some", "alternatives"]) |> Descisionex.AnalyticHierarchy.set_alternatives_matrix([[[1, 2, 3]], [[4, 5, 6]]]) |> Descisionex.AnalyticHierarchy.calculate_alternatives_weights_by_criteria() |> Descisionex.AnalyticHierarchy.calculate_alternatives_weights()
%Descisionex.AnalyticHierarchy{
alternatives: ["some", "alternatives"],
alternatives_matrix: %{"criteria" => [[4, 5, 6]], "some" => [[1, 2, 3]]},
alternatives_num: 2,
alternatives_weights: [3.0],
alternatives_weights_by_criteria: [[3.0, 3.0]],
comparison_matrix: [[1, 2], [3, 4]],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["some", "criteria"],
criteria_num: 2,
criteria_weights: [[0.291], [0.709]],
lambda_max: nil,
normalized_comparison_matrix: [[0.25, 0.333], [0.75, 0.667]]
}
Calculates alternatives weights by criteria for analytic hierarchy (criteria must be set, such as comparison matrix!).
examples
Examples
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.calculate_alternatives_weights_by_criteria()
** (ArgumentError) Alternatives matrix must be set!
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.set_alternatives(["some", "alternatives"]) |> Descisionex.AnalyticHierarchy.set_alternatives_matrix([[[1, 2, 3]], [[4, 5, 6]]]) |> Descisionex.AnalyticHierarchy.calculate_alternatives_weights_by_criteria()
%Descisionex.AnalyticHierarchy{
alternatives: ["some", "alternatives"],
alternatives_matrix: %{"criteria" => [[4, 5, 6]], "some" => [[1, 2, 3]]},
alternatives_num: 2,
alternatives_weights: [],
alternatives_weights_by_criteria: [[3.0, 3.0]],
comparison_matrix: [],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["some", "criteria"],
criteria_num: 2,
criteria_weights: [],
lambda_max: nil,
normalized_comparison_matrix: []
}
Calculates the consistency ratio (CR) of the comparison matrix. CR < 0.1 indicates acceptable consistency. Requires criteria weights to be calculated first.
examples
Examples
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.calculate_consistency_ratio()
** (ArgumentError) Criteria weights must be calculated before consistency ratio!
Calculates weights for normalized comparison matrix for analytic hierarchy (criteria must be set, such as comparison matrix!).
examples
Examples
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.calculate_criteria_weights()
** (ArgumentError) Comparison matrix must be normalized!
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.normalize_comparison_matrix() |> Descisionex.AnalyticHierarchy.calculate_criteria_weights()
%Descisionex.AnalyticHierarchy{
alternatives: [],
alternatives_matrix: %{},
alternatives_num: 0,
alternatives_weights: [],
alternatives_weights_by_criteria: [],
comparison_matrix: [[1, 2], [3, 4]],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["some", "criteria"],
criteria_num: 2,
criteria_weights: [[0.291], [0.709]],
lambda_max: nil,
normalized_comparison_matrix: [[0.25, 0.333], [0.75, 0.667]]
}
Normalizes comparison matrix for analytic hierarchy (criteria must be set, such as comparison matrix!).
examples
Examples
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.normalize_comparison_matrix()
** (ArgumentError) Comparison matrix must be set!
iex> %Descisionex.AnalyticHierarchy{comparison_matrix: [[1, 2], [3, 4]]} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.normalize_comparison_matrix()
%Descisionex.AnalyticHierarchy{
alternatives: [],
alternatives_matrix: %{},
alternatives_num: 0,
alternatives_weights: [],
alternatives_weights_by_criteria: [],
comparison_matrix: [[1, 2], [3, 4]],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["some", "criteria"],
criteria_num: 2,
criteria_weights: [],
lambda_max: nil,
normalized_comparison_matrix: [[0.25, 0.333], [0.75, 0.667]]
}
Set alternatives for analytic hierarchy.
examples
Examples
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_alternatives([])
** (ArgumentError) Alternatives must be not empty!
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_alternatives(["some", "alternatives"])
%Descisionex.AnalyticHierarchy{
alternatives: ["some", "alternatives"],
alternatives_matrix: %{},
alternatives_num: 2,
alternatives_weights: [],
alternatives_weights_by_criteria: [],
comparison_matrix: [],
consistency_index: nil,
consistency_ratio: nil,
criteria: [],
criteria_num: 0,
criteria_weights: [],
lambda_max: nil,
normalized_comparison_matrix: []
}
Set alternatives matrix for analytic hierarchy (criteria must be set!).
examples
Examples
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_alternatives_matrix([[1, 2], [3, 4]])
** (ArgumentError) Criteria must be set!
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"]) |> Descisionex.AnalyticHierarchy.set_alternatives_matrix([[1, 2], [3, 4]])
%Descisionex.AnalyticHierarchy{
alternatives: [],
alternatives_matrix: %{"criteria" => [3, 4], "some" => [1, 2]},
alternatives_num: 0,
alternatives_weights: [],
alternatives_weights_by_criteria: [],
comparison_matrix: [],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["some", "criteria"],
criteria_num: 2,
criteria_weights: [],
lambda_max: nil,
normalized_comparison_matrix: []
}
Set criteria for analytic hierarchy.
examples
Examples
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_criteria([])
** (ArgumentError) Criteria must be not empty!
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_criteria(["some", "criteria"])
%Descisionex.AnalyticHierarchy{
alternatives: [],
alternatives_matrix: %{},
alternatives_num: 0,
alternatives_weights: [],
alternatives_weights_by_criteria: [],
comparison_matrix: [],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["some", "criteria"],
criteria_num: 2,
criteria_weights: [],
lambda_max: nil,
normalized_comparison_matrix: []
}
Set pre-tagged alternatives matrix for analytic hierarchy (criteria must be set!). The map keys must correspond to criteria names.
examples
Examples
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_tagged_alternatives_matrix(%{"a" => [1, 2]})
** (ArgumentError) Criteria must be set!
iex> %Descisionex.AnalyticHierarchy{} |> Descisionex.AnalyticHierarchy.set_criteria(["a", "b"]) |> Descisionex.AnalyticHierarchy.set_tagged_alternatives_matrix(%{"a" => [1, 2], "b" => [3, 4]})
%Descisionex.AnalyticHierarchy{
alternatives: [],
alternatives_matrix: %{"a" => [1, 2], "b" => [3, 4]},
alternatives_num: 0,
alternatives_weights: [],
alternatives_weights_by_criteria: [],
comparison_matrix: [],
consistency_index: nil,
consistency_ratio: nil,
criteria: ["a", "b"],
criteria_num: 2,
criteria_weights: [],
lambda_max: nil,
normalized_comparison_matrix: []
}