Implementation of TOPSIS decision making
Project description
TOPSIS-Python
Inspired by TOPSIS-Python (python2).
Our python 3 code follows the same strucutre, definign a topsis class, but uses numpy linear algebra in order to modernise, optimise, and remove redundant code.
pypi: https://pypi.org/project/topsis-jamesfallon git: https://gitlab.com/jamesfallon/topsis-python.git
What is TOPSIS
Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) originated in the 1980s as a multi-criteria decision making method. TOPSIS chooses the altenrative of shortest Euclidean distance from the idael solution, and fartherst distance from the negative-ideal solution. More details at wikipedia. The TOPSIS algorithm is succintly explained in this paper comparing TOPSIS and VIKOR methods
Using TOPSIS-Python
TOPSIS-Python can be run as in the following example:
>>> import numpy as np
>>> from topsis import topsis
>>> a = [[7, 9, 9, 8], [8, 7, 8, 7], [9, 6, 8, 9], [6, 7, 8, 6]]
>>> w = [0.1, 0.4, 0.3, 0.2]
>>> I = np.array([1, 1, 1, 0]
>>> decision = topsis.topsis(a, w, I)
The decision matrix (a
) should be constructed with each row representing
an alternative, and each column representing a criterion. We have used an
example given in TOPSIS Method in MADM (Dr. Farhad Faez)
Weights (w
) is not already normalised will be normalised upon
initialisation. Information on benefit (1) cost (0) criteria should be provided
in I
.
By default, the optimisation (TOPSIS calculation) does not take place. No values
are stored in decision.C
or decision.optimum_choice
.
These can be calculated, either by calling decision.calc()
, or by calling a
representation of the decision (which will itself call decision.calc()
):
>>> decision
Alternatives ranking C:
[0.74269409 0.40359933 0.17586999 0.44142927]
Best alternative
a[0]: [7. 9. 9. 8.]
The rankings are saved in decision.C
, with the highest ranking $0.74269409
$
offering us the best decision, and lowest ranking $0.17586999
$ offering the
worst decision making, according to TOPSIS method.
We are also then shown the best alternative index (which happens to be index 0 in this example), and the associated criteria coefficients of this alternative.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for topsis_jamesfallon-0.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 914cf6d4a1be2642ced011282bc2d8127faffcd4ca8f512691e676b07e387aa8 |
|
MD5 | 04071d1e39d1608045f2ebb06bdbcc8e |
|
BLAKE2b-256 | fc79cee70b48b2354a12b01a51012e0d3e426cb554f6fcfaab1135136a86ad5c |