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