L A ROUTINE OPERATIVA
3.4. L’algoritmo risolutivo del capodeposito
In questo paragrafo viene analizzato l’algoritmo implementato quotidianamente dal capodeposito. Un algoritmo77 è la descrizione esplicita di un processo idoneo a risolvere un problema. Il processo è identificabile come una sequenza finita di operazioni specifiche e meccaniche che trasformano degli input in output. Dato un problema, esiste in genere più di un algoritmo che conduce alla sua soluzione.
Affinché la descrizione sia identificabile come algoritmo deve rispettare le seguenti proprietà:
- il processo, chiamato anche sequenza, è composto da un numero finito di operazioni; le operazioni sono identificate con le fasi dell’algoritmo.
- Sia la descrizione delle singole operazioni che la descrizione dell’intera sequenza deve essere finita.
- L’esecuzione della sequenza e quindi anche di ogni singola operazione, deve possedere un tempo finito.
- Ogni operazione deve essere descritta con precisione utilizzando un linguaggio naturale o formale. Lo scopo è quello che un lettore esterno comprenda immediatamente le intenzioni dell’autore.
Di seguito viene riportato l’algoritmo implementato quotidianamente dal capodeposito per la risoluzione del problema della consegna delle merci.
Successivamente si è deciso di utilizzare un metodo di rappresentazione figurato per schematizzare i processi logici. Il metodo di raffigurazione utilizzato per la rappresentazione dell’algoritmo del capodeposito è il diagramma di flusso (Figura 3.1). Il linguaggio grafico è spesso utilizzato per rappresentare un algoritmo, soprattutto se complesso. Attraverso la rappresentazione schematica del processo è possibile descrivere le differenti operazioni mediante un linguaggio formale di tipo grafico in cui le differenti fasi del processo e le diverse condizioni che devono essere rispettate vengono rappresentate attraverso simboli grafici detti blocchi elementari78. I blocchi sono collegati tramite frecce che indicano il flusso dei dati.
Di seguito vengono elencati gli input e gli output dell’algoritmo risolutivo della pianificazione dei viaggi.
Input:
- elenco di vincoli strutturali e logistici dei punti vendita,
- elenco di pallet per punto vendita (si considerino soli i punti vendita AXB), - flotta di veicoli disponibili.
Output:
- individuare delle rotte che rispettino i vincoli.
Dopo aver definito gli input e gli output analizziamo nel dettaglio l’algoritmo.
Nella prima fase il capodeposito deve verificare che ogni punto vendita i, appartenente all’insieme dei punti vendita I, abbia dettato. Se il punto vendita i ha dettato, allora bisogna inserire il numero di pallet ordinati nel pianificato.
Se è possibile spallettizzare, diventerà dove identifica il numero di pallet spallettizzati. Al fine di rispettare eventuali vincoli strutturali o di rotta il capodeposito deve selezionare un sottoinsieme dei veicoli che possono servire il punto vendita i. Sia K l’insieme di tutti i veicoli : Se il punto vendita non possiede alcun vincolo, allora = K e quindi il sottoinsieme comprenderà tutti i veicoli. Si identifichi con la quantità caricabile nel camion k Fino a quando non sarà assegnato alcun veicolo al punto vendita .
Per il punto vendita i si selezioni un camion dal sottoinsieme precedentemente generato. Si identifichi con la capacità del veicolo . Successivamente si
procede con la verifica e l’aggiornamento del numero di camion disponibili e diverrà . Si proceda in tal modo fino a quando
Al fine di far comprendere appieno la logica esposta si è deciso di inserire un breve esempio esplicativo:
Esempio. Il punto vendita 1 detta 30 pallet. Sia il numero di veicoli a disposizione. Supponiamo di possedere tre veicoli che trasportano al massimo 20 pallet ( . i = 1 = 30 = 20 = 3
= 0 + 20 = 20 essendo 20 < 30 sarà necessario selezionare un altro veicolo per poter consegnare tutti i pallet. I dati del problema ora saranno i seguenti:
i = 1
= 30 =20
=2
= 20 + 20 = 40 ora 40 > 30 perciò, sarà necessario introdurre un nuovo veicolo al fine di poterlo riutilizzare.
Infatti inserendo un nuovo camion con =10 sarà possibile saturare al massimo il veicolo reimpiegandolo per la consegna ad un altro punto vendita, a patto che i vincoli di rotta siano rispettati.
Se non esistono soluzioni per allora verranno considerati tutti i camion in minimizzando il ritardo o l’anticipo.
L’ultima fase consiste nel rispetto del vincolo per cui le motrici del pomeriggio devono essere ± 4 rispetto a quelle del mattino. Se questo vincolo non viene rispettato, si
proceda a sostituire una motrice con un bilico, cercando di rispettare comunque i vincoli dei punti vendita.
Di seguito verrà esposto l’algoritmo esplicato sia in forma schematica che attraverso il diagramma di flusso.
Fase 1: per ogni i da 1 a numero punti vendita
-
verifica cliente abbia dettatoFase 2: per ogni i da 1 a numero punti vendita
-
inserisci nel pianificato numero pallet ordinati o stimati:- se ci sono possibili spallettizzazioni spallettizza :
-
se esistono vincoli strutturali o di rotta seleziona sottoinsieme dei possibili camion altrimenti ;- finché (quantità caricabile) è minore di :
- seleziona un camion da cercando di saturarlo al massimo;
- verifica e aggiorna numero camion disponibili di ogni tipo;
- ;
- se prova a riutilizzare camion non saturo con un cliente non ancora fatto rispettando vincoli di rotta. Il camion non saturo diventa un nuovo k tipo di camion nell’iterazione successiva. - se non esistono soluzioni ripeti con tutti i camion in
minimizzando ritardo o anticipo.
Fase 3: nella soluzione ottenuta verificare che motrici utilizzate il mattino siano ± 4 di quelle del pomeriggio. Se verifica fallisce sostituire motrice con bilico fino ad adempimento di questo vincolo.
VERIFICA DETTATO SI NO i = 1 INSERISCI NUMERO PALLET ORDINATI POSSIBILE SPALLETTIZZARE? TROVARE INSIEME CAMION COMPATIBILI CON ROTTA NO SI VERIFICA DISPONIBILITA ( ) TOGLI k DA COMPATIBILI SELEZIONA UN CAMION DAI POSSIBILI MASSIMIZZANDO SATURAZIONE SELEZIONA DISPONIBILITA SI NO ESISTE CAMION NON SATURO
AGGIUNGI CAMION NON SATURO COME TIPO k
NO SI SI I = NUMERO CLIENTI? NO NO MOTRICI MATTINA = ± 4 MOTRICI POMERIOGGIO? SOSTITUISCI UNA MOTRICE CON UN BILICO FINITO NO SI SI SI