ESEMPI INTERATTIVI

In questa pagina presentiamo una raccolta di DEMO interattive pensate per illustrare l'impiego di algoritmi avanzati in contesti specifici; non sono DEMO teoriche, ma tecnologie applicabili ai processi reali delle aziende.
Gli esempi interattivi di Cocce mostrano come Intelligenza Artificiale, ricerca semantica, simulazioni evolutive e sviluppo software personalizzato possano migliorare produttività, accesso alle informazioni, automazione e supporto decisionale all'interno delle organizzazioni. Dalla gestione intelligente della logica fuzzy, fino agli algoritmi di ottimizzazione per logistica, percorsi, produzione e Industria 4.0, ogni DEMO nasce da attività concrete di ricerca e sviluppo orientate alla creazione di soluzioni digitali avanzate.

Le tecnologie sviluppate sono fruibili via web browser e dimostrano concretamente l'efficacia delle nostre soluzioni software attraverso un approccio multi-target, integrabile in applicazioni web, mobile, desktop, totem interattivi, sistemi embedded e direttamente a bordo macchina, permettendo interconnessione industriale, acquisizione dati, monitoraggio in tempo reale e automazione avanzata dei processi produttivi.

Swarm Intelligence

Utilizzare il bottone "Restart" per ricominciare la simulazione da zero.

Utilizzare il bottone "Random" per avviare una configurazione casuale degli agenti.

Utilizzare il bottone "Clear field" per svuotare il campo e ripartire da una griglia vuota.

Utilizzare "Pause" per fermare l'esecuzione e "Step" per avanzare frame per frame.

Regolare lo slider "Speed" per modificare la velocità di aggiornamento degli agenti.

Modificare il numero di "Agents" per aumentare o diminuire la dimensione dello sciame.

Usare "Zoom" (click + drag) e la rotellina del mouse per navigare nella griglia.

Definizione del problema

  • Swarm Intelligence è una simulazione interattiva di un sistema multi-agente decentralizzato in cui centinaia di entità autonome esplorano, si dispongono e coprono progressivamente un'area bidimensionale senza controllo centralizzato.
  • L'obiettivo è mostrare come comportamenti complessi di coverage, dispersione ed esplorazione emergente possano derivare da semplici regole locali, rendendo il sistema estremamente scalabile, robusto e fault tolerant.

Regole del sistema

  • Ogni agente si muove in modo autonomo sulla griglia seguendo regole locali di dispersione, ramificazione e riduzione delle collisioni.
  • Gli agenti occupano progressivamente nuove celle generando una crescita pseudo-uniforme del territorio esplorato.
  • L'utente può controllare il numero di agenti, la velocità di simulazione, avviare o fermare l'esecuzione e zoomare sulla griglia.
  • I pulsanti "Restart", "Random" e "Clear field" permettono di testare diversi scenari di partenza e osservare la riorganizzazione dello sciame.

Implementazione dell'algoritmo

  • Il sistema è modellato come una popolazione di agenti autonomi che operano in parallelo su una griglia discreta, aggiornando posizione e stato in un loop di simulazione ad alta frequenza.
  • Ogni agente applica euristiche locali per massimizzare la distanza dai vicini (dispersione) e minimizzare le sovrapposizioni, generando pattern di blue noise distribution.
  • La coverage viene calcolata in tempo reale mostrando la percentuale di territorio occupato e il numero di passi effettuati.
  • L'approccio è decentralizzato: nessun agente ha visione globale, il comportamento emergente deriva esclusivamente dalle interazioni locali.

Applicazioni reali

  • Difesa e sciami autonomi: coordinamento di droni o unità robotiche per esplorazione e sorveglianza di aree sconosciute o pericolose.
  • Magazzini automatici e robot distribuiti: ottimizzazione del movimento di flotte di robot per copertura, picking e movimentazione in ambienti dinamici.
  • Miniere ed esplorazione autonoma: mappatura e ispezione di gallerie o ambienti sotterranei senza guida centrale.
  • Agricoltura di precisione: copertura uniforme del terreno per irrorazione, monitoraggio e raccolta tramite sciame di robot o droni.
  • Computer graphics: generazione procedurale di texture, texture synthesis e distribuzione ottimale dei campioni (blue noise) per rendering e animazioni.
  • Coverage planner e sistemi di esplorazione: algoritmi di dispersione ottimizzata per pulizia autonoma, ispezione industriale e mappatura 3D.
Connections

Ogni particella si muove autonomamente e si collega istantaneamente agli altri punti vicini.

Utilizzare i controlli per modificare distanza, quantità, tonalità e velocità.

Utilizzare il bottone "Reset" per resettare l'esecuzione'.

Utilizzare il bottone "Random" per avviare l'esecuzione con parametri casuali.

