• Non ci sono risultati.

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

Documenti correlati