Archivio per la Categoria ‘Pratica’ Category

scritto da | on | Nessun commento

L’individuazione del tipo di domanda è di grande importanza per la successiva fase di previsione e poi di gestione delle scorte, i principali metodi si applicano per i codici che hanno una domande regolare, pertanto è necessario individuare per ogni codice il tipo di domanda, come visto in un precedente post possiamo individuare quattro tipi di domanda: Regolare, intermittente , erratica e lumpy. Per individuare a quale categoria il codice appartenga dobbiamo calcolare due indicatori:

  1. ADI (avarage demand interval): L’intervallo medio fra due consumi successivi del codice
  2. CV2 (Coefficiente di variazione al quadrato): Il quadrato del rapporto tra domanda non nulla e la domanda media.

Incrociando i due indicatori (Livello alto e basso) otteniamo una matrice con la quale ricavare la tipologia della domanda.
Per calcolare il primo indicatore consideriamo una tabella in cui sono presenti i seguenti campi: CODICE,DATA,QT. Partendo da questa tabella ed applicando la seguente funzione possiamo derivare una tabella con l’indicatore ADI calcolato.

Public Function ADI(Chiave, CampoData, NomeTabella)
Dim db As DAO.Database
Dim tabella As DAO.Recordset
Dim c1 As DAO.Field
Dim c2 As DAO.Field
Dim codes(2000000, 3)
Dim DATI(100000, 3)
Set db = CurrentDb
Set tabella = db.OpenRecordset(NomeTabella, dbOpenDynaset)
Do Until tabella.EOF
    t = t + 1
    codes(t, 1) = tabella.Fields(Chiave)
    codes(t, 2) = tabella.Fields(CampoData)
    tabella.MoveNext
Loop
tabella.Close
db.Close
For x = 1 To t
    If codes(x, 1) = codes(x + 1, 1) Then
        codes(x, 3) = codes(x + 1, 2) - codes(x, 2)
    Else
        codes(x, 3) = 0
    End If
Next x
For x = 1 To t
    If codes(x, 1) <> codes(x - 1, 1) Then
        s = codes(x, 3)
        j = 0
    Else
        s = s + codes(x, 3)
        j = j + 1
        If codes(x, 1) <> codes(x + 1, 1) Then
            k = k + 1
            DATI(k, 1) = codes(x, 1)
            DATI(k, 2) = s
            DATI(k, 3) = j
        End If
    End If
Next x
SvuotaTab "ADI"
Set db = CurrentDb
Set tabella = db.OpenRecordset("ADI", dbOpenDynaset)
Set c1 = tabella.Fields("CODICE")
Set c2 = tabella.Fields("ADI")
For x = 1 To k
    tabella.AddNew
    c1 = DATI(x, 1)
    c2 = DATI(x, 2) / DATI(x, 3)
    tabella.Update
Next x
tabella.Close
db.Close
End Function

Il valori che bisogna passare alla funzione sono il nome del campo dove è contenuto il codice articolo, il nome del campo dove è indicata la data ed il nome della tabella dove sono contenuti i codici con lo storico della domanda. La funzione ha bisogno che sia presente una tabella chiamata ADI che abbia i campi CODICE e ADI, la funzione infatti ogni volta che viene lanciata svuota questa tabella ed accoda i nuovi valori calcolati. La funzione per svuotare la tabella richiama una funzione SvotaTab così definita:

Public Function SvuotaTab(nomeTab)
   DoCmd.SetWarnings False
   DoCmd.RunSQL "DELETE * FROM [" & nomeTab & "];"
   DoCmd.SetWarnings True
End Function

Per il calcolo del secondo indicatore possiamo procedere attraverso una serie di query che partono dalla tabella movimenti formata dai seguenti campi: CODICE, DATA, SEGNO, QT.
Query MMD