Definizione del problema

  • Connections è una simulazione interattiva di un sistema di particelle in cui ogni punto si muove autonomamente nello spazio bidimensionale e stabilisce connessioni visive con i vicini entro un raggio di influenza definito.
  • L'obiettivo è visualizzare come strutture di rete emergano dinamicamente dalla semplice regola di prossimità, mostrando pattern di collegamento che si riconfigurano continuamente al variare delle posizioni.

Regole del sistema

  • Le particelle si muovono con velocità e direzioni variabili in modo continuo.
  • Due particelle si connettono automaticamente quando la distanza tra loro è inferiore alla soglia impostata.
  • L'utente può regolare i parametri: Distance (raggio di connessione), Quantity (numero di particelle), HUE (tonalità cromatica) e Speed (velocità di movimento).
  • I pulsanti "Reset" e "Random" permettono di ripristinare la configurazione o generare una distribuzione casuale delle particelle.

Implementazione dell'algoritmo

  • Il sistema viene modellato come una collezione di agenti autonomi dotati di posizione e velocità proprie, aggiornati in un loop di rendering su Canvas.
  • Ad ogni frame viene calcolata la distanza euclidea tra tutte le coppie di particelle; se la distanza è minore del parametro Distance, viene disegnato un segmento tra i due punti.
  • L'aggiornamento delle posizioni avviene in tempo reale, generando una rete adattiva che cambia morfologia continuamente.
  • I parametri interattivi controllano direttamente le variabili del modello fisico, offrendo un feedback visivo immediato.

Applicazioni reali

  • Visualizzazione di reti dinamiche: rappresentazione di sistemi complessi in cui i legami cambiano nel tempo (sensori, dispositivi IoT, reti sociali).
  • Design generativo e arte digitale interattiva: creazione di ambienti visivi immersivi per installazioni, siti web e applicazioni creative.
  • Simulazione di sistemi multi-agente: studio del comportamento emergente in sciami di droni, robot o entità autonome che interagiscono per prossimità.
  • Interfacce utente e background interattivi: utilizzo di particle system come elemento grafico reattivo in applicazioni web, mobile e totem interattivi.
PID Controller Simulator

Cliccare su "Start Simulation" per avviare la simulazione del controllore PID.

Regolare gli slider Proportional Control (Kp), Integral Control (Ki) e Derivative Control (Kd) per osservare la risposta del sistema in tempo reale.

Modificare il valore SP (Set Point) con le frecce su/giù per cambiare il punto di riferimento del segnale.

Utilizzare lo slider Sim Speed per regolare la velocità della simulazione tra Fast e Slow.

Attivare Split View per visualizzare contemporaneamente il Set Point e l'Output sul grafico.

Definizione del problema

  • Il PID Controller Simulator rappresenta in modo interattivo il funzionamento di un controllore PID (Proporzionale-Integrale-Derivativo), uno degli algoritmi di controllo più utilizzati in ambito industriale.
  • L'obiettivo è mantenere una variabile di processo (temperatura, velocità, pressione) il più vicino possibile al valore di riferimento (setpoint), minimizzando l'errore nel tempo.

Regole del sistema

  • L'utente può regolare i tre parametri fondamentali: Kp (guadagno proporzionale), Ki (guadagno integrale) e Kd (guadagno derivativo).
  • La simulazione mostra in tempo reale l'andamento del segnale di controllo e la risposta del sistema agli stimoli.
  • È possibile introdurre disturbi per testare la robustezza del controllore.
  • Il sistema evidenzia l'effetto di ciascun parametro su tempo di assestamento, overshoot e errore stazionario.

Implementazione dell'algoritmo

  • Il controllore calcola l'errore e(t) come differenza tra setpoint e variabile di processo.
  • L'azione proporzionale risponde all'errore istantaneo, l'azione integrale elimina l'errore stazionario accumulato nel tempo, mentre l'azione derivativa contrasta le variazioni rapide anticipando le correzioni.
  • La simulazione utilizza un modello dinamico del processo per visualizzare la risposta in modo realistico e immediato.

Applicazioni reali

  • Controllo di temperatura: forni industriali, impianti di climatizzazione e refrigerazione.
  • Regolazione di velocità: motori elettrici, nastri trasportatori e robotica.
  • Controllo di pressione e livello: impianti chimici, petrolchimici e trattamento acque.
  • Automazione industriale: taratura automatica di macchine e linee di produzione per garantire qualità e ripetibilità.
Reorder Point (ROP)

