A powerful scheduling application built with modern web technologies.
- Flask (2.3.3): A lightweight WSGI web application framework.
- python-dotenv (1.0.0): Loads environment variables from .env files.
- Flask-SQLAlchemy (3.1.1): Adds SQLAlchemy support to Flask application.
- Flask-Migrate (4.0.5): Handles SQLAlchemy database migrations for Flask.
- Flask-Cors (4.0.0): Handles Cross-Origin Resource Sharing (CORS).
- Jupyter Notebook: Interactive computing environment for data analysis and visualization.
- Matplotlib: Comprehensive library for creating static, animated, and interactive visualizations.
- Pandas: Data analysis and manipulation library.
- NumPy: Library for numerical computing with Python.
- React (19.0.0): JavaScript library for building user interfaces.
- React DOM (19.0.0): React package for DOM rendering.
- React Router DOM (7.5.0): Declarative routing for React.
- TypeScript (5.7.2): Strongly typed programming language.
- Vite (6.2.0): Next generation frontend tooling.
- TailwindCSS (4.1.4): Utility-first CSS framework.
- Zustand (5.0.3): State management solution using simplified flux principles.
- Axios (1.8.4): Promise-based HTTP client for the browser and Node.js.
- Recharts (2.15.2): Redefined chart library built with React and D3.
- Lucide React (0.488.0): Icon library for React applications.
- Radix UI (1.2.0): Unstyled, accessible UI component library.
- Class Variance Authority (0.7.1): Utility for creating consistent component variants.
- Tailwind Merge (3.2.0): Utility for merging Tailwind CSS classes.
- TW Animate CSS (1.2.5): Animation library for Tailwind CSS.
The application uses several advanced optimization algorithms to generate efficient schedules:
- Ant Colony Optimization: Uses pheromone trails and heuristic information to find optimal solutions through collaborative search.
- Multi-Objective Genetic Algorithm (MOGA): Evolves solutions using crossover and mutation while optimizing for multiple competing objectives.
- Simple Genetic Algorithm: A streamlined genetic approach focused on quick convergence to good solutions.
- Hill Climbing: A local search algorithm that continuously moves to neighboring states to find better solutions.
The backend utilizes Jupyter notebooks for algorithm development, testing, and visualization:
- Algorithm Prototyping: Jupyter notebooks provide an interactive environment for developing and testing scheduling algorithms.
- Performance Analysis: Visualize algorithm performance metrics including convergence rates and solution quality.
- Schedule Visualization: Generate visual representations of created schedules for easier interpretation.
- Comparative Analysis: Compare different algorithm approaches and parameter configurations to identify optimal solutions.
Jupyter notebooks are located in the backend/jupyter/ directory and include:
ant_colony.ipynb: Implementation and visualization of the Ant Colony Optimization algorithm- Additional algorithm notebooks for other optimization approaches
To run the Jupyter notebooks:
cd backend
pip install jupyter matplotlib pandas numpy
jupyter notebookNavigate to the jupyter/ directory to access the algorithm notebooks.
cd backend
pip install -r requirements.txt
python -m venv venv
source venv/Scripts/activate
python app.pycd frontend
npm install
npm run dev