「但是現實是只有七座城市發生了,和林嶼的記憶一模一樣。」
「結果是對的,不代表原因也是對的。」陸沉說。
魏峰看著那個圈,沒再說話。
林嶼放下列印稿。
「我知道了。」
「殼上的因果,本來就是調的。」他說,「吳州這條可以證明,參數確實調錯了。」
「但是深地的影響是否被放大,我目前持保留意見。」
「模型的因果是湊的,我知道。但深地工程正在改變區域地下穩定,這個結論在我記憶里,不在參數裡。」
「還有一個問題,就是為什麼會這麼巧?七城在同一天沉降,目前模型解釋不了。」陳柏言在旁邊聽了半天,這會兒也坐了過來。
「或許,還有哪些參數被我們忽略了。」陸沉想了想。
辦公室里只有排風扇在轉。
蘇晚忽然把列印稿拿過去,重新看了一遍吳州那一節。
「這次比講座有意思。」她說。
陸沉沒反應過來。
陳柏言笑了一下。
陸沉:「……」
「一步一步來吧。」林嶼說。
「先保證模型輸出的七城報告不能有漏洞。陸沉,針對這個調整需要多久?」
「至少兩周。」
「函數我要拆開重構,參數重新標定。」
「還有,沉降時間還需要再研究,暫時或許可以解釋為湊巧。」
「但至少報告裡吳州沉降的原因必須是地下水。」
「還有一點,改完後,其餘六城也得驗證。」陳柏言補充道。
「需要什麼,找魏峰。」
魏峰「嗯」了一聲。
接下來,蘇晚十分興奮地講起了她負責的農業與氣候模型。
「前幾個月我一直在調氣候的參數。」她說。
「每調一次,就拿同一套標準數據跑一遍,和驗證文檔做比對。文檔里記的,核心是牆上那些還沒發生的氣候災害,還有一部分歷年來的全球災害記錄。」
「從數據上看,最新這一版吻合度很高。」
「但這一次,報告裡多出了一個結果。」
「去年九月,北非西部發生了一次洪災。」
這件事,牆上沒寫,驗證文檔里沒有,林嶼也不知道。
「我當初以為是模型改出問題了。」
「但是,你們猜怎麼樣?」
「怎麼樣?」魏峰配合地當了回捧哏。
「我查了ERA5和WMO,這個事是真的。」
陸沉抬起頭。
「能確定麼?」
蘇晚點了點頭。
「Absolutely!國際新聞都報過。」
在場的人都笑了起來。
陸沉意識到,從這一刻開始,殼模型變成真模型的進度將不再是0%。方向沒有錯。
---
散的時候,天已經全黑了。
陸沉把硬碟裝回包里。蘇晚和陳柏言又開始爭論吳州的降水數據該歸到哪一類。
林嶼送他到倉庫門口。
「我回去翻了翻自己的東西。」陸沉說。
「四個多月前,我把北方幾十個重點城市近十年的InSAR全跑過一遍。」
「有輕微異常的,遠不止七城。」
「當時我以為多出來的城市都是噪聲。現在,我不敢確定了。」
林嶼沒說話,過了一會兒,把大衣的扣子繫上了。
「所以殼模型還不能拿出去見人,有破綻。」他說。
「而我們不能有破綻。報告丟出去被打假,就會失去人們的信任,那時,就全完了。」
陸沉點點頭。
「我回去後再多找些數據,研究研究。」
兩人在門口分開。
陸沉坐進車裡,發動引擎。
車燈亮起來,照見廠房門口那塊空地。
林嶼已經轉身往回走了。
---
接下來的每一天,陸沉都在模型調參的路上痛苦掙扎。
公司的事情實在沒時間搞了。
除了一些核心工作外,陸沉把手上的幾個常規項目全交給了下面的項目總監,美其名曰鍛鍊他們獨當一面的能力。
他仿佛能看到面前下屬們幽怨的目光。
但是模型的修改遠比他想的難。
近百條參數,每個都要找到說得通的解釋;幾千行代碼麵條一樣繞來繞去。
更要命的是,高質量的歷史災害數據本來就稀缺,很多國家的統計幾乎是空白——有天夜裡他為了一個參數翻了三個小時,只找到兩頁能用的數據。
每次改完還要編譯、驗證,時間根本不夠用。
想起給林嶼承諾的兩周時間,陸沉發現自己過分樂觀了。
雖然說了「至少」,但真搞兩個月,陸沉自己都覺得太過分。
一周時間快過去了,進度十分不妙。
昨天他又推掉了幾個本應親自參加的會。
再這樣下去,他這個高級合伙人所謂給下屬的「鍛鍊能力」,估計很快就要變成給自己「鍛鍊失業」了。
這樣下去不是辦法。
他想了想,拿起電話。
「幫我約一下技術中心的吳總和數據中心的張總。」
「就說我要做一個新的研究項目。一起討論下。」
---
兩天後,公司內部立了一個很小的專項。
名字也很普通:
「區域地質災害與地下工程風險預測研究。」
陸沉作為發起人親自主導。
自己部門出三個專家,技術中心出兩個軟體工程師,數據中心提供數據支撐。
目的是研究下一代的地下工程風險預測系統。
實際上是一舉多得。
明面上,還是在做公司的項目,之前推掉的那些事務說得過去了,還能避免因為過分摸魚被辭退。
錢是其次,重要的是這個身份不能丟。
暗地裡,繼續改造林嶼的模型,光明正大地借用公司的資源。
立項文件是他親自寫的,沒有一處提到「末日」或「全球」,通篇都是地質風險與地下空間研究。
公司高層表現得很支持,資源都給配到位了。
做成了,以後重大基礎設施的風險評估都能用上;沒做成,就當鍛鍊新人。怎麼都不虧。
還是背靠大樹好乘涼啊,陸沉心想。
他順理成章地從林嶼的模型中把地質模塊單獨抽出來。
刪刪改改,包裝成自己前一段時間研究的成果,拿到專項團隊裡分享。
技術中心的幾個工程師,第一次看到陸沉拿出來的代碼都驚了。
「陸總……」
「這份代碼是您寫的麼,稍微有點……那個,怎麼說呢……」
陸沉不好意思地咳了一聲,心想林嶼這傢伙的工程水平真是爛得出奇。這黑鍋還得我背。
「就是個demo,前段時間研究七城沉降數據的時候,有了些想法。」
「光顧著實現理論了,工程上的事情沒來得及考慮。」
「可能是粗糙了一點啊,但其實精準度還可以。麻煩你們給重構下。」
軟體工程師們看著代碼,半天沒說話。這何止是粗糙一點兒啊。
沒辦法,官大一級壓死人,何況還不止一級。
最起碼陸總的技術水平,公司里沒人懷疑,無非是這段代碼難以評價了一些。
改唄。
趁著軟體工程師優化代碼的時間,陸沉又找數據中心的同事專門整理了一份資料包,總計幾個T的數據。
核心是過去三十年國內的地質材料匯總,按年份、區域、級別分類,包括所有有公開數據記載的地質災害和地下工程事故。
接下來的一段時間,陸沉帶著他部門裡的地質、結構、水文專家開始了漫長的調研工作。
上百個參數被專家們按特徵、正則化係數、權重等拆分認領,每人負責一小部分的驗證工作。
期間有專家特意問陸沉這些參數是怎麼設置的。
陸沉語焉不詳,說是融合了國際最前沿理論的研究成果。
專家們也沒再追問。
陸沉心裡清楚,確實沒法說太「詳」,總不能說是根據林嶼上一世調的吧。
軟體重構的進度出乎意料的順利。
一個詞來形容就是:「脫胎換骨」。
原先寫死在函數裡的各類變量都抽到了各自的配置文件。
性能上更不必說。
林嶼的代碼只能說跑得起來,但軟體工程上的經典錯誤都犯了個遍。
這版代碼陸沉專門試了下:參數完全不變,之前要跑一個小時的數據集,這次不到5分鐘就跑完了。輸出的報告格式規整了不少,內容則和原模型一模一樣。
地質專家們的進度也很喜人。
在反覆的調參、驗證過程中,專家們發現模型對歷史數據中的事故災害回測准得出奇。
最後專家們在上百個參數中只找到幾個可能需要調整的參數。
於是紛紛感慨陸沉不愧是院士高徒,代碼雖然寫得抽象,但是技術水平不知道高到哪裡去了。
---
回測做完那天,陸沉在公司留到很晚。
他把七城的數據重新調出來,把沉降發生之後的部分一列一列刪掉,分別留下六個月前、一年前、兩年前的截面,跑了三次。
三次的結果都很接近。
即使看不到後面的沉降,模型依然給出了明確的風險提示。地下水異常、地表形變加速、管線應力超限,幾個信號在七城的報告裡幾乎同時亮起。
時間越往前推,信號出現得越早。
七城出事前大半年,有些異常就已經躺在公開數據里了。
全國城市那一輪掃描,篩出來的名單比七城多。
陸沉數了數。
十幾座。
有幾座城的信號,甚至比七城更早出現,只是還沒走到沉降那一步。
名單上的城市,大多都在他四個多月前跑的InSAR異常列表里。
---
第二天傍晚,陸沉帶著回測報告去了倉庫。
他把名單攤在鐵桌上。
蘇晚、陳柏言、魏峰都圍了過來。
「先說結論。」陸沉說,「模型我優化了一版。」
「用原版數據集測,七城被篩出來了。吳州沉降的原因,這次輸出的是地下水。」
他指著最後一頁的名單。
「再說範圍。這次模型篩出來的,不止七城。」
林嶼把名單拿過去,一頁一頁看。
「這些城市,」他說,「我沒有印象。」
「和北非的洪水一樣,不在我的記憶里。」
「驗證不了的,就不寫進報告。」林嶼說。
魏峰問:「名單上這些城市,需要提前做點什麼嗎?」
「先別做。」林嶼說,「還不能確定,再研究研究。」
陸沉點頭:「確實,得先驗清楚。我們的模型給的概率太高,別人不會認。我回去再組織幾個專家研究研究。」
蘇晚湊過來看了眼名單:「這幾座城的降水情況,我回頭也核實一下。」
「最後一個問題。模型給出的時間範圍很大,同一天沉降這個事,模型還是解釋不了。」陸沉說。
「先掛著。」林嶼說。
---
天已經黑了。
蘇晚先回的宿舍,魏峰開車送她。
陳柏言需要回家輔導兒子功課,也一起走了。
最後只剩下林嶼和陸沉。
「之前說的兩周,超了。」陸沉說。
「我按兩個月排的。」林嶼說。
陸沉看了他一眼。
「所以你沒有超。」林嶼說,「你提前了。」
「還有,昨天有人聯繫我了,說是江城的。」
「三標段和七城事件之後,他們不聯繫你才不正常。」
「我暫時沒給他們明確的答覆。地震和其他的不一樣,現有理論解釋不了我的預言。」
「你當初給的時間,對於地震來說,過於精確了。」
「當初是失策了。我昨晚看了下,之前模型的報告裡江城的部分邏輯漏洞很大,所以暫時用不了。」林嶼嘆了口氣。
「過擬合是這樣的,本質是從答案猜原因,錯了很正常。」
「我回去再調一調,這幾周下來我發現模型里有兩個參數其實挺有意思,說不定關鍵點就在這上面。」
「哪兩個?」
「就是你沒寫注釋的那兩個。」
「那可不只兩個。」林嶼笑了笑。
陸沉也跟著笑了笑。
兩人又聊了幾句,然後各自回家。
燈滅了,倉庫里只剩下排風扇的聲音。