数据分析讲堂
第八课 基于活动的管理
第十二讲 计算总成本(续)
6)原料库存
如前面有人指出和我后来解释的,fci不跟踪生产之前的批号。但尽管我们不能知道鱼来自哪个市场,或者我们的采购来自哪条船或供应者,我们确实知道每个批次的生产中有多少鱼或者其他食物供应者,以及(通过查看采购数据)所有生产中用到的食物源的加权平均价格。
我们能通过查看原料库存的流出物的出相关的食物源信息。这是因为任何特定一天生产过程中用到的所有食物源,都来自生产中心的原料库存。哪位能提供这一事实的逻辑顺序吗?
一分钟的寂静之后,lulu继续。这意味着库存成本和所有的任何食物源的加权平均价格,对给定的一天和给定的生产设施的所有生产都是一样的。现在考虑原料库存模式的描述。
原料库存模式:
[ mt throughput ] schema:
( time.day.atabove.ugeog.materialainventorysite.ustuff.foodsource.uage. ) ~
qty_sent{kg},
qty_received{kg},
qty_on_hand{kg},
qty_throughput{kg},
storage_cost_per_kg{$/kg},
cumulative_qty_thoughput{kg},
cumulative_storage_cost_per_kg{$/kg}
[ mt cost ] schema:
( time.day.atabove.ugeog.materialainventorysite.ustuff.nonfoodasset. ) ~
storage_cost{$},
cumulative_storage_cost{$}
[ mt batch ] schema:
( stuff.foodsource.uage. ubatchid. ) ~
qty_used_in_batch{kg},
storage_cost_in_batch{$},
storage_cost_per_kg_in_batch{$/kg}
我们需要知道的第一件事情是,在1月15日和16日,在这些neptune foodcake的生产中用到的每种鱼的类型和数量。这通过下面的查询来说明(只适用于1月16日生产的批次123):
[ material inventory thruput ]:
“fish”{n},
“qty sent to production”{kg},
age.,
time.jan15,
geog.vancouver,
[ production]: “qty input”{kg},
( ( machine, start time.( process.cleaning ) ).
[ batch ]: batchid123 ) > 0
年龄/鱼 (age/fish) | 金枪鱼 (tuna) | 鲑鱼 (salmon) | 鳕鱼 (cod) |
1 | 0 | 0 | 0 |
2 | 0 | 0 | 0 |
3 | 0 | 0 | 0 |
4 | 200 | 300 | 200 |
5 | 150 | 200 | 250 |
6 | 50 | 0 | 0 |
用文字来描述,它是要得到1月15日vancouver从库存送去生产的每个年龄的鱼及其数量,这里输入特定机器鱼的数量和生产批次123的处理时间都要求大于0。换一种说法,对批次123生产中用到的每一种鱼,当天送去生产的每个年龄鱼的数量是多少。结果在图8.12.1中说明。
你能慢一点吗lulu?一位经理问。我正努力跟上,但这个似乎单纯的查询正在3个不同的立方体中取数据。接下来,你能更详细地解释一下你的步骤吗?thor走进来说,我对原料库计算没lulu那么熟悉;我想我可以以比较慢的节奏继续讲解。
现在我们知道送去生产批次123的鱼(批次101也一样),我们可以计算存储这些鱼的库存成本,然后得到我们neptune foodcake批次中用到的鱼发生的成本百分比。你如何计算库存成本?你会如何表达这些计算?想一下。
有几个立方体包含与计算批次123(和批次101)库存成本相关的信息;原料库存立方体、生产立方体和批次立方体。用文字来描述,我们应该把批次123食物源的库存成本表示为每个年龄组的库存成本之和(这些成本中的每个成本,是由每组食物源数量占同时间内总体库存成本的百分比与批次123使用的每组百分比的乘积来决定的)。谁能告诉我为什么不关心鱼的种类吗?想一下。
由于库存成本因存储鱼数量和存储鱼时间的不同而不同,但与鱼的类型无关,一位经理回答。对,thor说,非常正确。
大家可以从图8.12.2中看到鱼来源于3个不同的年龄组:6天龄、5天龄和4天龄。我想我们需要将存储鱼的每天每公斤成本乘以每个存储时间的公斤数,经理说。你同意吗?thor不赞成。

