--- title: GeneticWFM emoji: 🧬 colorFrom: indigo colorTo: green sdk: docker pinned: false short_description: Evolutionary AI solver for workforce management license: apache-2.0 --- # 🧬 AI Workforce Scheduler Questo progetto Γ¨ un prototipo avanzato per l'ottimizzazione della pianificazione dei turni di lavoro (**Workforce Management**) basato su **Algoritmi Genetici** e accelerato tramite **Numba**. È progettato specificamente per gestire scenari complessi nel settore **BPO (Business Process Outsourcing)**, garantendo la copertura del fabbisogno operativo e il rispetto dei vincoli di legge e contrattuali. ## πŸš€ Caratteristiche Tecniche * **Motore Evolutivo ad Alte Prestazioni**: Utilizzo di **Numba (`njit`)** per la compilazione Just-In-Time e il calcolo parallelo della fitness, permettendo di gestire popolazioni numerose su centinaia di dipendenti in pochi secondi. * **Architettura Modulare**: Suddivisione netta tra motore genetico, modelli di dominio e logica di business per una facile scalabilitΓ . * **Gestione Vincoli Avanzata**: * Pause **VDT (Video Terminalista)** gestite dinamicamente tramite maschere di turno. * Rispetto del **Mix Settimanale** (Giorni Lavorati vs Riposi). * Gestione di vincoli **Hard** (Assenze, turni fissi) e **Soft** (Preferenze orarie). * **Vettorializzazione NumPy**: Tutta la logica di calcolo Γ¨ ottimizzata per operare su matrici, riducendo al minimo i cicli Python nel core dell'algoritmo. ## πŸ“‚ Struttura del Progetto Il progetto Γ¨ organizzato secondo i principi della programmazione modulare: ``` . β”œβ”€β”€ app.py # UI & Sandbox Evolutiva (Streamlit) β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ config.py # Manager degli Iperparametri (Cascade L0/L1/L2) β”‚ β”œβ”€β”€ config/ β”‚ β”‚ └── engine_config.json # Parametri dell'Ambiente Evolutivo (L1) β”‚ β”œβ”€β”€ engine/ # Motore Evolutivo e Operatori Genetici β”‚ β”‚ β”œβ”€β”€ crossover.py # Ricombinazione Genica (Uniform Crossover vettorializzato) β”‚ β”‚ β”œβ”€β”€ evolution.py # Ciclo Generazionale (Main JIT Solver) β”‚ β”‚ β”œβ”€β”€ mutation.py # Perturbazione Stocastica (Mutazione Ibrida Day-Swap/Time-Shift) β”‚ β”‚ └── selection.py # Pressione Selettiva (Tournament) e Funzione di Fitness (Loss) β”‚ β”œβ”€β”€ models/ β”‚ β”‚ └── individual.py # Rappresentazione Cromosomica e mapping Genotipo/Fenotipo (VDT) β”‚ β”œβ”€β”€ problems/ β”‚ β”‚ └── my_problem.py # Definizione dello Spazio di Ricerca e dei Vincoli Ambientali β”‚ └── utils/ β”‚ β”œβ”€β”€ demand_processing.py # Allineamento dei Target di Fitness (Time-series sanitization) β”‚ β”œβ”€β”€ generator.py # Generatore di Ambienti di Simulazione (Mock Scenarios) β”‚ β”œβ”€β”€ health.py # Metriche di Dinamica Popolazionale (IBE, Distanza di Hamming) β”‚ β”œβ”€β”€ helpers.py # Utility di decodifica dei tratti e structural analysis β”‚ β”œβ”€β”€ hf_storage.py # Conservazione del Pool Genetico e I/O su HF Datasets β”‚ └── visualization.py # Proiezione Fenotipica e rendering vettoriale dei risultati β”œβ”€β”€ Dockerfile # Containerizzazione per HF Spaces β”œβ”€β”€ requirements.txt # Dipendenze del progetto └── README.md # Documentazione ``` ## πŸ› οΈ Installazione e Setup ### Prerequisiti * Python 3.10 o superiore. * Si consiglia l'uso di un ambiente virtuale (`venv`). ### Passaggi 1. **Clona il repository**: ```bash git clone cd workforce-scheduler ``` 2. **Configura l'ambiente**: ```bash python -m venv .venv source .venv/bin/activate # Su Windows: .venv\\Scripts\\activate pip install -r requirements.txt ``` ## πŸ’» ModalitΓ  d'Uso ### Avvio Dashboard Per gestire le attivitΓ  e avviare l'ottimizzazione tramite l'interfaccia web: ```bash streamlit run app.py ``` ## βš™οΈ Sistema di Configurazione L'algoritmo adotta una gerarchia di parametri a tre livelli: 1. **System Defaults**: Valori di sicurezza definiti nel codice. 2. **Engine Config** (`src/config/engine_config.json`): Parametri standard per il comportamento dell'algoritmo. 3. **Activity Config** (`data/activities/{nome}/activity_config.json`): Parametri specifici per la commessa, inclusi i **pesi della fitness**. ## πŸ“Š Visualizzazione Risultati L'applicazione genera automaticamente: * **Matrici di Copertura**: Grafici comparativi tra domanda e staff. * **Roster Visuale**: Tabellone dei turni settimanale. * **Report QualitΓ **: Analisi degli slot scoperti. ## πŸ§ͺ Roadmap e Sviluppi Futuri * [ ] Integrazione di modelli di **Deep Learning** per la predizione della domanda. * [ ] Implementazione di strategie di mutazione basate su **Reinforcement Learning**. * [ ] Export dei roster in formato Excel/CSV. **Sviluppato come prototipo per soluzioni WFM avanzate.**