Metadata-Version: 2.4
Name: Topsis-Akash-102317024
Version: 1.0.0
Summary: A Python package to implement TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution)
Home-page: https://github.com/akash102317024/Topsis-Akash-102317024
Author: Akash
Author-email: 102317024@thapar.edu
Keywords: topsis mcdm decision-making multi-criteria
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: numpy
Requires-Dist: pandas
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Topsis-Akash-102317024

**By: Akash, 102317024**

TOPSIS (Technique for Order of Preference by Similarity to Ideal Solution) is a multi-criteria decision analysis method. It is based on the principle that the best solution has the **shortest distance** from the positive-ideal solution and the **longest distance** from the negative-ideal solution.

---

## Installation

```bash
pip install Topsis-Akash-102317024
```

---

## Usage

### Command Line

```bash
topsis <InputDataFile> <Weights> <Impacts> <ResultFileName>
```

**Example:**

```bash
topsis data.csv "1,1,2,1" "+,+,-,+" result.csv
```

### Python API

```python
from Topsis_Akash_102317024 import topsis

topsis("data.csv", "1,1,2,1", "+,+,-,+", "result.csv")
```

---

## Input File Format

The input CSV file must have:
- **First column**: Alternative names (e.g., M1, M2, …)
- **Remaining columns**: Numeric criteria values

Example `data.csv`:

```
Fund Name,P1,P2,P3,P4,P5
M1,0.84,0.71,6.7,42.1,12.97
M2,0.91,0.83,7.0,31.7,10.52
M3,0.79,0.62,4.8,46.7,13.23
M4,0.78,0.61,6.4,42.4,12.59
M5,0.94,0.88,3.6,62.2,10.11
```

---

## Parameters

| Parameter   | Description                                              |
|-------------|----------------------------------------------------------|
| InputDataFile | Path to input CSV file                                |
| Weights     | Comma-separated numeric weights, e.g. `"1,1,2,1"`       |
| Impacts     | Comma-separated impacts (`+` or `-`), e.g. `"+,+,-,+"`  |
| ResultFileName | Path to output CSV file                             |

---

## Output

The result CSV will contain all original columns plus two new columns:

- **Topsis Score** – Performance score (0 to 1, higher is better)
- **Rank** – Rank of each alternative (1 = best)

---

## Algorithm Steps

1. Normalise the decision matrix
2. Calculate weighted normalised matrix
3. Determine ideal best and ideal worst solutions
4. Compute Euclidean distances from ideal solutions
5. Calculate performance score (closeness coefficient)
6. Rank alternatives

---

## Dependencies

- `numpy`
- `pandas`

---

## License

MIT License — © 2024 Akash