如果我们这样做了,thor说,那它与使用库存的标准成本是等价的。无可否认,对此例子来说我们正在将相似日期内存储的鱼进行组合,1月9日——15日(1月10日——15日和1月11日——15日),我们应该尽可能考虑我们模型的基本层次不同成本的可能性。例如,如果周末工作比率相当高(1月9日和10日正好是周末),这就会显露出来。如果我们应用标准成本的话,如果电力比率在1月11日优异个突然的跳跃,或者如果我们商定了一个新的劳动合同,这些对我们成本结构的改变就不会出现。还要记住,我们的目的是为fci找出不稳定成本变换的来源。
因此,我们为每个年龄组独立计算库存成本,然后再将其汇总。我们需要做的第一件事是找出对所有年龄鱼都适用的每天存储成本,公式如下,基本上室内的所有基本条件都一样。记住[mit]是指原料库存吞吐立方体,[mic]是指原料库存成本立方体。
[ mit ]: “storage_cost_per_kg”{$/kg},
foodsource.all,
age.all,
time.day. = [ mic]: (storage_cost{$}, nonfoodasset.all ) +
qty_throughput{kg}
接下来,我们需要计算库存吞吐鱼的累计数量(qty_thoughput),以及每个年龄组鱼在库存上所花费的每个时间段累计存储成本。累计吞吐数量的一般公式如下:
[ mit ]: “cumulative_qty_throughput”{kg},
time.day,
age. = sum ( qty_throughput{kg},time.day.( ( this+1-age. ) to this ) )
几乎所有的经理都立即举起了手,他们都问time.day.((this+1-age.)to this)是什么意思。问得好,thor回答。如果不精确分析此子句,哪位能描述一下我们正在做什么?看起来像一个范围设定,一位经理说。没错,thor说。我们使用送去生产的鱼龄的范围来选择我们要计算吞吐量的日期,由于鱼进入库存时具有一天鱼龄,我们需要加一天到当天(day.this)。用文字来描述,此子句选择范围在time.day.((this+1-age.)之后一定时期内的日期,记住age后的(.)意味着取每一个年龄,即年龄1到6。因此,我们汇总5个日期范围内库存鱼的吞吐:1月10——15日,11——15日,12——15日,13——15日,14——15日。
然后,我们需要用下面的公式计算累计存储成本。如你所见到的,计算适当日期的方法与前面的公式一样。
[ mi cost ]: “cumulative_storage_cost”{kg},
time.day,
age. = sum ( storage_cost{kg}, time.day.( ( this+1-age. ) to this ) )
下一步是合并吞吐量和成本,以计算每公斤累计存储成本,表达式如下:
[ mit ]: “cumulative_storage_cost_per_kg”{$/kg},
foodsource.all,
time.day,
age. =
sum ( “storage_cost”{$} +
“qty_throughput”{kg} ){$/ ( kg*day ) } ×
( “age”{i}, time.day.this )
结尾处的乘是做什么的?一位经理问。thor回答道,他们需要这样做是因为每次吞吐的累计成本比率产生一个每天每公斤平均成本,反之,我们需要知道每个年龄组在库存内所有天的每公斤总存储成本。如图8.12.2显示了批次123(和101)的3个年龄组库存成本中每个的库存成本。
thor问这个经理,那么我们如何由知道了制作这些neptune cake每个年龄鱼的每公斤成本,进而知道生产每个特定批次中实际使用鱼的成本呢?我们不能仅仅用每个年龄组的成本乘以整个组中批次123用到数量的比率吗?一位经理问。这会给我们3个计算——分别对应于age.6,age.5和age.4。thor似乎同意这个策略,lulu皱起眉头。你怎么认为?
你几乎算出了它,lulu说。你是对的,鱼的存储成本是一个鱼的数量和存储日期的函数,与鱼的类型无关。因此我们只需要3个计算:生产中每个年龄鱼用一个计算(6天,5天和4天龄的鱼)。然而,为了计算生产中用到的每个年龄鱼,我们需要存储每公斤鱼的加权平均成本,这里的加权是基于某年龄鱼与生产中用到的所有鱼的比值。然而,为做到这一点,需要一个额外的处理,即创建一个连接原料库存吞吐立方体和批次立方体的混合立方体[mi批次]。仍然需要几个公式,我只写出其中主要的代表性的和最终的结果视图(见图8.12.3)。
[ mi batch ]: “storage_cost_in_batch”{$}, foodsource.all, age.all =
sum ( ( cumulative_storage_cost_per_kg{$/kg},
time. ( [batch]: ( time.day. ( this - 1 ), batchid. ) ) ×
qty_used_in_batch{kg} ), age. )
