Ciao,
In allegato è riportato un set di dati jmp con i dati di consumo per una parte.Ho una comprensione da principiante delle formule delle colonne, ma non abbastanza per ottenere il risultato finale che desidero con questo set di dati.Mi piacerebbe poter inserire un livello di inventario iniziale, un punto di riordino, un tempo di consegna e una quantità dell'ordine in una formula o uno script che produrrà quanti pezzi rimarranno nell'inventario utilizzando tali input.Nell'esempio seguente sto iniziando con 3637 pezzi nell'inventario.Il mio punto di riordino è di 1510 pezzi.La quantità del mio ordine (la quantità che ordino quando raggiungo il punto di riordino) è di 600 pezzi.Nella riga 11 il mio livello di inventario totale è inferiore a 1510 dopo aver consumato 572, quindi effettuo un ordine per 600 pezzi.L'ordine impiega 2 settimane per arrivare, quindi il mio totale continua a diminuire fino a quando gli ordini iniziano ad arrivare alla riga 13 (ogni riga è una settimana).Ho provato a utilizzare funzioni come lag per creare un output simile in JMP ma sono perplesso.
| Settimana | Inventario a portata di mano | Consumo | Totale | Invia ordine? | L'ordine arriva |
| 1 | 3637 | 234 | 3403 | NO | N |
| 2 | 3403 | 256 | 3147 | NO | N |
| 3 | 3147 | 272 | 2875 | NO | N |
| 4 | 2875 | 140 | 2735 | NO | N |
| 5 | 2735 | 204 | 2531 | NO | N |
| 6 | 2531 | 178 | 2353 | NO | N |
| 7 | 2353 | 112 | 2241 | NO | N |
| 8 | 2241 | 108 | 2133 | NO | N |
| 9 | 2133 | 380 | 1753 | NO | N |
| 10 | 1753 | 240 | 1513 | NO | N |
| 11 | 1513 | 572 | 941 | SÌ | N |
| 12 | 941 | 370 | 571 | SÌ | N |
| 13 | 571 | 586 | 585 | SÌ | Y |
| 14 | 585 | 436 | 749 | SÌ | Y |
| 15 | 749 | 449 | 900 | SÌ | Y |
| 16 | 900 | 432 | 1068 | SÌ | Y |
| 17 | 1068 | 252 | 1416 | SÌ | Y |
| 18 | 1416 | 182 | 1834 | NO | Y |
| 19 | 1834 | 327 | 2107 | NO | Y |
| 20 | 2107 | 176 | 1931 | NO | N |
| 21 | 1931 | 367 | 1564 | NO | N |
| 22 | 1564 | 498 | 1066 | SÌ | N |
| 23 | 1066 | 225 | 1441 | SÌ | Y |
| 24 | 1441 | 496 | 1545 | NO | Y |
| 25 | 1545 | 1203 | 942 | SÌ | Y |
| 26 | 942 | 1011 | 531 | SÌ | Y |
| 27 | 531 | 525 | 606 | SÌ | Y |
| 28 | 606 | 933 | 273 | SÌ | Y |
| 29 | 273 | 541 | 332 | SÌ | Y |
| 30 | 332 | 670 | 262 | SÌ | Y |
| 31 | 262 | 146 | 716 | SÌ | Y |
| 32 | 716 | 124 | 1192 | SÌ | Y |
| 33 | 1192 | 107 | 1685 | NO | Y |
| 34 | 1685 | 187 | 2098 | NO | Y |
Ecco uno script che crea la nuova tabella dati desiderata;
Names Default To Here( 1 );
dt = Data Table( "Part A Inventory Data" );
dtRpt = New Table( "Output Report",
Add Rows( N Rows( dt ) ),
New Column( "Week", set each value( Row() ) ),
New Column( "Inventory on Hand" ),
New Column( "Consumption", set each value( dt:Number of pieces consumed[Row()] ) ),
New Column( "Total" ),
New Column( "Place Order", character ),
New Column( "Order Arrives", character )
);
Current Data Table( dtRpt );
StartingIOH = 3637;
For( i = 1, i <= N Rows( dtRpt ), i++,
If( i == 1,
:"Inventory On Hand"n[i] = StartingIOH,
:"Inventory On Hand"n[i] = :Total[i - 1]
);
If( :"Order Arrives"n[i] == "",
:"Order Arrives"n[i] = "N"
);
:Total[i] = :"Inventory On Hand"n[i] - :Consumption[i];
If( :"Order Arrives"n[i] == "Y",
:Total[i] += 600
);
If( :Total[i] < 1510,
:"Place Order"n[i] = "Yes";
:"Order Arrives"n[i + 2] = "Y";
,
:"Place Order"n[i] = "No"
);
);

Sembra esserci una discrepanza intorno alla riga 22 nella tabella del rapporto.Si specifica di ordinare parti nuove, tuttavia, si segnala che sono arrivate in una settimana, non in 2 settimane.Il mio script imposta la settimana di arrivo in base alle tue specifiche di un ritardo dell'ordine di 2 settimane.
Grazie signore, è fantastico!