In questo post vedremo come calcolare l’indice l’accesso attraverso un modello elementare (ovvero un modello che fa delle forti semplificazioni sulla realtà ma rimane semplice realizzazione, in un post successivo complicheremo ulteriormente il modello per renderlo più vicino alla realtà). L’indice d’accesso individua il grado di raggiungibilità di una ubicazione all’interno del magazzino e tale informazione è di grande aiuto per decidere come disporre la merce in magazzino, infatti è opportuno ubicare i materiale a bassa rotazione nelle ubicazione con indice di accesso basso e viceversa. Le semplificazioni adottate nel nostro modello riguardano la tipologia di magazzino costituito da corsie di scaffali, la presenza di un solo ingresso, uno schema del magazzino che rispetta solo la realtà topologica del magazzino (ovvero nello schema la corsia A è vicino alla corsia B ma non viene rispettata in maniera precisa la distanza), la distanza è calcolata in linea d’aria come se non ci fossero ostacoli. La procedura per calcolare l’indice d’accesso si realizza in tre passaggi:
- Realizzazione dello schema grafico del magazzino
- Individuazione delle coordinate di ogni campata
- Calcolo della distanza tra ogni campata e l’ingresso.
Realizzazione dello schema grafico del magazzino: Rappresentiamo graficamente il magazzino su un foglio Excel evidenziando in giallo le celle con le campate ed indicando sulla cella la parte di ubicazione costituita dalla corsia e campata(Ad esempio se una ubicazione è costituita da una lettera che indica l’area del magazzino, una lettera che indica la corsia, due cifre che indicano la campata e due cifre che indicano il ripiano come SA0101, nella cella andremo a scrivere SA01 utilizzando la formula di Excel stringa.estrai([Riferimento cella],1,4) in questo modo otteniamo il dato da inserire nella cella)
Individuazione delle coordinate di ogni campata: Attraverso questa funzione una volta selezionata l’area del magazzino è possibile ottenere in automatico le coordinate di ogni campata. Gli argomenti da passare alla funzione sono l’area del magazzino nel nostro esempio “A1:I23” e la cella di output ovvero la cella in cui la funzione andrà a scrivere le ubicazioni con le coordinate, nel nostro esempio “K1”, l’esempio del codice si riferisce all’intervallo nel foglio1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Public Function Coordinate(AreaMagazzino, CellaOutput) AM = AreaMagazzino CO = CellaOutput NC = ActiveWorkbook.Worksheets(1).Range(AM).Address DP = InStr(1, NC, ":") UC = Mid(NC, DP + 1, Len(NC)) PC = Mid(NC, 1, DP - 1) rigaINI = ActiveWorkbook.Worksheets(1).Range(PC).Row colonnaINI = ActiveWorkbook.Worksheets(1).Range(PC).Column rigaFIN = ActiveWorkbook.Worksheets(1).Range(UC).Row colonnaFIN = ActiveWorkbook.Worksheets(1).Range(UC).Column righe = rigaFIN - rigaINI colonne = colonnaFIN - colonnaFIN RIO = ActiveWorkbook.Worksheets(1).Range(CO).Row COO = ActiveWorkbook.Worksheets(1).Range(CO).Column R = 0 For x = rigaINI To rigaFIN For y = colonnaINI To colonnaFIN ubicazione = ActiveWorkbook.Worksheets(1).Cells(x, y).Value If ubicazione <> "" Then ActiveWorkbook.Worksheets(1).Cells(RIO + R, COO).Value = ubicazione ActiveWorkbook.Worksheets(1).Cells(RIO + R, COO + 1).Value = x ActiveWorkbook.Worksheets(1).Cells(RIO + R, COO + 2).Value = y R = R + 1 End If Next y Next x End Function |
Public Function Coordinate(AreaMagazzino, CellaOutput) AM = AreaMagazzino CO = CellaOutput NC = ActiveWorkbook.Worksheets(1).Range(AM).Address DP = InStr(1, NC, ":") UC = Mid(NC, DP + 1, Len(NC)) PC = Mid(NC, 1, DP - 1) rigaINI = ActiveWorkbook.Worksheets(1).Range(PC).Row colonnaINI = ActiveWorkbook.Worksheets(1).Range(PC).Column rigaFIN = ActiveWorkbook.Worksheets(1).Range(UC).Row colonnaFIN = ActiveWorkbook.Worksheets(1).Range(UC).Column righe = rigaFIN - rigaINI colonne = colonnaFIN - colonnaFIN RIO = ActiveWorkbook.Worksheets(1).Range(CO).Row COO = ActiveWorkbook.Worksheets(1).Range(CO).Column R = 0 For x = rigaINI To rigaFIN For y = colonnaINI To colonnaFIN ubicazione = ActiveWorkbook.Worksheets(1).Cells(x, y).Value If ubicazione <> "" Then ActiveWorkbook.Worksheets(1).Cells(RIO + R, COO).Value = ubicazione ActiveWorkbook.Worksheets(1).Cells(RIO + R, COO + 1).Value = x ActiveWorkbook.Worksheets(1).Cells(RIO + R, COO + 2).Value = y R = R + 1 End If Next y Next x End Function
Calcolo della distanza tra ogni campata e l’ingresso: A questo punto abbiamo una tabella formata dalle seguenti colonne: NOME CAMPATA, COORDINATA_X_CAMPATA, COORDINATA_Y_CAMPATA, COORDINATA_X_INGRESSO, COORDINATA_Y_INGRESSO, andiamo quindi ad inserire una sesta colonna dove calcoliamo la distanza in questo modo: =RADQ(((COORDINATA_X_INGRESSO-COORDINATA_X_CAMPATA)^2)+((COORDINATA_Y_INGRESSO-COORDINATA_Y_CAMPATA)^2)), a questo punto per avere l’indice d’accesso rapportiamo la distanza calcolata con la massima distanza delle ubicazioni del magazzino.