Skip to content

yassine-cloud/RO-Project

Repository files navigation

Operations Research Optimization Suite

A comprehensive desktop application for solving complex operations research problems using state-of-the-art optimization techniques. Built with Python, PyQt5, and Gurobi, this suite provides intuitive graphical interfaces for multiple optimization domains.

🎯 Overview

This project offers ready-to-use optimization solutions for real-world problems in logistics, transportation, network planning, and manufacturing. Each module features an interactive wizard-based interface, mathematical modeling with Gurobi, and detailed visualization of results.

✨ Key Features

📡 WiFi Network Deployment (MCLP)

  • Maximum Coverage Location Problem with capacity-aware optimization
  • Optimal placement of WiFi routers to maximize user coverage
  • Support for 45+ router models (WiFi 5/6/6E standards)
  • Budget and capacity constraints
  • Interactive map visualization

🚚 Logistics Optimization

  • Task assignment and line balancing for distribution centers
  • Sorting and packaging operations optimization
  • Minimizes workstations, cycle time, and operational costs
  • Precedence constraints and resource management
  • Gantt charts and workload visualization

🚗 Electric Vehicle Routing (EVRP)

  • Route planning for electric vehicles with energy constraints
  • Battery consumption tracking and charging station optimization
  • Time windows, waypoints, and road status handling
  • Minimize travel time or energy consumption

📦 Transport Logistics

  • Distribution optimization from factories to warehouses
  • Linear and Mixed-Integer Programming formulations
  • Capacity constraints and fixed costs
  • Minimize total transportation costs

🏭 Facility Location & Manufacturing

  • Manufacturing line optimization
  • Flowshop scheduling with Gurobi
  • Strategic facility placement

🚀 Getting Started

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/yassine-cloud/RO-Project.git
    cd RO_Project
  2. Install dependencies

    pip install -r requirements.txt
  3. Configure Gurobi license

  4. Run the application

    python main.py

📖 Usage

Main Interface

Launch the application with python main.py to access the main menu. Select from five optimization modules:

  1. WiFi MCLP - Network deployment planning
  2. Transport Logistics - Factory-to-warehouse distribution
  3. Logistics - Warehouse operations optimization
  4. Electric Vehicle Routing - EV route planning
  5. Facility Location - Manufacturing optimization

Wizard-Based Workflow

Each module provides a step-by-step wizard:

  1. Input Data - Import CSV files or enter data manually
  2. Configuration - Set parameters and constraints
  3. Optimization - Solve with Gurobi's MIP solver
  4. Results - View solutions, statistics, and visualizations
  5. Export - Save results as JSON or CSV

📁 Project Structure

RO_Project/
├── main.py                          # Application entry point
├── requirements.txt                 # Python dependencies
├── LICENSE                          # MIT License
│
├── interface/                       # PyQt5 GUI modules
│   ├── main_window.py              # Main menu
│   ├── wifi_deployment_wizard.py   # WiFi MCLP interface
│   ├── logistics_window.py         # Logistics interface
│   ├── transport_window.py         # Transport interface
│   └── pages/                      # Wizard pages for each module
│
├── projects/                        # Optimization modules
│   ├── wifi_mclp/                  # WiFi network deployment
│   ├── logistics/                  # Warehouse logistics
│   ├── transport/                  # Electric vehicle routing
│   ├── transport_logistics/        # Distribution planning
│   └── fabrication_montage/        # Manufacturing
│
├── api/                            # Service layer
│   ├── dispatch.py                 # Module dispatcher
│   └── run_service.py              # Service runner
│
└── tests/                          # Unit tests

🛠️ Technology Stack

  • Programming Language: Python 3.8+
  • GUI Framework: PyQt5
  • Optimization Solver: Gurobi Optimizer
  • Data Processing: Pandas, NumPy
  • Visualization: Matplotlib, Folium
  • Testing: Pytest

📊 Mathematical Models

All modules use Mixed-Integer Linear Programming (MILP) or Linear Programming (LP):

  • Decision Variables: Binary (route selection) and continuous (quantities, time)
  • Objective Functions: Minimize cost, time, energy, or maximize coverage
  • Constraints: Capacity, precedence, energy, time windows, budget limits

🔧 Configuration

Each module supports flexible configuration through:

  • GUI inputs - Interactive parameter setting
  • JSON files - Load saved scenarios
  • CSV imports - Bulk data loading
  • Python API - Programmatic access to solvers

📝 Documentation

Detailed documentation for each module:

🤝 Contributing

Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🎓 Academic Use

This project was developed as part of operations research coursework at INSAT (Institut National des Sciences Appliquées et de Technologie). It demonstrates practical applications of optimization theory in real-world scenarios.

🙏 Acknowledgments

  • Gurobi Optimization for providing academic licenses
  • PyQt5 for the robust GUI framework
  • Operations Research course instructors and peers at INSAT

📧 Contact

For questions, suggestions, or collaboration opportunities, please open an issue on GitHub.


Made with ❤️ for Operations Research

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages