7. Modello Virtuale
7.1 Struttura del modello
7.1.7 Shuttle
78 Il flusso si avvia nel blocco enterMission in cui sono inserite le missioni generate dall’agente Asrs che, successivamente, raggiungono la coda queue2 dove sono gestite con logica FIFO.
Inoltre, in questo modulo è richiamata una funzione di Anylogic per sincronizzare il flusso con quello relativo alla gestione delle missioni dello Shuttle.
Affinché la MaxiShuttleMission possa raggiungere il delay2 per la presa in carica, è necessario che il modulo hold sia sbloccato e permetta il passaggio di un agente. In particolare, è possibile attivare o disattivare l’hold mediante uno specifico comando di Anylogic.
Nel delay2 si richiama la funzione f_CalculateHorizontalTime per il calcolo del tempo della missione, si aggiornano le informazioni relative alla missione attuale e, infine, il MaxiShuttle riceve il messaggio seized che genera un cambiamento di stato da idle a moving consentendo l’avvio della movimentazione.
I successivi holdMaxiShuttle e holdShuttle sono sbloccati quando il trasloelevatore si trova nello stato arrived ovvero all’arrivo, rispettivamente, del MaxiShuttle e dello Shuttle presso la destinazione della missione.
Infine, una volta raggiunto il delay1 la missione giunge al termine, il MaxiShuttle passa dapprima allo stato loadingUnloading e, successivamente, torna ad essere inattivo. Inoltre, la conclusione di una missione sblocca il modulo hold consentendo l’avvio di una eventuale missione in coda.
Il diagramma di flusso termina con il blocco exit2 in cui la missione è aggiunta alla collezione completedMaxiShuttleMission.
Figura 7.13 – Flowchart MaxiShuttle
79 Figura 7.14 – Shuttle
Tabella 7.13 – Attributi Shuttle
Nome Elemento Tipo Descrizione
verticalSpeed Parametro double Velocità verticale
verticalAcceleration Parametro boolean Accelerazione verticale verticalDeceleration Parametro boolean Decelerazione verticale
delayForRoute
Calculation Parametro Time
[seconds]
Tempo che impega il Shuttle per calcolare il
percorso
spaceToMaxSpeed Parametro double
Spazio che il MaxiShuttle deve
percorrere per raggiungere la massima
velocità verticale currentMaxiShuttle
Mission Variabile MaxiShuttleMission
Indica la missione corrente che il MaxiShuttle sta
eseguendo
80
Nome Elemento Tipo Descrizione
currentShuttleMission Variabile ShuttleMission
Indica la missione corrente che lo Shuttle
sta eseguendo
boxOnBoard1 Variabile Box
Box situata sullo Shuttle in posizione 1
(lato fronte 1)
boxOnBoard2 Variabile Box
Box situata sullo Shuttle in posizione 2
(lato fronte 2) lastLocation Variabile StorageLocation Ultima posizione
raggiunta dal traslo completedMaxiShuttle
Missions Collezione ArrayList
<MaxiShuttleMission>
Collezione di tutte le missioni completate
dallo Shuttle
f_calculateSpace Funzione -
Calcola lo spazio necessario allo Shuttle
per raggiungere la massima velocità f_calculateInput
Time Funzione -
Assegna i tempi fissi da considerare in relazione
al tipo di box f_CalculateVertical
Time Funzione - Calcola il tempo
necessario a spostarsi lungo l’asse verticale
Il primo flowchart (Figura 7.15) si occupa della gestione delle ShuttleMission. Anche in questo caso, come nel MaxiShuttle, il flusso si avvia nel blocco enterMission in cui sono inserite le missioni generate dall’agente Asrs che, successivamente, raggiungono il wait dove attendono di essere processate. Questo blocco rappresenta un primo elemento di differenza con il MaxiShuttle poiché le ShuttleMission sono gestite dalla queue del MaxiShuttle in modo da sincronizzare entrambe le missioni.
Nel delay3 si richiama la funzione f_CalculateVerticalTime per il calcolo del tempo della missione, si aggiornano le informazioni relative alla missione attuale e, infine, lo Shuttle riceve il messaggio seized che genera un cambiamento di stato da idle a moving consentendo l’avvio della movimentazione.
81 I successivi holdMaxiShuttle e holdShuttle sono sbloccati quando il trasloelevatore si trova nello stato arrived ovvero all’arrivo, rispettivamente, del MaxiShuttle e dello Shuttle presso la destinazione della missione.
Infine, una volta raggiunto il delay2 la missione giunge al termine, lo Shuttle passa dapprima allo stato loadingUnloading e, successivamente, torna ad essere inattivo. Inoltre, la conclusione di una missione sblocca il modulo hold consentendo l’avvio di una eventuale missione in coda.
Il diagramma di flusso termina con il blocco exit2 in cui la missione è aggiunta alla collezione completedShuttleMission.
Figura 7.15 – Flowchart Shuttle gestione ShuttleMission
Il secondo flowchart (Figura 7.16) che caratterizza lo Shuttle riguarda, come detto, il caricamento delle Box sul trasloelevatore sia nel caso in cui si trovino sul conveyor di ingresso sia che si trovino stoccate nei vani.
Nel primo caso, la Box giunge nel flusso attraverso l’enter denominato fromConveyor, mentre nel blocco delay4 subisce un ritardo pari al tempo di caricamento. Esso include l’ultimo tratto del conveyor ed è differente in base alla tipologia di cassetta.
Nel secondo caso, analogamente, la Box attraversa il ramo parallelo, passa per il blocco enter e raggiunge il delay5 dove gli è assegnato un tempo di caricamento differente dal precedente perché relativo al prelievo dai vani; quest’ultimo dipende dal deep ovvero dalla profondità della Box all’interno del vano.
Il flusso si ricongiunge nel blocco moveTo in cui istantaneamente la Box è caricata su una delle due posizioni sul trasloelevatore in base al fronte di prelievo.
Successivamente, nel delay1 si aggiornano i parametri e le variabili relative alle operazioni descritte e, inoltre, si interagisce con i diagrammi di flusso relativi alla gestione delle missioni sia del MaxiShuttle che dello Shuttle affinché la missione sia terminata.
Nuovamente il flusso si suddivide nel blocco selectOutput che invia la Box direttamente verso il flowchart dello StorageLocation se l’attuale locazione e quella di destinazione appartengono allo stesso fronte, altrimenti, la Box subisce un ritardo relativo allo spostamento sulla culla del trasloelevatore per poi raggiungere l’agente StorageLocation.
82 Figura 7.16 – Flowchart Shuttle gestione Box