A Python package for implementing TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution).
Project description
TOPSIS 102203427
A Python package for implementing the Technique for Order of Preference by Similarity to Ideal Solution (TOPSIS). This is a multi-criteria decision analysis method that helps in ranking alternatives based on multiple criteria.
Installation
Install the package using pip:
pip install topsis-102203427
Usage
Command-Line Interface (CLI)
You can run the TOPSIS method directly from the command line.
Syntax
topsis <input_file> <weights> <impacts> <output_file>
Arguments
-
<input_file>: Path to the input CSV file containing the data.- The first column should contain the names of the alternatives.
- The remaining columns should contain numerical values for the criteria.
-
<weights>: A comma-separated string of weights for each criterion (e.g.,"1,1,1,1"). -
<impacts>: A comma-separated string of impacts (+for positive,-for negative) corresponding to each criterion (e.g.,"+,+,-,+"). -
<output_file>: Path to save the resulting output file, which will include the computed scores and ranks.
Example
Input File (input.csv)
| Alternative | Criterion1 | Criterion2 | Criterion3 | Criterion4 |
|---|---|---|---|---|
| Alt1 | 250 | 16 | 12 | 5 |
| Alt2 | 200 | 32 | 8 | 3 |
| Alt3 | 300 | 24 | 10 | 4 |
| Alt4 | 275 | 20 | 11 | 4.5 |
| Alt5 | 225 | 28 | 9 | 4 |
Command
topsis input.csv "1,1,1,1" "+,+,-,+" output.csv
Output File (output.csv)
| Alternative | Criterion1 | Criterion2 | Criterion3 | Criterion4 | Score | Rank |
|---|---|---|---|---|---|---|
| Alt1 | 250 | 16 | 12 | 5 | 0.8729 | 1 |
| Alt2 | 200 | 32 | 8 | 3 | 0.3243 | 4 |
| Alt3 | 300 | 24 | 10 | 4 | 0.2985 | 5 |
| Alt4 | 275 | 20 | 11 | 4.5 | 0.7315 | 3 |
| Alt5 | 225 | 28 | 9 | 4 | 0.4532 | 2 |
Library Usage
You can also use the package programmatically in Python.
from topsis_package.main import topsis
topsis("input.csv", "1,1,1,1", "+,+,-,+", "output.csv")
Dependencies
- Python >= 3.7
- pandas
- numpy
How TOPSIS Works
-
Normalize the Decision Matrix
Convert each criterion to a unit vector. -
Calculate the Weighted Normalized Decision Matrix
Multiply each normalized value by its weight. -
Determine the Ideal Best and Worst Solutions
- For positive impacts: Max value.
- For negative impacts: Min value.
-
Calculate Separation Measures
- Distance from the ideal best.
- Distance from the ideal worst.
-
Compute Relative Closeness to the Ideal Solution
Rank the alternatives based on their closeness.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Author
Aditya Raj Singh
Email: aditya003rs@gmail.com
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file topsis_102203427-1.0.2.tar.gz.
File metadata
- Download URL: topsis_102203427-1.0.2.tar.gz
- Upload date:
- Size: 3.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4b450fe6855e10007043c521bdbc5b96b6bd53f88e1555aadfb83c2a0275c07
|
|
| MD5 |
3a7f65ad569091bf5e49743b985b2d3d
|
|
| BLAKE2b-256 |
b701111fa91055c6869f113af9a867207a348421d5522f430a3e5e5ed862c29b
|
File details
Details for the file topsis_102203427-1.0.2-py3-none-any.whl.
File metadata
- Download URL: topsis_102203427-1.0.2-py3-none-any.whl
- Upload date:
- Size: 3.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
783befb446a9433e5a8de01330f9e4baa15a259a7aa53b171b3e52c2f94b0598
|
|
| MD5 |
5b9b4b5d87edd4df703e0d3a3b588808
|
|
| BLAKE2b-256 |
7b8edf6906a48a97e42aa00d1b9642c592e773d4ae5ed8e58ed610878147677f
|