SELECT MOVIMENTI.CODICE, MOVIMENTI.DATA, MOVIMENTI.QT
FROM MOVIMENTI
WHERE (((MOVIMENTI.SEGNO)="-"))
ORDER BY MOVIMENTI.CODICE, MOVIMENTI.DATA, MOVIMENTI.SEGNO DESC;

Query calcola CV

SELECT MMD.CODICE, StDevP([QT]) AS DEV, Avg(MMD.QT) AS MEDIA
FROM MMD
GROUP BY MMD.CODICE
HAVING (((Avg(MMD.QT))>0));

Query AGG CV2

SELECT [Calcola CV].CODICE, ([DEV]/[MEDIA])^2 AS CV2 INTO CV2
FROM [Calcola CV];

scritto da | on | Nessun commento

L’anagrafica articoli come visto in un post precedente rappresenta una parte fondamentale del sistema gestionale, pertanto è opportuno prevedere non solo una procedura per la creazione e l’inserimento di nuovi codici ma anche una procedura per la sua manutenzione. La manutenzione dell’anagrafica articoli è importante in quanto permette al sistema di “ragionare” con dati che riflettono la realtà. Consideriamo ad esempio il dato relativo alla confezione di un codice che non sia stato aggiornato e consideriamo ad esempio la procedura che gestisce i trasferimenti tra i vari magazzini, tale procedura calcola la quantità in eccesso su un magazzino che può essere trasferita ad un altro e poiché non è conveniente disfare una confezione nel caso di codici dal costo estremamente ridotto ( ad esempio se nel magazzino A ci sono 5230 viti e nel magazzino C ne servono 2200 ed il codice ha una confezione da 4000 è opportuno trasferire 4000 piuttosto che contare e prelevarne 2200) pertanto il sistema suggerirà di trasferire la quantità arrotondata alla confezione. È evidente che se la confezione inserita in anagrafica non è quella reale possono crearsi dei problemi. Considerando il caso di prima se in anagrafica la confezione delle viti è 4000 ma in realtà la confezione è più alta o basse l’operatore di magazzino avrebbe difficoltà nell’effettuare il trasferimento.
Per quanto riguarda la procedura di manutenzione dell’anagrafica è possibile individuare due tipi di procedure:

  1. manutenzione di massa
  2. manutenzione per singolo articolo

La procedura di manutenzione di massa prevede l’individuazione degli articoli da mantenere ed il campo od i campi che devono essere modificati. La manutenzione di massa è una operazione non sempre prevista dai gestionali pertanto in questi casi è necessario procedere accedendo direttamente alla base dati per modificare i dati tramite SQL. In questo caso possiamo avere diverse situazioni:

  • è possibile individuare gli articoli da modificare tramite una regola (cambiare tutti gli articoli che appartengono alla categoria materie di consumo, cambiare tutti gli articoli con data di creazione inferiore al 01/01/2000 ecc)
  • non è possibile individuare gli articoli tramite una regola
  • è possibile individuare il valore del campo da modificare tramite una funzione (aumentare del 10%, sottrarre 25 ecc)
  • non è possibile calcolare il valore del campo (ad esempio il fornitore ci fornisce un elenco con i suoi nuovi codici)

Vediamo con degli esempi pratici come procedere nei casi visti in precedenza.
Primo esempio: aumentare del 10% tutti i lotti minimi degli articoli del fornitore n 1820

UPDATE ANAGRAFICA SET ANAGRAFICA.[LOTTO MINIMO] = [LOTTO MINIMO]*1.1
WHERE (((ANAGRAFICA.FORNITORE)=1820));

Secondo esempio: Modificare il codice articolo fornitore per gli articoli presenti nella tabella inviata dal fornitore

UPDATE [NUOVI CODICI] INNER JOIN ANAGRAFICA ON [NUOVI CODICI].[CODICE VECCHIO] = ANAGRAFICA.[PN FORNITORE] SET ANAGRAFICA.[PN FORNITORE] = [CODICE NUOVO];

