こんにちは、
部品の消費データを含む jmp データセットが添付されています。列の数式については初心者向けに理解していますが、このデータ セットで必要な最終結果を達成するには十分ではありません。開始在庫レベル、再注文ポイント、リードタイム、注文数量を数式またはスクリプトに入力して、それらの入力を使用して在庫に残る個数を出力できるようにしたいと考えています。以下の例では、在庫が 3637 個ある状態から始めています。私の再注文ポイントは 1510 個です。私の注文数量 (再注文ポイントに達した時点での注文数量) は 600 個です。行 11 では、572 個を消費した後、合計在庫レベルが 1510 未満になったので、600 個を注文します。注文が到着するまでに 2 週間かかるため、行 13 に注文が到着し始めるまで合計は減少し続けます (各行は 1 週間です)。ラグなどの関数を使用して、JMP で同様の出力を作成しようとしていますが、途方に暮れています。
| 週 | 手元在庫 | 消費 | 合計 | 注文しますか? | 注文品が到着しました |
| 1 | 3637 | 234 | 3403 | いいえ | N |
| 2 | 3403 | 256 | 3147 | いいえ | N |
| 3 | 3147 | 272 | 2875 | いいえ | N |
| 4 | 2875 | 140 | 2735 | いいえ | N |
| 5 | 2735 | 204 | 2531 | いいえ | N |
| 6 | 2531 | 178 | 2353 | いいえ | N |
| 7 | 2353 | 112 | 2241 | いいえ | N |
| 8 | 2241 | 108 | 2133 | いいえ | N |
| 9 | 2133 | 380 | 1753年 | いいえ | N |
| 10 | 1753年 | 240 | 1513 | いいえ | N |
| 11 | 1513 | 572 | 941 | はい | N |
| 12 | 941 | 370 | 571 | はい | N |
| 13 | 571 | 586 | 585 | はい | Y |
| 14 | 585 | 436 | 749 | はい | Y |
| 15 | 749 | 449 | 900 | はい | Y |
| 16 | 900 | 432 | 1068 | はい | Y |
| 17 | 1068 | 252 | 1416 | はい | Y |
| 18 | 1416 | 182 | 1834年 | いいえ | Y |
| 19 | 1834年 | 327 | 2107 | いいえ | Y |
| 20 | 2107 | 176 | 1931年 | いいえ | N |
| 21 | 1931年 | 367 | 1564年 | いいえ | N |
| 22 | 1564年 | 498 | 1066 | はい | N |
| 23 | 1066 | 225 | 1441 | はい | Y |
| 24 | 1441 | 496 | 1545年 | いいえ | Y |
| 25 | 1545年 | 1203 | 942 | はい | Y |
| 26 | 942 | 1011 | 531 | はい | Y |
| 27 | 531 | 525 | 606 | はい | Y |
| 28 | 606 | 933 | 273 | はい | Y |
| 29 | 273 | 541 | 332 | はい | Y |
| 30 | 332 | 670 | 262 | はい | Y |
| 31 | 262 | 146 | 716 | はい | Y |
| 32 | 716 | 124 | 1192 | はい | Y |
| 33 | 1192 | 107 | 1685年 | いいえ | Y |
| 34 | 1685年 | 187 | 2098年 | いいえ | Y |
以下は、必要な新しいデータ テーブルを作成するスクリプトです。
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"
);
);

レポート表の 22 行目あたりに矛盾があるようです。新しい部品を注文すると指定しましたが、2 週間ではなく 1 週間で到着したと報告しています。私のスクリプトは、2 週間の注文ラグの指定に基づいて到着週を設定します。