A web application for Multi-Criteria Decision Making (MCDM) using the Picture-Fuzzy-Sets CIMAS-ARTASI Decision Model.
This tool helps users (e.g., students, faculty, or administrators) evaluate and rank courses based on multiple criteria and expert opinions. It leverages advanced fuzzy logic (Picture Fuzzy Sets) and the CIMAS-ARTASI methodology to aggregate subjective judgments and produce robust, explainable course rankings.
- Upload expert ratings via CSV
- Support for linguistic variables and abbreviations (e.g., "Very Good (VG)")
- Automatic mapping of linguistic terms to fuzzy numbers
- Transparent, step-by-step calculation and ranking
- Modern, responsive UI (React + Tailwind CSS)
- PFS (Picture Fuzzy Sets): Allows experts to express degrees of membership, neutrality, and non-membership for each criterion/alternative.
- CIMAS: Aggregates expert opinions and computes criteria weights.
- ARTASI: Ranks alternatives (courses) based on aggregated scores and criteria weights.
├── src/
│ ├── components/ # React UI components
│ ├── pages/ # Main app pages (Calculator, Home, etc.)
│ ├── utils/ # Core logic, data extraction, and calculation
│ ├── types/ # TypeScript type definitions
│ └── ...
├── public/ # Static assets
├── data.csv # Example input data (CSV)
├── README.md
└── ...
- Clone the repository:
git clone https://github.com/MoBakour/course-ranking-mcdm.git cd course-ranking-mcdm - Install dependencies:
npm install
- Use the provided
data.csvformat as a template. - Each row represents an expert's ratings for criteria and alternatives, using supported linguistic labels (e.g., "Very Good (VG)", "Important (I)").
npm run dev- Open your browser to the local address shown in the terminal (usually
http://localhost:5173or similar).
- Go to the Calculator page.
- Upload your
.csvfile. - The app will process the data and display the ranked courses.
npm run build- The production-ready files will be in the
dist/folder.
- Linguistic Scales:
- Edit
src/utils/calculator.tsto adjust or extend the supported linguistic terms and their fuzzy values.
- Edit
- Criteria/Alternatives:
- The app dynamically adapts to the number of criteria and alternatives in your CSV.
- React.js
- TypeScript
- Tailwind CSS
- PapaParse (CSV parsing)
- Recharts (Chart Data Visualization)
- Picture Fuzzy Sets, CIMAS, ARTASI (decision logic)
- All calculations are performed in the browser; no data is sent to a server.
- The app is designed for educational and research use. For production or sensitive data, review and adapt as needed.
For questions, suggestions, or contributions, please open an issue or pull request!
Let's connect
Built with ❤️ by MoBakour