Per quanto riguarda la manutenzione di massa possiamo distinguerle ulteriormente in manutenzione periodiche e manutenzioni occasionali. Nel primo caso si tratta di aggiornamenti periodici di alcuni dati che solitamente sono calcolati tramite una procedura ad esempio la scorta minima, il lotto economico, la confezione e così via, per ogni aggiornamento è necessario quindi prevedere una procedura gestionale che informatica che consenta l’aggiornamento automatico dei dati una volta validati dagli operatori (vedi articolo verifica lead time).
Per la manutenzione del singolo articolo è necessario che la procedura preveda la responsabilità di aggiornamento dei singoli campi, i tempi di aggiornamento, le regole per la modifica. Inoltre se il gestionale lo consente individuare i campi per i quali può essere opportuno mantenere un storico (nel caso il gestionale non lo consenta è possibile prevedere una procedura a livello di database che ogni giorno effettui la copia della tabella di anagrafica per i campi di cui si vuole mantenere lo storico).

L’inventario

Ago
2010
20

scritto da | on | Nessun commento

In diversi post precedenti abbiamo visto come l’inventario rappresenti una attività importante in quanto consente di riconciliare le differenze tra i flussi fisici e quelli informativi e consente di evidenziare eventuali sbavature dei processi logistici da migliorare. È quindi opportuno dotarsi di una solida procedura inventariale e procedere successivamente ad una analisi dei dati inventariali, è inoltre utile in alcuni sistemi logistici prevedere degli inventari a rotazione. In tema di inventari sarà a breve disponibile un ebook che cercherà di sviscerare le problematiche e le buone pratiche relative a questa rilevante attività logistica.

scritto da | on | Nessun commento

Quando decidiamo di affidare parte della nostra produzione ad un terzista oltre ad una valutazione delle capacità tecniche è necessario effettuarne anche una valutazione logistica al fine di migliorare le operazioni di invio e ricezione di materiali, è pertanto opportuno considerare i seguenti elementi:

  1. magazzino
  2. sistema informativo
  3. trasporti

Magazzino
Il terzista dispone di un magazzino? Di che dimensioni ? in che modo è stoccata la merce ? Il terzista gestisce anche materiali di altre imprese ? Come mantiene separato il materiale dei diversi clienti ? Utilizza un sistema di riconoscimento tramite codice a barre ? Ha la possibilità di stampare etichette con il codice a barre? Quanto spazio può dedicare al nostro materiale ? Il personale di magazzino è adeguato in termini numerici e professionali ? Quali sono i sistemi di sicurezza del magazzino ?

Sistema informativo
Il terzista dispone di una struttura ICT ? possiede un sistema gestionale ? dispone di un collegamento alla rete internet ? Il sistema gestionale consente di interfacciarsi con il sistema gestionale della nostra azienda ? è possibile uno scambio di dati ? Il personale dell’ufficio logistica è adeguato in termini numerici e professionali ?

Trasporto
Il terzista possiede mezzi di trasporto ? quanti? Di che tipo? Quanto dista dalla nostra azienda? Si avvale di corrieri espressi ? quanti e quali ?
È opportuno tener conto di queste valutazioni in quanto consentono una scelta più oculata del subfornitore e permettono di impostare in maniera corretta i flussi di operazioni logistiche in conto lavoro (ad esempio nel caso il terzista abbia un magazzino limitato allo bisogna prevedere dei rifornimenti di materiale più frequenti, nel caso il sistema informativo del terzista consenta lo scambio di dati è possibile l’invio degli ordini di conto lavoro o dei documenti di trasporto in modo da alleggerire il lavoro degli operatori ed evitare errori)
Dal punto di vista del fornitore di servizi lavorazione, dotarsi di un buon sistema logistico può rappresentare un ottimo vantaggio competitivo rispetto magari a fornitori che hanno un prezzo più basso me che non forniscono un servizio logistico adeguato.

Algoritmo SPT

Ago
2010
11

