# TOPSIS

## Goals of this project :
:star: Learn about mathematics of TOPSIS Algorithm
<br>
:star: Implementation of TOPSIS Algorithm using python. The code for same is available in 102017187.py file
<br>
:star: Create a package and publish it on (https://pypi.org/). Also, provide a user manual for it.
<br>
:star: Test the package by installing it and run it through command line.
<br>
:star: Create a web app for TOPSIS
<br>

-------------------------

### What is TOPSIS ? 
- Technique for Order Preference by Similarity to Ideal Solution (TOPSIS) is a multi-criteria-based decision-making method 
- {Eg. You want to purchase a mobile phone. But you are confused because there are so many factors like price, memory, battery, camera quality etc. So, TOPSIS provides you the solution.} 
- It is a way to allocate the ranks on basis of the weights and impact of the given factors.

-------------------------

### How to install this package ?
`pip install Topsis-Jasween-102017187`

-------------------------

### Example of how to use it on command line:
Usages: `topsis <InputDataFile> <Weights> <Impacts> <ResultFileName>`

**Parameters:**
| Arguments | Description |
| --- | --- |
| InputDataFile | Input CSV file path |
| Weights | Comma separated numbers |
| Impacts | Comma separated either '+' or '-' |
| ResultFileName | Output CSV file path |

It accepts input file (which contains parameters and their values in csv format) and weights and impacts.

It creates a output file(.csv), that contains the original data with Topsis Score and Ranks.

-------------------------

### Be careful about these, otherwise you will get an error :smile: :
- Correct no. of parameters must be provided in command line
- Input file must be in csv format and must be present
- Input file must contain three or more columns
- Input file: first column is the object/variable name (e.g. M1, M2, M3, M4…...)
- Input file: from 2nd to last column the valuse should be only numeric
- Result file should be .csv file
- Weights and impacts should be in correct format and separated by ","
- Number of weights, number of impacts and number of columns (from 2nd to last columns) must be same.
- Impacts must be either +ve or -ve

-------------------------