Configurare i parametri di gestione scorte: Avg Demand (domanda media), Lead Time (tempo di consegna), Safety Stock (scorta di sicurezza), Order Qty (quantità d'ordine), Variability (variabilità) e Init Stock (stock iniziale).

Regolare lo slider Speed per modificare la velocità della simulazione.

Utilizzare i bottoni Start per avviare, Stop per interrompere, Reset per ripristinare e Random per generare parametri casuali.

La legenda mostra: ROP (punto di riordino), SS (safety stock), Stock (giacenza), Ord (ordine in corso), Arr (arrivo merce) e Out (uscita).

In basso vengono visualizzati in tempo reale: Day (giorno), Stock (giacenza attuale), ROP (valore di riordino) e Pending (stato ordine).

Definizione del problema

  • Il Reorder Point (ROP) è una tecnica fondamentale di gestione delle scorte che determina il livello di inventario al quale effettuare un nuovo ordine, minimizzando il rischio di rottura di stock e i costi di magazzino.
  • L'obiettivo è bilanciare la domanda del cliente con i tempi di rifornimento, tenendo conto della variabilità e delle incertezze della supply chain.

Regole del sistema

  • L'utente può configurare i parametri chiave: domanda media, tempo di approvvigionamento e livello di sicurezza desiderato.
  • La simulazione calcola automaticamente il punto di riordino e la quantità economica di ordine (EOQ).
  • Vengono visualizzati l'andamento delle scorte nel tempo, i cicli di approvvigionamento e le eventuali situazioni di stock-out.
  • È possibile confrontare scenari con diversi livelli di incertezza della domanda.

Implementazione dell'algoritmo

  • Il punto di riordino viene calcolato come ROP = (Domanda media × Lead time) + Scorta di sicurezza, dove la scorta di sicurezza dipende dalla variabilità della domanda e dal livello di servizio target.
  • La simulazione integra modelli probabilistici per rappresentare la variabilità della domanda e dei tempi di consegna.
  • I risultati sono aggiornati in tempo reale per ogni modifica dei parametri, permettendo un'analisi immediata dei trade-off tra costi e servizio.

Applicazioni reali

  • Gestione magazzino: ottimizzazione delle scorte di materie prime, semilavorati e prodotti finiti.
  • Supply chain e logistica: pianificazione degli approvvigionamenti e riduzione dei tempi di fermo produzione.
  • Retail e distribuzione: calcolo automatico dei punti di riordino per punti vendita e centri distribuzione.
  • Manutenzione predittiva: gestione delle scorte di ricambi e materiali di consumo in base alla programmazione degli interventi.
Production Planning

Configurare i parametri di pianificazione tramite gli slider: Jobs (numero di lavori), Machines (numero di macchine), Parallel (grado di parallelismo) e Cycles (cicli di produzione).

Cliccare su "Generate" per creare automaticamente il piano di produzione in base ai parametri impostati.

Selezionare la strategia di scheduling tramite il pulsante FIFO (o altre policy disponibili) per cambiare la regola di priorità dei lavori.

Cliccare su "Play" per avviare l'esecuzione della simulazione e su "Reset" per ripristinare lo stato iniziale.

Regolare lo slider Speed per modificare la velocità di esecuzione della simulazione.

In tempo reale vengono visualizzate le metriche: Makespan (tempo totale di completamento), Idle (tempo di inattività) e Avg (tempo medio di completamento), insieme al valore Time corrente.

Definizione del problema

  • Il Production Planning affronta il problema di allocare risorse produttive limitate (macchine, operatori, materiali) per soddisfare una domanda definita, minimizzando tempi e costi.
  • L'obiettivo è determinare la sequenza ottimale degli ordini e il carico di lavoro di ciascuna risorsa, rispettando vincoli di capacità e scadenze.

Regole del sistema

  • L'utente può inserire ordini con quantità e priorità, definire le macchine disponibili e i relativi tempi ciclo.
  • Il sistema verifica i vincoli di capacità e genera un piano di produzione fattibile e ottimizzato.
  • La simulazione evidenzia eventuali colli di bottiglia, tempi di attesa e utilizzo delle risorse.
  • È possibile confrontare diversi scenari di pianificazione per valutare l'impatto di nuovi ordini o modifiche alla capacità produttiva.

Implementazione dell'algoritmo

  • Il problema viene modellato come un problema di scheduling con vincoli di risorse, risolto attraverso euristiche e algoritmi di ottimizzazione combinatoria.
  • Vengono impiegate tecniche di ricerca locale e algoritmi greedy per costruire una soluzione iniziale, affinata poi attraverso scambi e riottimizzazioni.
  • La visualizzazione interattiva permette di monitorare il piano in formato diagramma di Gantt e di analizzare gli indicatori di performance (makespan, utilizzo, ritardi).

Applicazioni reali

  • Pianificazione della produzione industriale: gestione degli ordini in fabbrica e ottimizzazione del carico macchine.
  • Industria 4.0: integrazione con sistemi MES e ERP per la pianificazione in tempo reale.
  • Stampaggio, lavorazione e assemblaggio: sequenziamento di lotti e ottimizzazione dei cambi formato.
  • Logistica interna: coordinamento tra produzione e movimentazione materiali per ridurre i tempi di throughput.
A* Implementation

Cliccare sulla griglia per posizionare il punto di Start (verde) e di End (rosso).

Cliccare e trascinare per disegnare muri e ostacoli sulla griglia.

Utilizzare il bottone "Find" per avviare la ricerca del percorso ottimale.

Utilizzare il bottone "Clear" per ripulire la griglia.

Utilizzare il bottone "Random" per generare muri casuali e posizionare automaticamente i due punti.

Definizione del problema

  • La simulazione A* Implementation visualizza l'algoritmo A* (A Star) applicato a una griglia bidimensionale, dove l'obiettivo è trovare il percorso più breve tra un punto di partenza e uno di arrivo, evitando ostacoli e muri.
  • L'algoritmo A* combina il costo effettivo del percorso percorso (distanza da start) con una stima euristica della distanza rimanente fino alla destinazione, garantendo efficienza e ottimalità.

Regole del sistema

  • L'utente può cliccare sulla griglia per posizionare il punto di Start (verde) e il punto di End (rosso).
  • L'utente può disegnare muri e ostacoli direttamente sulla griglia cliccando e trascinando.
  • Il pulsante "Find" avvia la ricerca del percorso ottimale tra i due punti, evidenziando i nodi esplorati e il percorso finale.
  • Il pulsante "Clear" cancella tutti i muri, i punti e i percorsi, ripristinando la griglia vuota.
  • Il pulsante "Random" genera una configurazione casuale di muri e posiziona automaticamente i punti di start e end in posizioni valide.

Implementazione dell'algoritmo

  • La griglia viene rappresentata come un grafo implicito, dove ogni cella è un nodo e le celle adiacenti (in 8 direzioni) sono collegate da archi con pesi diversi per movimenti ortogonali e diagonali.
  • L'algoritmo A* utilizza una funzione di valutazione f(n) = g(n) + h(n), dove g(n) è il costo reale dal nodo iniziale e h(n) è l'euristica che stima il costo rimanente fino al goal.
  • L'euristica impiegata è una variante della distanza di Manhattan ottimizzata che penalizza leggermente i movimenti diagonali per garantire percorsi naturali e ottimali.
  • La simulazione è completamente interattiva: ogni modifica agli ostacoli o ai punti di start/end consente di rilanciare immediatamente la ricerca.

Applicazioni reali

  • Navigazione GPS e mobilità urbana: calcolo del percorso stradale più breve o più veloce in tempo reale, considerando traffico e ostacoli.
  • Videogiochi e simulazioni: pathfinding per personaggi, veicoli autonomi e unità che devono muoversi evitando ostacoli dinamici in modo efficiente.
  • Robotica e droni: pianificazione del movimento di robot o droni in ambienti con ostacoli, garantendo percorsi sicuri ed efficienti.
  • Logistica e trasporti: pianificazione di itinerari per flotte di consegna ottimizzando carburante e tempi di percorrenza in ambienti complessi.
  • Reti di telecomunicazioni: determinazione del percorso ottimale per l'instradamento dei pacchetti dati in reti complesse con vincoli dinamici.
  • Sistemi di evacuazione e sicurezza: simulazione di percorsi di fuga ottimali in ambienti affollati in presenza di ostacoli imprevisti.
Dijkstra Paths

Cliccare e trascinare per disegnare muri e ostacoli sulla griglia.

Il sistema calcola automaticamente i percorsi dalla sinistra verso destra e dall'alto verso il basso.

Utilizzare il bottone "Random" per generare muri casuali.

Utilizzare il bottone "Restart" per ricominciare da capo.

Regolare lo slider "Speed" per modificare la velocità della simulazione.

Definizione del problema

  • La simulazione Dijkstra Paths visualizza l'algoritmo di Dijkstra applicato a una griglia bidimensionale, dove migliaia di agenti devono trovare il percorso minimo attraverso un campo di ostacoli.
  • Gli agenti si muovono automaticamente dai bordi sinistro e superiore verso i lati destro e inferiore, calcolando in tempo reale le rotte ottimali per evitare i muri.

Regole del sistema

  • L'utente può disegnare muri e ostacoli direttamente sulla griglia cliccando e trascinando.
  • Gli agenti vengono generati continuamente dal lato sinistro e dal bordo superiore, dirigendosi rispettivamente verso destra e verso il basso.
  • Il pulsante "Random" genera una configurazione casuale di ostacoli per testare il comportamento dell'algoritmo in scenari diversi.
  • Il pulsante "Restart" cancella tutto e ripristina la griglia vuota, permettendo di ricominciare da capo.
  • Lo slider "Speed" consente di regolare la velocità di calcolo e animazione della simulazione.

Implementazione dell'algoritmo

  • La griglia viene rappresentata come un grafo implicito, dove ogni cella è un nodo e le celle adiacenti sono collegate da archi.
  • L'algoritmo di Dijkstra viene eseguito in tempo reale per ogni sorgente (bordi sinistro e superiore), calcolando le distanze minime verso tutte le celle raggiungibili.
  • I percorsi ottimali vengono visualizzati tramite il movimento di migliaia di particelle che seguono il gradiente di distanza verso le destinazioni.
  • La simulazione è completamente interattiva: ogni modifica agli ostacoli scatena il ricalcolo immediato dei percorsi.

Applicazioni reali

  • Navigazione GPS e mobilità urbana: calcolo del percorso stradale più breve o più veloce in tempo reale, considerando traffico e ostacoli.
  • Logistica e trasporti: pianificazione di itinerari per flotte di consegna ottimizzando carburante e tempi di percorrenza.
  • Videogiochi e simulazioni: pathfinding per personaggi, veicoli autonomi e unità che devono muoversi evitando ostacoli dinamici.
  • Robotica e droni: pianificazione del movimento di robot o droni in ambienti con ostacoli, garantendo percorsi sicuri ed efficienti.
  • Reti di telecomunicazioni: determinazione del percorso ottimale per l'instradamento dei pacchetti dati in reti complesse.
  • Sistemi di evacuazione e sicurezza: simulazione di percorsi di fuga ottimali in ambienti affollati in presenza di ostacoli imprevisti.
Algoritmi di ordinamento

Selezionare un algoritmo per visualizzarne il funzionamento.

Utilizzare i controlli per regolare velocità e dimensione dell'array.

Definizione del problema

  • Gli algoritmi di ordinamento sono fondamentali in informatica per organizzare dati in una sequenza specifica, crescente o decrescente. La visualizzazione interattiva permette di comprendere il funzionamento interno di ciascun algoritmo, evidenziando confronti, scambi e ricorsioni.
  • L'obiettivo è fornire uno strumento didattico e intuitivo per confrontare le prestazioni e il comportamento di diversi metodi di sorting su array di varie dimensioni.

Regole del sistema

  • L'array di elementi viene rappresentato visivamente tramite barre di altezza variabile.
  • Ogni algoritmo esegue passo dopo passo, evidenziando gli elementi confrontati e quelli scambiati.
  • È possibile regolare la velocità di esecuzione e il numero di elementi da ordinare.
  • Al termine dell'ordinamento, il sistema mostra il tempo impiegato e il numero di operazioni effettuate.

Implementazione dell'algoritmo

  • Sono implementati diversi algoritmi classici: Bubble Sort, Quick Sort, Merge Sort, Heap Sort, Insertion Sort e Selection Sort.
  • Ogni algoritmo è eseguito in modo asincrono per garantire una visualizzazione fluida e interattiva senza bloccare il browser.
  • Il rendering è ottimizzato tramite Canvas per gestire in tempo reale l'animazione di migliaia di elementi.

Applicazioni reali

  • Ottimizzazione delle ricerche: dati ordinati permettono l'uso di algoritmi di ricerca binaria estremamente veloci.
  • Database e sistemi informativi: ordinamento di record per chiavi primarie, date o priorità.
  • Elaborazione dati e analisi: preparazione di dataset per algoritmi di machine learning o visualizzazione statistica.
  • Sistemi embedded e IoT: ordinamento di stream di sensori per rilevare pattern o anomalie in tempo reale.
  • Didattica e formazione: strumento di supporto per corsi di informatica e algoritmica.
Voronoi Tessellation

Cliccare nello sfondo per aggiungere un nuovo Bot.

Utilizzare il bottone "Riavvia" per ricominciare la simulazione.

Utilizzare il bottone "Pausa/Riprendi" per interrompere l'avanzamento.

Definizione del problema

  • Il diagramma di Voronoi, chiamato anche tassellatura di Dirichlet suddivide lo spazio in regioni basate sulla distanza da un insieme di punti generatori. Ogni cella rappresenta l'area più vicina a un punto rispetto a tutti gli altri.
  • L'obiettivo è mostrare come ogni bot possa gestire il proprio spazio di competenza, evidenziando i confini naturali tra le aree d'influenza e permettendo di visualizzare in modo chiaro la distribuzione e l'autonomia di ciascun agente all'interno del sistema.

Regole del sistema

  • Ogni punto generatore definisce una cella di Voronoi, ovvero la regione di spazio contenente tutti i punti più vicini a esso che a qualsiasi altro generatore.
  • Le frontiere tra celle corrispondono al luogo dei punti equidistanti da due o più generatori.
  • Il sistema reagisce dinamicamente all'aggiunta, rimozione o spostamento dei punti, aggiornando in tempo reale la suddivisione dello spazio.
  • L'interpolazione continua consente di ottenere transizioni fluide e un comportamento coerente anche in presenza di variazioni dinamiche.

Implementazione dell'algoritmo

  • La costruzione del diagramma utilizza algoritmi ottimizzati come Fortune's Algorithm, con complessità O(n log n).
  • Il sistema calcola i bordi e i vertici delle celle, gestendo casi limite e bordi di confinamento in modo stabile.
  • L'aggiornamento è eseguito in tempo reale mediante triangolazioni di Delaunay e strutture di dati spaziali per il calcolo efficiente delle distanze.

Applicazioni reali

  • Analisi spaziale e territoriale: suddivisione di aree in base a punti di interesse (ospedali, scuole, sensori, ecc.) per visualizzare zone di influenza o copertura.
  • Elaborazione immagini e computer vision: segmentazione di immagini o pattern riconoscitivi basati sulla prossimità dei pixel.
  • Simulazioni scientifiche: modellazione di fenomeni naturali come cristallizzazione, crescita cellulare o distribuzione di risorse in ecosistemi.
  • Design e arte generativa: creazione di texture e pattern visivi basati su strutture geometriche naturali.
  • Interfacce interattive: visualizzazioni dinamiche di dati spaziali, mappe di calore o sistemi di clustering adattivi.
fuzzy-logic-controller

Definizione del problema

  • Il Controllore basato su Logica Fuzzy gestisce in modo intelligente e adattivo la durata di quattro semafori che regolano due strade incrociate. Il sistema elabora in tempo reale il numero di automobili presenti su ciascuna strada, regolando dinamicamente i tempi di verde, giallo e rosso.
  • L'obiettivo è ottimizzare il flusso del traffico, ridurre i tempi di attesa e minimizzare la congestione, mantenendo un comportamento fluido e naturale anche in presenza di variazioni improvvise del numero di veicoli.

Regole del sistema

  • Ogni ciclo semaforico è determinato da regole fuzzy basate su input come densità del traffico, tempo trascorso e lunghezza della coda.
  • Le variabili linguistiche utilizzate (ad esempio basso, medio, alto) permettono una gestione continua e non binaria delle condizioni stradali.
  • Il controller valuta costantemente le due direzioni principali, adattando la durata del verde in base alla differenza di carico tra le strade.
  • Quando entrambe le strade risultano congestionate, il sistema applica regole di compensazione per garantire equità e fluidità complessiva.
  • La transizione tra stati è graduale e priva di oscillazioni brusche, simulando una logica di comportamento "umana" nella regolazione del traffico.

Implementazione dell'algoritmo

  • Il controller fuzzy riceve in input i dati dei sensori (ad esempio, il numero di veicoli rilevati in coda) e li converte in valori fuzzy tramite funzioni di appartenenza.
  • Le regole del sistema, definite nel formato IF-THEN, producono in output il tempo di verde ottimale per ciascun semaforo.
  • Il processo di defuzzificazione traduce il risultato fuzzy in un valore numerico concreto, che aggiorna la durata del ciclo in tempo reale.
  • Il sistema è in grado di apprendere e migliorare nel tempo, adattando i parametri in base ai pattern di traffico osservati.

Applicazioni reali

  • Applicazioni industriali: logiche fuzzy simili possono essere impiegate per regolare flussi in catene di produzione o sistemi di smistamento automatizzato.
  • Smart City e mobilità urbana: gestione adattiva dei semafori in incroci ad alto traffico per ridurre congestione, emissioni e tempi di percorrenza.
  • Sistemi di simulazione del traffico: modellazione realistica del comportamento dei semafori in scenari complessi o emergenziali.
  • Didattica e ricerca: studio del controllo fuzzy applicato a sistemi dinamici non lineari e multi-agente.
  • Controllo di processi industriali complessi: nei sistemi con molte variabili e rumore di misura (come forni, miscelatori o impianti chimici), la logica fuzzy fornisce una risposta stabile e coerente anche quando i parametri non sono perfettamente noti o lineari.
  • Gestione dei flussi logistici interni: utilizzo del controller fuzzy per coordinare semafori e segnali luminosi nelle aree di transito di veicoli industriali (carrelli elevatori, AGV, muletti), adattando i tempi di accesso in base al traffico interno e alle priorità operative, migliorando sicurezza e produttività.
  • Ottimizzazione dei cicli produttivi: impiego del sistema per regolare automaticamente i tempi di lavoro o di attesa tra diverse stazioni di una linea di assemblaggio, bilanciando il carico in base alla disponibilità delle macchine e alla quantità di pezzi in lavorazione.
Motore di particelle

Definizione del problema

  • Il motore di particelle gestisce fino a 3000 elementi microscopici soggetti a gravità, collisioni e interazioni dinamiche. Queste particelle cadono su una scritta, rivelandone progressivamente il profilo.
    L'obiettivo è creare un effetto visivo realistico e coinvolgente che combini estetica e simulazione fisica.

Regole del sistema

  • Ogni particella è soggetta a una forza gravitazionale costante che la spinge verso il basso.
  • Le particelle interagiscono tra loro attraverso collisioni elastiche, evitando sovrapposizioni e distribuendosi naturalmente sulla superficie.
  • La scritta funge da ostacolo solido: le particelle si fermano, scivolano o rimbalzano seguendo la sua forma.
  • La dissipazione dell'energia e l'attrito simulato permettono alle particelle di stabilizzarsi progressivamente, formando un "effetto cascata" .

Implementazione dell'algoritmo

  • La simulazione aggiorna in tempo reale posizione, velocità e accelerazione di ciascuna delle migliaia di particelle.
  • Per il rilevamento delle collisioni si utilizza una griglia spaziale, garantendo performance fluide anche al massimo carico.

Applicazioni reali

  • Visualizzazione dati finanziari: particelle che rappresentano transazioni, animate in base a volume o valore, per offrire una panoramica dinamica del mercato.
  • Monitoraggio reti IoT: particelle che indicano lo stato dei nodi, cambiando colore o intensità in base a parametri come temperatura, segnale o attività, facilitando l'individuazione di anomalie.
  • Simulazioni scientifiche o ingegneristiche: utilizzo del motore di particelle per visualizzare flussi complessi come il movimento di fluidi o la propagazione di onde.
  • Giochi e simulazioni: per ambientazioni con pioggia di particelle e fluidi.
  • Interfacce utente avanzate: per feedback visivi o elementi di gamification su pagine web.
ForceAtlas2

Utilizzare il bottone "Ricrea grafo" per ricominciare.

Trascinare i punti per cambiarne la disposizione

Utilizzare il bottone "Ferma auto regolazione" per interrompere la funzionalità di disposizione automaticamente.

Definizione del problema

  • ForceAtlas2 è un algoritmo di layout per grafi che trasforma automaticamente la struttura di una rete in una disposizione bidimensionale leggibile e intuitiva.
    L'obiettivo principale è mettere in evidenza comunità, nodi centrali e relazioni chiave, minimizzando sovrapposizioni e dispersione dei punti.

Regole del sistema

  • I nodi si respingono tra loro come cariche elettriche, in proporzione inversa alla distanza.
  • Gli archi si comportano da molle, applicando forze attrattive lungo le connessioni (legge di Hooke).
  • Una gravità globale impedisce ai nodi periferici di allontanarsi eccessivamente dal centro.
  • Ogni nodo può avere peso e dimensione variabili, influenzando l'intensità delle forze locali.

Implementazione dell'algoritmo

  • ForceAtlas2 simula un sistema fisico iterativo dove nodi e archi interagiscono come cariche e molle. Ad ogni passo, i nodi si spostano in base alla somma delle forze subite.
  • Per grafi di grandi dimensioni, viene usata l'ottimizzazione Barnes-Hut, che riduce i tempi di calcolo. L'algoritmo è parallelizzato e disponibile anche in JavaScript/WebAssembly per usi web interattivi.

Applicazioni reali

  • Reti sociali: per visualizzare connessioni tra utenti e scoprire comunità.
  • Investigazioni: mappare relazioni tra persone, gruppi e eventi.
  • Grafi semantici e knowledge graph: rappresentare concetti ed entità.
  • Manifattura e Industria 4.0: tracciare flussi produttivi e macchinari interconnessi.
  • Sanità e pubblica amministrazione: analizzare reti tra strutture e reparti.
  • Marketing e business: visualizzare legami tra clienti, prodotti e fornitori.
BIN PACKING

Selezionare un tipo di algoritmo da utilizzare

Utilizzare il bottone "Cicla i test" per ciclare tra i vari algoritmi disponibili

Utilizzare il bottone "Reset" per ricominciare.

Definizione del problema

  • L'obiettivo principale è quello di allocare un insieme di oggetti di diverse dimensioni all'interno di un numero minimo di contenitori (chiamati "bin") in modo efficiente.

Regole del sistema

  • La dimensione del contenitore rettangolare è fissa.
  • Gli oggetti rettangolari hanno dimensioni variabili possono essere ruotati di 90° (oggetti con *).
  • L'obiettivo è minimizzare il numero di contenitori utilizzati.

Implementazione dell'algoritmo

  • Sono stati implementati 6 tipi di algoritmi euristici per ottenere soluzioni approssimate ottimali o quasi ottimali in tempi accettabili.
  • L'algoritmo "RMax" risulta il più efficiente.

Applicazioni reali

  • Logistica e trasporti per ottimizzare il carico di camion, container o altri mezzi di trasporto.
  • Settore IT per la creazione di backup di file nei supporti.
  • Processi produttivi per organizzare le fasi di produzione in modo da massimizzare l'efficienza e ridurre gli sprechi di materiale.
  • Imballaggio e spedizioni per organizzare al meglio gli oggetti da spedire all'interno di scatole o pacchi.
  • Mappatura tecnologica nella progettazione di chip semiconduttori.
TSP DELIVERY PLANNING

Utilizzare il bottone "Riavvia" per rigenerare un nuovo percorso.

Definizione del problema

  • L'obiettivo principale è quello di ridurre il costo totale del percorso e il tempo impiegato per visitare tutte le città, garantendo che ogni città venga visitata solo una volta.

Regole del sistema

  • Le città vengono caricate dalla lista delle città italiane (circa 16k).
  • Viene estratto un campione di 100 città.
  • Ogni tratta viene espressa con un peso che rappresenta la distanza geografica tra i 2 punti.

Implementazione dell'algoritmo

  • E' stato implementato un algoritmo euristico per garantire una buona efficienza su una grande mole di dati.
  • Viene iterato 5 volte il ciclo di ottimizzazione per identificare la soluzione migliore.

Applicazioni reali

  • Copertura geografica delle flotte per assistenze e cantieri.
  • Pianificazione degli itinerari per le consegne.
  • Progettazione di circuiti elettronici.
  • Programmazione della produzione e nella logistica.
  • Identificazione del percorso per la programmazione di un robot.
  • Tutti i problemi di ottimizzazione nella teoria dei grafi.
NEURAL NETWORK BLACK JACK

Utilizzare la manopola per modificare il numero di neuroni del livello nascosto.

Utilizzare il bottone "Avanti turno" per eseguire una singola partita.

Definizione del problema

  • Ottenere la migliore percentuale di vittoria e migliorarla nel tempo.

Regole del sistema

  • Il giocatore gioca con una carta casuale, se il giocatore ha più di 21 punti, il giocatore perde.
  • Il Banco - Sta sul soft 17 - Nessun apprendimento implementato.
  • Giocatore - apprende automaticamente in base alla rete neurale.

Implementazione dell'intelligenza artificiale

  • Il giocatore è controllato da una Feedforward neural network.
  • In caso di valore >0,5 [richiede carta], diversamente [si ferma].
  • il numero di neuroni di ingresso è 38 - Punteggio del giocatore (da 2 a 20) e il punteggio del banco (da 2 a 20).
  • Il numero di neuroni nascosti è 6(5 + 1 parziale).
  • L'uscita della rete neurale determina se fermarsi o richiedere la carta.

Applicazioni reali

  • Approvvigionamento di magazzino, sottoscorta e rottura di stock. Individuazione e previsione degli articoli che più facilmente vanno in esaurimento.
  • Riconoscimento e correlazione delle immagini.
GENETIC MINIONS

Utilizzare il campo di modifica testo per sostituire la stringa obiettivo.

Utilizzare il bottone "Epidemia" per limitare il numero dei minions.

Definizione del problema

  • Ottenere il "miglior" esemplare della specie con risorse limitate.
  • E' necessario utilizzare una funzione di verifica dell' "Obiettivo".
  • In questo caso l'obiettivo è quello di ottenere la stringa specificata: "Cocce"

Regole del sistema

  • Gli individui della popolazione si evolvono autonomamente.
  • Il risorsa primaria "Cibo" è limitata.
  • Rimangono in vita gli esemplari che possono usufruire della risorsa primaria.
  • Esiste una durata massima della vita dell'individuo.

Implementazione dell'intelligenza artificiale

  • Il sistema implementa un algoritmo genetico.
  • Gli esemplari al contatto con altri si riproducono fondendo e combinando il loro DNA.
  • Gli individui si muovono casualmente all'interno dell'area definita.
  • Gli individui più forti rimangono in vita.
  • Per garantire l'evoluzione viene effettuata una mutazione casuale.

Applicazioni reali

  • Analisi e mappatura di ampie aree geografiche.
  • Ottimizzazione spaziale di percorsi.
  • In tutti i problemi in cui è possibile quantificare il valore di una soluzione; un algoritmo genetico infatti può eseguire una ricerca diretta all'interno dello spazio della soluzione.
2D CAR STEERING SYSTEM

Definizione del problema

  • Ottenere un sistema di guida autonoma mediante l'apprendimento automatico dell'intelligenza del sistema di guida.

Regole del sistema

  • Il percorso è fisso e viene prestabilito.
  • L'auto deve percorrere il percorso senza toccare pareti o altri ostacoli.

Implementazione dell'intelligenza artificiale

  • Le auto sono guidate da una Feedforward neural network.
  • I pesi della rete vengono addestrati utilizzando un algoritmo genetico.
  • Un'auto ha cinque sensori frontali che misurano la distanza dagli ostacoli in una determinata direzione.
  • Le letture di questi sensori servono come input della rete neurale dell'auto.
  • L'uscita della rete neurale determina la forza del motore e di svolta.

Applicazioni reali

  • Sistemi di guida autonoma.
  • Mappatura e selezione del miglior percorso.
  • Robot taglia erba e pulizie.
  • Taratura automatica sensori.