scritto da | on | Nessun commento

Nella schedulazione di attività esistono diversi algoritmi che hanno come risultato finale l’ordinamento delle attività da eseguire in base alle esigenze di ottimizzazione dell’azienda. In questo post consideriamo l’algoritmo più elementare ovvero il Shortest Processing Time che ha come obiettivo il tempo medio di completamento delle operazioni. Consideriamo per il nostro esempio n ordini di produzione che devono essere evasi nella settimana successiva (hanno tutti data di consegna successiva alla settimana) ognuno dei quali ha un tempo ciclo differente T. L’algoritmo SPT consiste nell’ordinare gli ordini di produzione in base al tempo ciclo in maniera crescete. Consideriamo i seguenti ordini:

Ordine Minuti
A 235
B 175
C 210
D 140
E 160
F 165
G 130
H 125
I 155

Procediamo al calcolo del tempo medio di completamento in questo modo

Ordine Minuti cumulato
H 125 125
G 130 255
D 140 395
I 155 550
E 160 710
F 165 875
B 175 1050
C 210 1260
A 235 1495
Tempo medio 9 6715 746,11

In questo caso abbiamo supposto che i tempi ciclo siano deterministici, in realtà è molto probabile che i tempi reali siano vicini a quelli ciclo ma per calcolare il tempo medio di completamento è opportuno utilizzare delle variabili normali che hanno come media il tempo ciclo ed come deviazione standard le variazioni osservate nelle precedenti lavorazioni. Anche utilizzando variabili casuali normali per i tempi ciclo l’algoritmo SPT garantisce il tempo medio di completamento minore.

scritto da | on | Nessun commento

Abbiamo visto che esistono diversi sistemi di stoccaggio per la merce, uno tra i più diffusi è sicuramente quello delle scaffalature per via della loro economicità e della loro immediatezza di utilizzo. All’interno di questa categoria esistono diversi tipi di scaffalature e la realizzazione di un magazzino fatto di scaffalature richiede comunque un minimo di progettazione.
Le principali tipologie di scaffalature sono:
Scaffalature portapallet
Le scaffalature portapallet tradizionali offrono flessibilità e sono pratiche da utilizzare. Facili da regolare e da aggiungere, offrono un accesso semplificato a ogni singolo pallet. Sebbene si tratti di una soluzione economicamente vantaggiosa, può richiedere corsie fino a 3,5 metri di larghezza, secondo il tipo di carrello elevatore che si utilizza.
Scaffalature a doppia profondità
Come suggerisce il nome, i pallet vengono conservati a una profondità doppia per un totale di quattro pallet tra le corsie. La scaffalatura doppia richiede un carrello con forche telescopiche e corsie di larghezza leggermente superiore. Data la necessità di un numero inferiore di corsie, la densità di stoccaggio può essere aumentata fino al 25% a seconda del numero di posti per pallet.
Scaffalatura drive-in e drive-through
Questo sistema è progettato per i magazzini con elevati costi di esercizio (imputabili, ad esempio, al riscaldamento e al condizionamento) e una gamma limitata di merce da movimentare. I carrelli possono movimentare i pallet per depositare e prelevare carichi mediante spinta o mediante scorrimento lungo lo scaffale, eliminando la necessità delle corsie e aumentando la capacità di stoccaggio. Usando una combinazione di accatastamento su scaffali senza punti di pressione e accatastamento a terra in blocchi compatti, il sistema è particolarmente utile per conservare merce stagionale.
Stoccaggio su scaffalature dinamiche
Lo stoccaggio su scaffalature dinamiche offre una soluzione decisamente compatta per merci ad alta frequenza. Tuttavia, a causa della sua complessità, richiede un notevole investimento di capitali. Questa soluzione è particolarmente indicata per merci su pallet o merci in cartoni.
Nella progettazione di un magazzino a scaffalature bisogna tener conto ei pesi, delle distanze, degli spazi, dei carichi e delle normative.

News