Organizzare al meglio le risorse disponibili vuol dire per l’azienda risparmiare una considerevole quantità di danaro.  Che si tratti di una flotta di automezzi, apparecchiature di un processo produttivo o l’effort del personale dipendente, ottimizzare i processi significa ridurre i costi in modo significativo e fa la differenza fra essere e non essere competitivi sul mercato.

OptaPlanner è una soluzione Open Source, sponsorizzata da RedHat, che punta proprio a questo scopo: analizzare i processi e ottimizzare l’uso delle risorse. Con l’obiettivo di ottenere maggiore efficienza, minori costi e, in ultima analisi, maggiore competitività per l’azienda.

“Forget about Machine Learning. Planning optimization is the most profitable AI technology on this planet. The world is full of planning challenges, such as vehicle routing problems, maintenance scheduling and employee rostering. Find the quickest routes to visit n locations with k vehicles. Assign n shifts to k employees, taking into account skills and availability. Few people realize how much AI algorithms improve those solutions. For example, when a big telco started using OptaPlanner to plan their fleet of tens of thousands of technicians, they expected a driving time reduction of 1-2%. It was 25%. That saves them hundreds of millions of dollars and millions of kilograms of CO² emissions, every year.”

Questo è quanto ha riportato il fondatore di OptaPlanner e Team Leader Geoffrey De Smet nel talk “AI on Spring: I love it when an OptaPlan comes together”, alla conferenza Spring I/O Bridge lo scorso 15 maggio. Un buon motivo per conoscere di cosa si tratti.

OptaPlanner e Red Hat: Un po’ di storia

OptaPlanner  è stato ideato nel 2006 da Geoffrey De Smet, che tuttora guida con grande impegno il progetto.

Attualmente è sviluppato da un team dedicato di RedHat, che fornisce anche il supporto commerciale, e, trattandosi di un progetto open source, anche da contributi esterni.

Di cosa si tratta nella pratica? OptaPlanner è un software Open Source , i sorgenti sono completamente disponibili su GitHub e rilasciati sotto licenza Apache.

E’ stato scritto completamente in Java™, gira su qualsiasi JVM ed è disponibile su repository Maven Central. Inoltre si può integrare con  Quarkus e Spring Boot.

Cos’è OptaPlanner

Cercherò di spiegare in breve cos’è e come funziona OptaPlanner, con l’obiettivo di far capire anche ai non esperti di matematica quali siano le basi teoriche su cui si fonda. Vedremo poi come può essere utilizzato in modo efficace su problemi reali.

Partiamo dalla definizione:

“OptaPlanner è un Software di Intelligenza Artificiale per l’Ottimizzazione che risolve problemi in cui devono essere soddisfatti dei Vincoli mediante l’utilizzo di Algoritmi Metaeuristici”

Proviamo ad analizzare in sequenza i concetti introdotti nella definizione precedente:

In questo caso per Software di Ottimizzazione” si intende quella branca della matematica applicata che studia gli algoritmi per la ricerca dei punti di massimo e minimo di una funzione matematica.

Se consideriamo una semplice funzione come quella della figura seguente, lo scopo di questi algoritmi è di trovare velocemente i punti indicati dalle frecce con le scritte in rosso.

Nel caso di funzioni complesse, non è facile di solito trovare la soluzione globale in un tempo ragionevole; in molti casi, tuttavia, ci possiamo accontentare di trovare i massimi o minimi locali purché in un tempo accettabile (punti indicati dalle frecce con le scritte in celeste).

Gli algoritmi utilizzati da OptaPlanner sono classificati come “Algoritmi Metaeuristici”.

Questi tipi di algoritmi utilizzano delle tecniche che analizzano solo una minima parte delle possibili soluzioni, riuscendo però a trovare dei punti di massimo o minimo locali velocemente.

Alcuni di questi algoritmi utilizzati da OptaPlanner sono il Simulated Annealing,  Tabu Search e Late Acceptance.

Ma come fa OptaPlanner a risolvere un problema reale mediante “Algoritmi Metaeuristici”?

In generale OptaPlanner Risolve problemi in cui devono essere soddisfatti dei Vincoli” ed il trucco sta nel trovare una funzione in cui nei punti di massimo o minimo i vincoli siano soddisfatti.

Infine, se consideriamo come buona la definizione di Intelligenza Artificiale seguente:

“La capacità di risolvere problemi complessi in modo molto efficiente senza che ci sia bisogno di essere intelligenti”

allora OptaPlanner è a tutti gli effetti un software di Intelligenza Artificiale.

Infatti, riesce a trovare buone soluzioni a problemi molto complessi, come ad esempio Vehicle Routing ProblemEmployee Rostering e molti altri, il tutto in modo molto efficiente.

“OptaPlanner ha la capacità di risolvere problemi complessi in modo molto efficiente senza che ci sia bisogno di essere intelligenti”

Utilizzo in casi reali

OptaPlanner si applica a molti problemi reali di ottimizzazione, pianificazione e schedulazione. Di seguito viene riportata una lista dei più significativi:

Vehicle Routing Problem: il Vehicle Routing Problem (VRP) ottimizza le gite di consegna di camion e mezzi pubblici (autobus, taxi e aeroplani), migliorando l’ordine delle visite. Questa ottimizzazione del percorso riduce notevolmente i tempi di guida e il consumo di carburante rispetto alla pianificazione manuale.

Employee Rostering: l’ottimizzazione dei turni per infermieri, help desk, guardie e vigili del fuoco, permette di organizzare le turnazioni in base alle competenze ed ai contratti di lavoro, tenendo conto anche delle esigenze personali dei dipendenti.

Maintenance Scheduling: le macchine e altri tipi di attrezzature (come ascensori, scale mobili, aerei, treni, ecc….) tendono a deteriorarsi nel tempo, richiedendo una manutenzione regolare. A seconda della frequenza con cui ogni macchina richiede assistenza, la pianificazione della manutenzione decide quando e quale tecnico qualificato debba visitare ciascuna macchina. Ottimizzare questo problema di pianificazione consente di risparmiare sui costi, riducendo la manutenzione sia in anticipo che in ritardo e aderendo inoltre ad altri vincoli quali requisiti di competenza, disponibilità dei dipendenti e posizione geografica delle macchine.

Task Assignment: abbinamento ottimale di attività in base in base alle competenze.

School Timetabling: le università e le scuole mirano a fornire programmi di lezioni di alta qualità ai loro insegnanti e studenti. A seconda della capacità e della disponibilità delle aule, l’orario scolastico decide quando e dove si svolge una lezione. L’ottimizzazione migliora la soddisfazione degli insegnanti e degli studenti, riducendo le ore di viaggio e di percorrenza e allo stesso tempo aderendo ad altri vincoli come disponibilità dell’insegnante, disponibilità delle aule e loro capacità.

Job Shop Scheduling: pianificare le linee di produzione per farmaci, auto, libri, mobili, ecc.….

Bin Packing: ottimizzare il riempimento di container, camion, navi e magazzini di stoccaggio, ma anche nodi di computer cloud e molto altro.

Conclusioni

La maggior parte delle aziende si trova ad affrontare quotidianamente problemi simili, in cui devono assegnare una serie limitata di risorse (dipendenti, automezzi, tempo e / o denaro) al fine di realizzare prodotti o servizi.

OptaPlanner riesce a trovare soluzioni efficienti, che riducono i costi e migliorano la qualità del servizio. Questo è anche un buon motivo per cui ogni azienda dovrebbe analizzare i propri processi aziendali e valutare da subito l’utilizzo di OptaPlanner.

Leave a Reply

Your email address will not be published. Required fields are marked *