| 扬声器 |
抄本 |
| 布拉德·福克斯 |
感谢您参加我的演讲“但是我现在该做什么?”,使用可靠性模型在 JMP 中进行事件预测。 |
| |
我经常被问到……一旦我建立了可靠性模型,我实际上会用它做什么?人们常常忘记,你可以使用可靠性模型来预测事件实际发生的时间。 |
| |
甚至不仅仅是第一个事件,也许该产品随着时间的推移可能会看到第二个、第三个或第四个事件。 |
| |
我先简单介绍一下自己。我叫布拉德·福克斯 (Brad Foulkes)。我是 Optimal Analytics 的工程总监,我们与企业合作,帮助他们理解数据,识别障碍,并提高效率。 |
| |
在此之前,我从事可靠性工程工作了大约九年,致力于研究如何理解零件的可靠性以及确定零件何时会随着时间的推移而真正发生故障。 |
| |
我已经使用 JMP 大约八年了,大概是 JMP 10 左右。我不确定,那是很久以前的事了,所以我忘记我们当时使用的是哪个版本...我当时使用的是。 |
| |
在我最喜欢的 JMP 工具中,我经常使用寿命分布,因为可靠性建模就在这里。拟合模型和 JSL 我也经常使用。 |
| |
脚本可以为你带来一系列全新的工具和玩具。那么,我今天为什么要讲这个呢? |
| |
因为,这个问题往往在最后出现……在建立模型的最后,而直到那时才真正被考虑过。 |
| |
你可能完成了一个模型,得到了一大堆概率,却不知道下一步该做什么。所以,这里有一个选项,你可以在模型构建完成后继续进行。 |
| |
所以,我们今天讨论的是事件预测,当你建立模型时,你经常会看到这样的图。你会有自己的时间, |
| |
这些可能是硬件或产品的生命周期。比如说搅拌机,或者任何一种厨房电器或小型厨房电器,它们的使用寿命可能不长。 |
| |
很长一段时间。所以有些会很早就失败,有些则会很晚才失败。 |
| |
但最终,当这些事情发生时,你还是会面临失败的概率。所以你可能会说,好吧,大约90%的失败将在四年内发生。 |
| |
嗯,这很棒。这能帮你理解第一次故障,或许还能估算出零件在实际使用中发生故障的概率。但对于真正需要购买或使用这些东西的人来说,这并没有太大帮助。 |
| |
对于实际使用这些产品的顾客来说,他们并不关心它们能用多久。他们可能不想知道一段时间内需要买多少个。 |
| |
也许是在整个生命周期中。他们只想看10年,我需要在10年内购买多少个这样的产品才能让它生存下去。 |
| |
这就是事件预测的用武之地。事件预测的真正作用是获取分布并将其翻转,这样仍然保留你的时间分布。 |
| |
你这里提到的事件发生时间是多少?然后是事件发生的概率。那么现在 |
| |
你可以看看这些事件发生的频率。比如,第一个事件发生在大约八年半,第二个事件发生在九年半。 |
| |
第三个事件……但这都针对同一个客户。所以这都针对同一个客户,同一个用例,所以对他们来说,你知道,他们的平均失败时间。 |
| |
看看这里的所有这些部分,看看所有这些间隔和替换。所以这里, |
| |
客户实际上已经关注这个问题超过20年了。他们可能……所以他们想知道……为了在这20年里生存下来,我至少需要三个部件。 |
| |
因此,通过使用一些随机选择和模拟,您可以了解这些部件需要更换的频率以及客户需要购买您的产品的频率。 |
| |
那么,这在实际中如何实现呢?好吧,归根结底还是要归结为替换。 |
| |
那么,更换部件的频率是多少呢?您更换新部件的频率是多少?或者更换几乎等同于新部件的部件的频率是多少? |
| |
可修复系统和不可修复系统。可修复系统是指你能够将事情恢复到 |
| |
到了可以再次行驶的程度,车子可能就不如新的了。假设你的轮胎破了个洞。你把漏气的地方堵上,然后继续行驶。 |
| |
修好了。但如果你能把轮胎修得跟新的一样好,让它永远不再出问题呢? |
| |
现在对于轮胎来说,也许这并不是那么实用,但是对于其他东西,您可能需要更换某个部件,或者您可能需要切掉某个部件的一部分并只更换那个或那个出现故障的部件。 |
| |
让零件恢复到全新状态,可能会让系统无法修复。所以,即使你进行了维修,为了让它恢复到全新状态, |
| |
它确实会稍微改变一些东西。你知道,这是一个巨大的警告。你确实需要仔细考虑“像新品一样好”的含义,但很多时候,我认为部分……或者人们处理的部分 |
| |
他们修好了,而且修得跟新的一样,他们觉得,嗯,这个系统是可以修复的,但从可靠性的角度来看,它并非如此。好了,我暂时不说这些了。 |
| |
回到替换的问题。当我们考虑单一系统时, |
| |
你可能会看到这里的一些东西然后说,好吧,你知道, |
| |
对于单个系统, |
| |
零件故障频率是多少?如果我们只看一个客户,他们购买这些零件的频率是多少?第一批零件在这里用了四年。 |
| |
然后他们不得不买第二辆。第二辆只用了1.3年,然后他们又不得不买第三辆,而第三辆表现非常出色,用了8年。 |
| |
所以,最终,他们在12年里只买了三个零件,但差异很大。所以,你可以在各种产品上看到这种情况,比如一些手机, |
| |
其他家用产品。有些东西会早点坏,有些东西会晚点坏。 |
| |
你可能正和朋友聊天,说,嘿,我……我的手机太烂了。真不敢相信它这么早就坏了。然后他们就会跟你聊起他们用了十年的那部手机。当然,可能没用十年,但 |
| |
可能要花点时间。所以到最后,对于这个系统、这个客户,他们不得不更换三次零件。 |
| |
现在,如果我们观察多个系统,就能了解这些事件随时间推移发生的频率。所以 |
| |
一个客户可能有第一个系统,然后第二个客户,可能在相同的时间段内有五次或六次替换。 |
| |
因此,如果我们看一下第一个系统,我们可能会说,好吧,我们预计至少在第四年之前不会出现任何故障。 |
| |
但如果我们看一下第二个系统,他们在第一年就出现了故障。因此,如果我们想计算出第一年或第二年预计的平均故障次数或平均事件数量, |
| |
第一个系统并没有告诉我们太多信息。所以,如果你没有数据,但你的模型中有分布,其中有威布尔分布的 beta 和 eta 或类似的东西, |
| |
您可以使用模拟来尝试列出一些客户在第 1 年、第 2 年、第 3 年以及以后预期发生事件的频率,并且比您实际拥有的数据要远得多。 |
| |
通过这样做,通过观察这些多个系统和模拟,你可以理解并开始看到频率趋势 |
| |
这些部件每年都会被更换。所以,虽然这些数据可能只是基于过去七年的事件时间, |
| |
无论是日历时间还是客户时间,替换量都会出现一个峰值,然后逐渐趋于平稳。现在 |
| |
在模拟中,你会看到一些弹跳,这就是你在这里看到的。如果我们有一个闭式解,我们会得到一条很好的直线,但是 |
| |
通过模拟,我们确实得到了一些变化。这就是你在这里看到的。所以你可以画一条线,看看平均而言, |
| |
一个人可能预计每年要更换三分之一。所以三年后,一旦它开始运转,你就可以预期更换一个。所以一开始会有一些,然后就趋于稳定了。 |
| |
让我们看一个例子来了解我的意思。 |
| |
这里有一个数据表,这里我有一个模型。这个模型就是一个随机威布尔分布。如果你不熟悉 JMP 中可以使用的各种函数, |
| |
你可以使用随机威布尔函数、威布尔分位数函数、威布尔分布函数、威布尔密度函数。这些函数都可以应用于不同的分布。 |
| |
在本例中,我们从某个特定分布中随机选取一组点。我的分布的 Beta 值为 1.2,eta 值为 3。 |
| |
所以,通过选择这些随机...随机事件, |
| |
这些都是单独的事件,最终会被纳入你的模型。如果你要建立一个零件故障模型,最终会得到什么呢?这些日期通常会被纳入模型。然而,人们忽略了这些事件对客户的实际影响。所以随着时间的推移 |
| |
客户可能想知道 20、30、40 年后我可能需要更换多少个这样的产品。 |
| |
这时你需要查看系统事件总时间。这只是各个时间的累计和,所以 8.3 是第一个,1.2 是第二个,以此类推。 |
| |
因此,当您进入第二个系统时,我们得到 1.8、3.9、5.9,所以它只是各个时间的累积计数。 |
| |
这里要记住的是,当你试图计算所有这些的平均值时, |
| |
您会查看系统编号,但随后会查看实际发生的年份,因此在运行的第二年发生了 1.8 年。 |
| |
这是一个需要牢记的重要区别...要牢记,因为您要确保在适当的年份识别出失败。 |
| |
所以你的 0.6,虽然它...如果那是第一个,那将是在第一年,它实际上只是增加了年份...系统时间...系统年份在这里增加了一年。 |
| |
有了这些,你可能会想,好吧,既然我们已经掌握了所有这些,我们就可以统计事件数量,查看这个系统、年份,然后进行一些简单的分析。JMP 实际上有一个很好的工具,可以帮你完成所有这些工作。 |
| |
所以 |
| |
JMP 中有一个称为可修复系统模拟的工具。 |
| |
这个工具 |
| |
我知道...我相信它出现在 JMP 13,也许是 JMP 14 中。它已经存在几年了。 |
| |
我不知道它是否得到了应有的宣传,因为它是一个非常强大的工具,但我认为很多人并不欣赏它。 |
| |
所以,你看到的是一个系统。所以,也许,或者现在,我这里有两个部分,但也许我的系统实际上是 |
| |
七八个零件,或者整个变速箱,或者一个泵,或者类似的东西。所有这些零件协同工作,如果任何一个零件发生故障, |
| |
你知道,整个系统都崩溃了,所以你想了解事件是什么,事件发生的时间是多少。所以在每一个事件中,你都要列出你的威布尔分布或你的模型是什么,这里我得到的是 beta 值 1.2 和 alpha 值 15。 |
| |
它是一个以年为单位的时间单位,如果我愿意的话,我当然可以选择不同的分布。 |
| |
然后我可以说如果某个事件发生会发生什么。如果一个区块……这里我遇到了一个区块故障,如果真的发生了故障会发生什么? |
| |
结果是换新的,所以我只想换零件。现在有很多不同的选择,也许我可以做个小修,但我说,我想换个全新的零件,这样它就能像新的一样……像新的一样。 |
| |
然后你可以加入停机时间。那么修复需要多长时间?平均修复时间是多少?它可以是一个常数值。 |
| |
或者……你可以说立即执行,甚至不用考虑执行所需的时间,或者你可以给它一个列表供它选择。你也可以在这里给它几个分布。 |
| |
有了这些工具……现在我已经构建了一个非常简单的系统。我得到了一个已知分布的部分,或者两个已知分布的部分。 |
| |
当其中任何一个失败时,我都有一个替代时间,因此第二个有选择选项。 |
| |
你可以看到,你把它放在这里。现在,这些选择需要与你的模拟使用相同的时间单位。 |
| |
所以我选择以年为单位进行模拟。这是以年为单位的,所以准备某件事的时间可能只有一小时、两小时,甚至可能是一天。但当你把时间换算成年数时,数字就变得非常小了,所以这就是你在这里看到的。 |
| |
我不会在这里详述所有选项。正如你所见,备用数据库(K out of N)还可以做很多其他事情,其中很多都适用于更复杂的分析。 |
| |
好的,我运行我的分析,我将运行 20 年,这里列出了这些年,模拟次数为 100。您通常会想要更多,但出于演示目的,我们将其设置为 100,种子为 1234。 |
| |
那么,我在这里得到了这个漂亮的大输出,并且初始输出总是被称为数字,这非常有帮助。 |
| |
但你可能会想,好吧,我该怎么处理这些东西呢?你可以过来,启动这个分析, |
| |
也许你想查看每个组件的总停机时间。所以,这说明,你知道,每个组件的停机时间分布是怎样的? |
| |
但它实际上从未回答过这个问题:20 多年来,我需要更换这个部件多少次? |
| |
所以我写了一个脚本,所以当你...当你下载这个日志时,它将包含其中的所有这些脚本。 |
| |
我将其设置为一个按钮,但如果您想使用它,实际脚本就在下面,供您参考。 |
| |
所以我只需点击按钮,就会发生很多事情。现在我已经开始计算这些事件预计每年发生的频率。所以从系统的角度来看, |
| |
我已经对失败事件进行了子集化,并设置了年份值。所以你可能还记得,年份值是向上取整的,所以 3.8 年等于 4。 |
| |
现在,这查看的是日历时间,也就是我们可能正在使用的系统时间。它不查看单个时间,所以第一行和第二行之间的时间间隔大约是1.8年。 |
| |
但因为我们正在查看系统,所以我们实际上计算的是 5.69。 |
| |
现在我想把它转化成...我想把所有这些价值转化成有用的东西。 |
| |
不过,需要记住的是……当你寻找每年平均发生的事件数量时,你需要查看那些没有发生事件的年份。所以在第一个模拟中,第一个事件发生在第四年, |
| |
但我需要用零来表示一、二和三,这就是我的脚本的作用。我的脚本有点像设置 |
| |
我想要查看的模式。所以,我想查看第一部分,查看年份值和模拟ID,然后查看事件的实际发生时间。所以在这里你可以看到,第一部分的第一个事件发生在第十年。 |
| |
所以,当这些内容添加到这里时,分析结果也会随之更新。如果我向下滚动到第二部分…… |
| |
当你向下滚动到模拟一的第二部分时, |
| |
那里...没有事件。 |
| |
模拟一的第一个事件直到...才发生。 |
| |
直到四年级。所以如果我一直滚动到四年级 |
| |
对于第二部分,它会显示我在模拟一中有一个事件,好吧。所以这实际上就是把这些事件按照可能发生的年份组合排列起来。 |
| |
好吧,有了这种程度的信息,现在我已经掌握了所有...所有模拟的信息,您看到我有 4,000 条记录,这些只是年份、模拟和部分的所有可能排列。 |
| |
但实际上我想把它们平均下来。所以我取平均值,然后查看模拟次数,也就是行数、年份值,以及零件数量。最后我把模拟次数降到了 40 行,这样就更容易管理,也更容易理解了。 |
| |
在第二部分中,你可以看到一开始有一个小的峰值,然后趋于平稳。 |
| |
它会反复波动,因为这是模拟,我们只运行了 100 个事件,但是...或者 100 次模拟,但我们可能会看到一种稳定的替换状态。 |
| |
不过,如果我们尝试从累积的角度来看待这个问题,这就能告诉客户他们预计10年后会更换多少台。所以在第二部分中, |
| |
假设客户想知道我什么时候需要更换第一个?第一个是什么?第一个 |
| |
会在第四年和第五年之间发生,比如第四年刚过。然后第二次发生在……或者大约第七年。 |
| |
第三次故障发生在大约第 10 年。所以你可以看到,你经历了一段上升期,前期不会出现太多故障,但随后进入稳定状态,大约每三年你就需要更换零件。 |
| |
如果您想尝试做这样的事情,这对于客户、业务规划甚至供应链工作都非常有帮助。 |
| |
因此,使用可修复系统模拟中的事件预测是一种便捷的方法,它不仅能预测故障发生的概率和时间,还能给出关于有多少部件可能发生故障的理解。所以 |
| |
一件事……今天我想谈的另一件事是如何让可修复系统模拟变得更容易一些。 |
| |
所以这可能会让人望而生畏。这是一个新工具,你可能并不了解你正在使用的所有内容,但是 |
| |
如果您...如果您从模板开始,从表格开始,那么构建可修复系统模拟会容易得多。 |
| |
所以最终,为了构建你的模型,你需要大约 13 条数据。其中大部分数据都在后台进行,你可能想不到,但如果你把它们放到一个表格和一个模板中 |
| |
有了这些不同的列……我说的是13列,实际上你需要的更少。我在这里做了一些修改,以便处理一些你可以在这里做的巧妙的小事情。 |
| |
但实际上,您有自己的分布、模型类型、参数以及时间单位。这些都是 JMP 中的默认设置,您可以更改,或者 |
| |
这些都是你需要添加的东西。所以,如果区块失败了,你会用什么新的区块来替代它?这些你都可以调整,你可以用不同的方式连接这些事件名称和流程。 |
| |
在我看来,很多时候我们会看到行为的改变。也许我们想了解一下,前几年,这是人口更替率;接下来几年,这是人口更替率。 |
| |
或者你可能有一些想要利用的竞争性故障模式。所以我在这里要展示的方法可以处理很多这样的问题。 |
| |
抱歉,这绝不是完美的。这 |
| |
绝对应该根据你自己的用例进行调整,但最终,从模板开始是一种加速开发的绝佳方式,并且 |
| |
让你能够进行调整……即时进行细微调整。如果我有这个,我这里有一个很棒的小脚本,如果我点击这个脚本,它就会为我生成可修复系统模拟。 |
| |
如果我看这里,我得到了我的第一个...我的第一部分,其 beta 值为 1.86 或 826,alpha 值为 153。 |
| |
其实就是把这个表格转换成可修复系统模拟。你可以这样做 |
| |
有些事情甚至更加复杂。所以,让我先结束这个话题。 |
| |
这里有14个部分。我可以根据需要更改其中任何一个分布。 |
| |
但我还有其他类型的事件想在这里查看。我想将我的分布拆分到 |
| |
它会在一段时间后发生变化或改变形状。也许我正在尝试模拟产品推出,或者说,整个产品线的产品升级。或者我这里存在竞争故障模式,我想将其考虑进去。 |
| |
所以如果我……你知道……在脚本中使用这个模板,我就能用非常简单的方式处理所有这些。现在你看到了它有多快。那是什么?大概一秒钟就能 |
| |
生成这个模型?现在如果我想再创建一个,也许,也许我想把它变成一个 |
| |
日志正常。 |
| |
我可以在这里做,然后 |
| |
来看看我的剧本 |
| |
和 |
| |
再运行一遍。我得到了另一个模型,(让我们看看,它是什么?第五部分。) |
| |
第五部分现在呈对数正态分布。尝试不同的迭代、不同的模型非常容易,而且每次都会生成一个新的模型。 |
| |
把这张图标记为你的表格。所以,使用这个模板,使用嵌入在这里的脚本,可以很方便地进行分析,并了解你的事件预测随时间的变化。 |