1125 【萬(wàn)泉河】永遠不要做設備壽命排序
經(jīng)常遇到有人咨詢(xún)如何做設備壽命排序的問(wèn)題。 或者另一種問(wèn)法,如何得到最長(cháng)運行時(shí)間和最短運行時(shí)間的設備編號。
而問(wèn)一下目的, 通常就是恒壓供水,多泵運行,有運行有備用,擔心有的泵過(guò)度使用而提前壽命到期,或者有的泵長(cháng)期閑置不用而擱壞了。末了還要加一句,客戶(hù)要求的。
我因為素來(lái)反對這種控制策略,所以大家看我做過(guò)了那么多例子,但卻從來(lái)不做壽命排序的問(wèn)題。 不是做不出,其實(shí)按照模塊化的框架,要增加這樣的算法易如反掌。 恰恰就是因為擔心我做了這樣的例子, 會(huì )誘導行業(yè)走向這樣的歧途。
因為,上述的要求, 哪怕是客戶(hù)白紙黑字的親口要求,其實(shí)是偽命題。
讓我們來(lái)分析下這個(gè)所謂的客戶(hù)需求。
在壽命排序策略里, 在每一次加減設備操作時(shí),比如系統的壓力低于了設定值,判定需要增加一臺泵才可以滿(mǎn)足系統需求, 那就挑選空閑泵之中的運行壽命累積最短的那一臺。 而如果壓力高過(guò)了設定值, 滿(mǎn)足了減泵條件, 那就挑選在運行設備中累積壽命最長(cháng)的那一臺停止。
這個(gè)策略看起來(lái)完美。 但實(shí)質(zhì)卻未必如想象般美好。
我們所作的控制系統,其預期壽命肯定要大于機械設備的壽命的。 假設系統完工后10年,或者20年后, 真的有其中的某臺設備壽命到期了,需要整體更換, 那么更換完成后, 這個(gè)運行策略還能滿(mǎn)足嗎?
換上了一臺新泵后,這個(gè)位置的泵的壽命計數要不要清零?
如果不清零, 那設備的壽命累積值就不準確了。 而如果清零,那么清零后,按照既有的策略,既然它最年輕, 那么后面的工作就只有它努力來(lái)干了。它一直干下去, 直到和其它的叔叔伯伯一樣老態(tài)龍鐘之后,大家才終于全部心安理得平等了。
而這種按壽命排序的均衡策略,根據系統的特點(diǎn)不同,切換周期會(huì )不同,比如如果大致每天切換一次的系統, 那么最終各泵的運行時(shí)間都會(huì )相差24小時(shí)以?xún)取?一次啟停, 排序結果的兩臺泵, 哪怕壽命累積只差1分鐘, 也一定會(huì )是小一分鐘的這臺被選中。 一秒也不行。
這讓我想到了地圖導航剛出來(lái)的時(shí)候,那個(gè)算法叫一個(gè)差勁,給你計算的最短路線(xiàn)可真的絲毫不差的比較出來(lái)了最短。 長(cháng)途駕駛,國道一個(gè)大圓弧繞過(guò)了一個(gè)村莊,它竟然都會(huì )指揮你從國道下來(lái),進(jìn)入村莊內部, 抄村里的那條直線(xiàn)胡同。
上面分析的是某臺泵偶然壽命到期先掛掉的情況。 而如果沒(méi)有偶然情況,并且恰好這些設備的制造一致性非常好,壽命都能大差不差的同時(shí)掛掉。 那么你維持了他們相同的運行壽命的時(shí)候,那么其中一臺掛掉的時(shí)候, 說(shuō)明另外的N臺也都差不多該同期壽終正寢了。有可能也就在這一兩天。
而這種不管是恒壓供水多用多備的系統,通常都是非常重要的系統, 在損壞的設備更換期間, 還要心驚膽戰擔心邊上的哥們也隨時(shí)可能掛掉,而這種系統的設備通常個(gè)頭又很大, 比如幾十噸,需要復雜的起吊設備, 一次更換要個(gè)把月才能完成。 如果真的在此期間連續發(fā)生泵損毀的情況, 那產(chǎn)生的災難誰(shuí)受得了!
而對維修部門(mén)來(lái)說(shuō), 一年或者半年內對同一個(gè)系統的設備馬不停蹄連續更換,那也夠忙的了,公司別的事都不用干了。
所以我們回到客戶(hù)要求的壽命排序的時(shí)候, 其實(shí)要的不是嚴格的挑選最長(cháng)最短,而只是大致均衡。 多臺之間, 只要壽命累積差的不是太大即可。
而這其中最簡(jiǎn)單的策略就是跑馬燈一般輪轉。
把設備一次1,2,3…n , 1,2, 形成輪轉, 正在運行的設備形成一條龍, 而需要增加的時(shí)候龍頭方向前進(jìn)一步, 而需要減少的時(shí)候, 龍尾部分也前進(jìn)一步。
這樣長(cháng)久下來(lái),只要所有設備都投入就緒, 那么它們的出力總是大致均衡的。 而即便有個(gè)別設備因為維護,錯過(guò)了幾個(gè)月的運行而顯得壽命累積略少,但在壽命這個(gè)尺度上,這點(diǎn)時(shí)間根本不足以考慮。
而如此策略的實(shí)現思路,我早就在前面的文章里講過(guò)了。
0609 【萬(wàn)泉河】寧做小白勿做小黑,一道測試題檢測你是否適合做程序員
0707 【萬(wàn)泉河】更具程序員思維的U8輪巡題目答案
可以直接套用到這樣的應用場(chǎng)景。
咱們再回過(guò)頭看所謂的客戶(hù)需求。
理論上講, 咱們做技術(shù)的工程師與銷(xiāo)售人員工作性質(zhì)不同, 銷(xiāo)售人員是跟人打交道的,而技術(shù)工程師面對的是冷冰冰的機器。那么你在做一臺設備或者的時(shí)候,滿(mǎn)足的并不是客戶(hù)公司的某個(gè)個(gè)人的需求, 而是這臺設備本身的客觀(guān)需求。
設備需要咋樣的策略和運行效果, 是一個(gè)客觀(guān)問(wèn)題, 是設計者和使用者共同面對的問(wèn)題。從專(zhuān)業(yè)角度,客戶(hù)的設計能力當然是比不上專(zhuān)業(yè)的設計工程師的,那么對需求的描述理解也并不見(jiàn)得就是最終的終極答案,設計者并不可以將紙面的需求簡(jiǎn)單作為設計參考標準, 而是需要消化吸收后再反饋確認。
所以,客戶(hù)并不見(jiàn)得就是上帝, 并沒(méi)有一言九鼎的威權,相反,大多數時(shí)候客戶(hù)是需要被培訓,需要再教育的。 通常情況下,只要是講理的客戶(hù), 你只要把道理充分講解給他們,他就一定會(huì )理解,接受。
從另外一個(gè)角度,我們有許多同行, 經(jīng)常抱怨客戶(hù)的要求總變,不能一次性把需求描述清楚,也是源于設計者對所設計的系統理解不夠專(zhuān)業(yè),把客戶(hù)的需求當成了不可違背的指令。歸根到底,責任其實(shí)還是在自己。
總而言之,客戶(hù)這個(gè)上帝沒(méi)那么威嚴,也沒(méi)那么全能。