Minimaxer is a comprehensive platform for mathematical optimization and multi-criteria decision-making. It features a robust FastAPI backend and an interactive Gradio web interface.
- Solver: Powered by PuLP and the CBC solver.
- Capabilities: Supports continuous, integer, and binary variables.
- Interactive Modeling: Build, preview, and solve optimization problems in real-time.
- TOPSIS: Technique for Order of Preference by Similarity to Ideal Solution. Supports hybrid criteria (Quantitative, Qualitative, Ranking).
- ELECTRE I: Elimination and Choice Expressing Reality. Uses concordance and discordance indices to find the set of best alternatives (Kernel).
- Built with Gradio for a seamless user experience.
- Dynamic alternative management and criteria configuration.
- Mathematical model preview for verification.
- Python 3.10+
- Docker & Docker Compose (optional)
-
Install Dependencies:
pip install -r server/requirements.txt pip install -r client/requirements.txt
-
Run the Server:
# From the project root uvicorn server.app.main:app --reloadAPI will be available at
http://localhost:8000. Docs at/docs. -
Run the Client:
python client/app.py
Web interface will be available at
http://localhost:7860.
Use the provided utility scripts:
./start.sh # Build and start containers
./logs.sh # View logs
./stop.sh # Stop and remove containersThe backend exposes several endpoints for different solving methods under the /api/solvers/ prefix.
| Method | Endpoint | Description |
|---|---|---|
| Linear | POST /api/solvers/linear |
LP/ILP solving via PuLP |
| TOPSIS | POST /api/solvers/topsis |
Multi-criteria ranking |
| ELECTRE | POST /api/solvers/electre |
Outranking method (ELECTRE I) |
Request:
{
"name": "Production_Optimization",
"direction": "maximize",
"variables": [
{"name": "x", "low_bound": 0, "category": "Integer"}
],
"objective": {"coefficients": {"x": 10}},
"constraints": [
{"coefficients": {"x": 2}, "operator": "<=", "rhs": 100}
]
}We use pytest for unit and integration testing.
# Run all tests
pytest tests/ -v
# Run backend specific tests
pytest server/tests/ -v├── client/ # Gradio Web Interface
│ ├── ui/ # Layout and dynamic UI components
│ └── core/ # UI logic and model builders
├── server/ # FastAPI Backend
│ └── app/ # Core application logic
│ ├── api/ # REST endpoints (Routers)
│ └── services/# Solving logic (PuLP, NumPy)
├── shared/ # Shared Pydantic schemas
└── notebooks/ # Research & prototyping
This project is licensed under the MIT License.