topsis-gaurav-102303493 1.0.6
A Python package implementing the TOPSIS method for multi-criteria decision making.
License: MIT

# Project Description

## topsis-gaurav-102303493

`topsis-gaurav-102303493` is a Python package for solving **Multiple Criteria Decision Making (MCDM)** problems using the **Technique for Order of Preference by Similarity to Ideal Solution (TOPSIS)**.

It helps rank alternatives based on their relative closeness to the ideal solution and is useful in realâ€‘world decisionâ€‘making scenarios such as:

* Choosing the best product
* Selecting the best candidate
* Ranking investment options
* Engineering design evaluation
* Research and management decision analysis

---

## Installation

Use the package manager **pip** to install the package:

```bash
pip install topsis-gaurav-102303493
```

---

## Usage

Enter the CSV filename followed by the **weights vector** (commaâ€‘separated) and the **impacts vector** (commaâ€‘separated `+` or `-`).

### Format

```bash
topsis input.csv "w1,w2,w3,..." "+,-,+,..." output.csv
```

### Example

```bash
topsis sample.csv "1,1,1,1" "+,-,+,+" result.csv
```

Vectors can also be provided without quotes if they contain no spaces:

```bash
topsis sample.csv 1,1,1,1 +,-,+,+ result.csv
```

To view help information:

```bash
topsis -h
```

---

## Example Dataset

### sample.csv

A CSV file showing data for different mobile handsets with varying features:

| Model | Storage Space (GB) | Camera (MP) | Price ($) | Looks (out of 5) |
| ----- | ------------------ | ----------- | --------- | ---------------- |
| M1    | 16                 | 12          | 250       | 5                |
| M2    | 16                 | 8           | 200       | 3                |
| M3    | 32                 | 16          | 300       | 4                |
| M4    | 32                 | 8           | 275       | 4                |
| M5    | 16                 | 16          | 225       | 2                |

Weights vector:

```text
[0.25, 0.25, 0.25, 0.25]
```

Impacts vector:

```text
[+, +, -, +]
```

---

## Sample Command

```bash
topsis sample.csv "0.25,0.25,0.25,0.25" "+,+,-,+" output.csv
```

---

## Sample Output

```
----------------------------
       TOPSIS RESULTS
----------------------------
Alternative   Score     Rank
1             0.534277  3
2             0.308368  5
3             0.691632  1
4             0.534737  2
5             0.401046  4
```

The output CSV file will contain the TOPSIS score and rank for each alternative.

---

## Important Notes

* The **first column** of the CSV file must contain the alternative names (e.g., M1, M2, ...).
* The remaining columns must contain **numerical values only**.
* The number of weights must match the number of criteria columns.
* The number of impacts must match the number of criteria columns.
* Impacts must be either `+` (benefit) or `-` (cost).
* Do not include categorical (nonâ€‘numeric) data in criteria columns.

---

## Author

Developed by **Gaurav Srivastava**

---

## License

This project is released for academic and educational use.