Quando il software gestionale ha la testa piena e… la memoria corta – PRIMA PARTE
Abbiamo già parlato di intelligenza artificiale e di una delle sue branche più interessanti, quella dell’apprendimento automatico. Ritorniamo ora sull’argomento con l’intento di far comprendere maggiormente al lettore come l’Intelligenza Artificiale possa essere impiegata efficacemente per risolvere in modo innovativo alcuni problemi gestionali comuni, ma non banali, che vengono affrontati da anni con un approccio classico.
Un buon software gestionale costituisce ormai patrimonio fondamentale di ogni azienda che voglia rimanere sul mercato. Si dice spesso che il vero patrimonio dell’azienda, dopo il proprio capitale umano, siano i contenuti del suo sistema informativo. Spesso le informazioni archiviate sono frutto di anni e anni di attività dell’azienda, e rappresentano documenti di rilevanza anche fiscale, conservati per precisi obblighi normativi. Altri dati, invece, sono funzionali ed essenziali ai processi produttivi e in continua evoluzione. Quando il volume dei dati risulta eccessivo, ci si pone il problema di come storicizzare parte dell’archivio per snellire l’accumulo di dati nel tempo.
Ci chiediamo tuttavia se un software gestionale con il passare del tempo possa migliorare l’esperienza di utilizzo oppure continui a offrire le proprie funzionalità come se fosse la prima volta che viene usato. Se riflettiamo su questo interrogativo, ci rendiamo conto che il software gestionale comunemente non evolve con il suo utilizzo, perdendo la possibilità di semplificare la vita all’utente e massimizzare la soddisfazione nel suo uso.
Proprio per superare questo limite l’applicazione dell’intelligenza artificiale e delle tecniche di apprendimento automatico possono fare la differenza: l’era in cui le tecniche di Intelligenza Artificiale si diffondono “viralmente” all’interno del software di uso quotidiano è ormai iniziata e senza dubbio può essere utilizzata nel lavoro di tutti i giorni dei nostri utenti.
VISION & METHODOLOGY
Problemi gestionali e nuove soluzioni intelligenti
Pensando alle esigenze di un’azienda emergono due scenari di applicazione ai quali si possono ricondurre diversi problemi comuni.
Il primo è quello della compilazione di form di dati, ad esempio nel caso in cui si voglia generare un preventivo per un cliente; in questo contesto l’Intelligenza Artificiale potrebbe rendere il sistema in grado di assistere l’utente nell’inserimento proponendo automaticamente i valori da inserire e riducendo drasticamente i tempi di inserimento delle informazioni e la frustrazione originata dall’esecuzione di un compito noioso e ripetitivo.
Il secondo è quello di generazione automatica di configurazioni che si applica a problemi come la creazione di colli da spedire; caso in cui l’intelligenza potrebbe fornire una o più configurazioni ammissibili a partire dalle precedenti, in modo da sfruttare appieno l’esperienza degli utenti più esperti che velocizzerebbe e semplificherebbe le attività aumentando la produttività. Di seguito si analizzeranno nel dettaglio gli scenari e gli esempi citati in precedenza, confrontandoli con le pratiche attuali standard, ossia di un software non dotato di intelligenza, e illustrando alcune intuizioni riguardo a una sua possibile evoluzione utilizzando tecniche di apprendimento automatico. Infine, si fornirà un accenno su come si possano realizzare delle soluzioni intelligenti in grado di affrontare i problemi descritti.
Scenario 1: compilazione assistita di form di dati per la preventivazione a clienti e l’approvvigionamento da fornitori.
Le aziende che producono o vendono articoli emettono preventivi simili tra loro. I software in circolazione permettono di allestire un preventivo per clienti solo con uno sforzo non trascurabile che comprende la ricerca e l’inserimento di articoli, la specifica dei quantitativi e delle caratteristiche tecniche, la scelta del listino prezzi da applicare, l’applicazione di eventuali sconti e omaggi, la valutazione di eventuali campagne commerciali, ecc. Per aiutare l’utente oggi un sistema gestionale può solo e semplicemente fornire automaticamente i dati anagrafici del cliente e alcune altre informazioni predefinite, come la condizione di pagamento preferita, quindi la maggior parte delle informazioni deve essere inserita manualmente.
Un altro supporto fornito dagli attuali software è permettere la duplicazione di preventivi o ordini già compilati per la costruzione di uno nuovo. In questo il processo si velocizza, ma il problema si sposta dalla compilazione all’individuazione del modello più adatto da utilizzare, cosa che risulta efficace solo grazie alle competenze personali dell’addetto alla compilazione del preventivo.
È fantascienza pensare che possa essere la macchina a farlo per l’utente individuando il modello più adatto?
Analogamente al caso precedente, se si considerano le aziende che periodicamente fanno richieste di fornitura di materie prime o prodotti da rivendere o da utilizzare in produzione, ci si trova davanti alla necessità di compilare una richiesta complessa. Infatti, stendere un ordine a fornitore richiede una certa esperienza e una buona dose di pazienza. Tra le altre cose si deve selezionare il fornitore in base alle condizioni economiche che applica alla vendita dei suoi articoli, ai tempi di approvvigionamento, alla qualità della fornitura. Inoltre vanno stabiliti i quantitativi di cui approvvigionarsi al fine di bilanciare i costi di immobilizzo con la scontistica che il fornitore applica e così via. A complicare lo scenario, spesso l’attività di richiesta si inserisce in un quadro più generale di piano di produzione o degli acquisti che deve essere osservato.
Un sistema gestionale sul mercato oggi permette di corredare di valori predefiniti le anagrafiche dei fornitori e dei loro articoli da proporre automaticamente nel momento della compilazione dell’ordine di acquisto e, come nel caso precedente, la funzionalità di duplicazione della richiesta a partire da un ordine di acquisto.
Ma come sarebbe poter lavorare con un sistema in grado di imparare la relazione tra, articoli e quantità e sapesse generare automaticamente delle proposte di compilazione fornendo solo poche informazioni? Sarebbe d’aiuto?!
Scenario 2: generazione automatica di configurazioni per colli di spedizione e piani di carico dei mezzi di trasporto.
Allestire le spedizioni significa innanzitutto occuparsi del confezionamento e dell’imballaggio dei pezzi affinchè possano essere trasportati in modo sicuro, nonché facilitare le operazioni da parte dei destinatari della consegna. Per poter garantire ciò è necessario tenere in considerazione i diversi vincoli fisici e strutturali; ad esempio, non è possibile imballare ripiani di cristallo di una cucina con la rubinetteria. Contemporaneamente, per agevolare i montatori a svolgere le operazioni di disimballo e montaggio, è necessario progettare il carico attentamente disponendo i colli in un ordine preciso.
Attualmente, un sistema ERP potrebbe gestire il compito seguendo un sistema di regole predefinite e utilizzando tecniche di ricerca della configurazione ottimale molto sofisticate e potenti, note con il nome di “programmazione vincolata”. Esse tuttavia richiedono generalmente tempi di calcolo elevati senza raggiungere necessariamente la soluzione migliore. Quest’ultima dipende dall’esperienza e dall’ingegno umano che è in grado di valutare contemporaneamente centinaia di requisiti espliciti e impliciti legati alla creazione di un collo di spedizione. Proprio qui entra in gioco l’apprendimento automatico, fornendo algoritmi in grado di imparare a imitare le mosse che l’utente configuratore esperto utilizzerebbe per creare i colli.
La componente umana rimane comunque imprescindibile: gli impiegati del settore possono tirare un sospiro di sollievo!
Il processo di apprendimento, infatti, deve essere supervisionato da un “computer in carne ed ossa” in grado di correggere, migliorare e suggerire soluzioni via via più efficaci alla macchina in un processo virtuoso che massimizzi la soddisfazione di utilizzo del software e la produttività dell’utente.
Il problema del carico efficace dei mezzi di trasporto per attuare le consegne di prodotti o colli costituisce una questione più complessa rispetto al caso precedente: solo per citare alcuni aspetti, si deve tenere conto dei vincoli fisici e di sostenibilità dei carichi, bisogna considerare l’ottimizzazione dello spazio all’interno dei vettori e l’ordine di consegna.
I software ERP che allo stato attuale risolvono questo tipo di problematiche ricorrono a tecniche di programmazione vincolata con i limiti già evidenziati in precedenza. Di fronte a questo scenario risulterebbe tuttavia estremamente vantaggioso poter contare su un sistema che riconosca le necessità di carico dell’utente e proponga automaticamente un piano sulla base di esperienze pregresse. La soluzione proposta da un sistema in grado di apprendere dall’utente potrebbe essere usata come preconfigurazione del piano di carico da rifinire con l’aiuto dell’utente e/o mediante tecniche greedy di pianificazione il cui risultato garantirebbe l’ammissibilità della soluzione presentata all’utente.
Potrebbe sembrare che gli spunti forniti rimandino solo ad un esercizio di immaginazione, ma non c’è niente di più distante dalla verità. Lo testimonia la corsa da parte delle aziende che operano nell’IT per dotarsi delle più recenti tecniche di apprendimento automatico, come documentato di recente del prestigioso Financial Times nell’articolo “Investor rush to artificial intelligence is real deal” [1].
Si potrebbe inoltre pensare che ogni problema citato in precedenza necessiti dello sviluppo di algoritmi specifici per ciascun caso; anche questo è falso, infatti le tecniche di apprendimento automatico non devono essere adattate ai problemi perché è proprio nella loro natura variare a seconda degli scenari in cui sono utilizzate. Questo non vuol dire che una tecnica sia adatta a risolvere qualsiasi problema, bisogna saper scegliere la tecnica più adatta da applicare a seconda del caso specifico.
Per gli scenari descritti sono state individuate tre famiglie di approcci: la prima è quella dei Kernel Methods [2] per il confronto e la ricerca di oggetti come preventivi e ordini. La seconda è quella dei Markow Random Fields [3], in particolare dei Conditional Random Fields [4], per la proposizione di nuove configurazioni a partire dalle precedenti. Infine, la famiglia delle Feedforward Neural Networks [5] in cui sono contenute le Convolutional Neural Networks [6] ritornate in voga con il fenomeno tecnologico del momento, il Deep Learning [7], e in grado di simulare le decisioni dell’utente indipendentemente dalla complessità del compito svolto.