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