第八十章 :毫無懸念的第一名!
腦海中的思緒流轉著,忽的,一道聲音從這片空間的遠方傳來。
「韓川?韓川?」
銀藍色的微光從意識的邊緣急速褪去,具現化空間中的所有圖像在同一瞬間消散,眼前重新變成了電腦屏幕上那個被切成馬賽克的離散網格。
韓川眨了眨眼,轉頭看向聲音的來源。
教室中,許志遠手裡拿著三瓶冰水正看著他,臉上帶著疑惑和關切詢問道:「你沒事吧?」
「剛才你一動不動地盯著屏幕看了快十分鐘,我叫了你好幾聲都沒反應。」
說著,他將手中的一瓶水遞了過來:「喝點水?」
伸手接過冰水,韓川抿了一口潤了潤有些乾燥的嗓子,開口道:「沒事,剛剛只是在思考如何測控點的最優化方案。」
許志遠看了過來,好奇地問道:「有思路?」
「嗯。」
韓川點點頭,道:「有一點,不過要驗證一下才能知道能不能走通。」
說著,他從桌上拾起一張稿紙,那上面還殘留著上午推導離散化方案時畫的網格圖。
將這張稿紙翻過來後,韓川拿起筆在空白處畫了一條光滑的封閉曲線。
隨後,他在這條曲線的幾個不同位置,畫了一組互相垂直的小箭頭,每個箭頭沿著曲線在該點的切向和法向。
「這是什麼?」
一旁,看著他畫完曲線圖後,許志遠有些疑惑地問道。
「活動標架!」
韓川嘴裡吐出四個字,緊接著解釋道:「網格離散化求解會漏掉最優解,啟發式算法又只能找到局部次優解。」
「所以我剛剛就在思考,能不能將把地球表面看作一個二維流形,把每個測控站的覆蓋區域看作流形上的一個隨時間變形的局部鄰域。」
「這樣一來,覆蓋區域的邊界是流形上的一條曲線!」
「而這條曲線的變形規律可以用活動標架來描述,其每一個邊界點都有一個局部標架,標架的方向由覆蓋半徑和地球曲率共同決定......」
一旁,許志遠盯著稿紙上的曲線圖,皺著眉頭思索著。
過了好一會,他才有些為難地開口道:「能詳細地解釋一下嗎?」
雖然參加過兩屆全國數學建模大賽,但他終究不是數學專業的。
對於韓川解釋的這些概念和數學算法理解的有些一知半解,弄懂了一部分,但還有不少地方都沒弄明白。
聞言,韓川拿起筆,用數學方法講解了一遍後,想了下,他又補充道。
「簡單的來說,離散化方法本質上就像是登一座山的台階,通過台階去靠近山頂。」
「但你知道的,台階就算是鋪的再小,也還是台階。」
「而我所說的這種方法可以看成不要台階,直接在斜坡上行走,每一步都踩在斜坡本身的傾斜度上。」
這一次許志遠倒是聽懂了,他若有所思地開口道:「那地球自轉和的軌道傾角導致的漂移怎麼處理?」
聞言,韓川笑了下,拿起筆在稿紙上加了個小箭頭:「簡單,增加一個自轉角速度旋轉項就可以。」
「在數學上,地球的自轉可以看作流形上的一個整體旋轉,把這個旋轉加到每個標架的變化方程里....」
聽到這,許志遠眼前一亮,帶著些興奮的神色迅速補充道:「明白了!」
「那軌道傾角的影響是不是也可以這樣處理?」
韓川打了個響指,笑道:「對!」
「軌道傾角會讓衛星的星下點軌跡偏離大圓弧,這個偏離量可以分解到標架的切向和法向分量上,作為標架方程的修正項。」
「我試試!」
說著,許志遠迅速拉過旁邊的筆記本電腦,在代碼窗口裡飛快地敲著。
活動標架的數學框架他不完全懂,但韓川在稿紙上已經寫明了的標架夾角趨近於零這個優化目標對他來說太清晰了。
這就是一個約束方程組,變量是測控站的經緯度坐標,約束條件是每對相鄰站點的標架夾角大於等於零。
而目標函數則是最小化站點總數。
從建模的角度上來說,這就是一個標準的連續優化問題,不需要離散化,不需要啟發式搜索。
他可以用MATLAB的非線性約束優化工具箱直接求解。
手指在鍵盤上飛速地敲擊著,鍵盤聲在實驗室里響了大概二十分鐘。
和做正規的建模訓練不同的是,這一次許志遠只需要做一個大概就行了。
再加上韓川已經在稿紙上把算法流程畫得足夠清晰了:每個測控站覆蓋邊界的活動標架如何定義,相鄰標架之間的夾角如何計算,地球自轉的旋轉項加在哪個位置,軌道傾角的修正項怎麼分解到切向和法向分量。
可以說每一步都用箭頭標出了輸入和輸出,變量命名也寫在旁邊。
他要做的就是把這張流程圖翻譯成MATLAB語言而已,這對於他來說並不難。
當最後一行代碼落下,許志遠敲下了運行鍵。
屏幕上的命令窗口開始刷屏,一行行疊代日誌飛速滾過。
很快,一張覆蓋了整個地球的曲線圖在電腦屏幕上展開,監測站和衛星的交界線用白色的虛線標記了出來。
「不可思議!」
盯著屏幕上的數字和曲線,許志遠忍不住咽了口唾沫,滿臉的驚訝和興奮。
「所有夾角全部大於零,最小的也有零點三度,大部分區域都在一度以上,幾乎沒有盲區!」
滾動著滑鼠,他不敢置信地調出了原始參數和熱力圖數據。
最小的夾角區域在好望角,夾角是零點三度,意味著在好望角附近有兩個檢測站相距相對較遠,導致第三個站必須更大才能覆蓋空白區域。
簡單地來說,就像是手機的信號站一樣,前兩個信號站的信號覆蓋區域比較小,有部分區域信號就會較弱,需要第三個信號站來做補充。
但即便是沒有第三個信號站,覆蓋較弱區域也不是完全沒有信號,只是強度較低而已。
這份數據,不誇張地說,拿到去年的國賽上去,即便現在只是一個粗糙的版本,也能夠直接拿到第一名!
而且是毫無懸念的第一名!
因為去年這道題最優秀的國一,在全球布了十三個站的基礎上,覆蓋率也只不過是百分之九十八點七而已。
而他在韓川提供的數學建模上寫出來的代碼,覆蓋率達到了百分百!
「韓川?韓川?」
銀藍色的微光從意識的邊緣急速褪去,具現化空間中的所有圖像在同一瞬間消散,眼前重新變成了電腦屏幕上那個被切成馬賽克的離散網格。
韓川眨了眨眼,轉頭看向聲音的來源。
教室中,許志遠手裡拿著三瓶冰水正看著他,臉上帶著疑惑和關切詢問道:「你沒事吧?」
「剛才你一動不動地盯著屏幕看了快十分鐘,我叫了你好幾聲都沒反應。」
說著,他將手中的一瓶水遞了過來:「喝點水?」
伸手接過冰水,韓川抿了一口潤了潤有些乾燥的嗓子,開口道:「沒事,剛剛只是在思考如何測控點的最優化方案。」
許志遠看了過來,好奇地問道:「有思路?」
「嗯。」
韓川點點頭,道:「有一點,不過要驗證一下才能知道能不能走通。」
說著,他從桌上拾起一張稿紙,那上面還殘留著上午推導離散化方案時畫的網格圖。
將這張稿紙翻過來後,韓川拿起筆在空白處畫了一條光滑的封閉曲線。
隨後,他在這條曲線的幾個不同位置,畫了一組互相垂直的小箭頭,每個箭頭沿著曲線在該點的切向和法向。
「這是什麼?」
一旁,看著他畫完曲線圖後,許志遠有些疑惑地問道。
「活動標架!」
韓川嘴裡吐出四個字,緊接著解釋道:「網格離散化求解會漏掉最優解,啟發式算法又只能找到局部次優解。」
「所以我剛剛就在思考,能不能將把地球表面看作一個二維流形,把每個測控站的覆蓋區域看作流形上的一個隨時間變形的局部鄰域。」
「這樣一來,覆蓋區域的邊界是流形上的一條曲線!」
「而這條曲線的變形規律可以用活動標架來描述,其每一個邊界點都有一個局部標架,標架的方向由覆蓋半徑和地球曲率共同決定......」
一旁,許志遠盯著稿紙上的曲線圖,皺著眉頭思索著。
過了好一會,他才有些為難地開口道:「能詳細地解釋一下嗎?」
雖然參加過兩屆全國數學建模大賽,但他終究不是數學專業的。
對於韓川解釋的這些概念和數學算法理解的有些一知半解,弄懂了一部分,但還有不少地方都沒弄明白。
聞言,韓川拿起筆,用數學方法講解了一遍後,想了下,他又補充道。
「簡單的來說,離散化方法本質上就像是登一座山的台階,通過台階去靠近山頂。」
「但你知道的,台階就算是鋪的再小,也還是台階。」
「而我所說的這種方法可以看成不要台階,直接在斜坡上行走,每一步都踩在斜坡本身的傾斜度上。」
這一次許志遠倒是聽懂了,他若有所思地開口道:「那地球自轉和的軌道傾角導致的漂移怎麼處理?」
聞言,韓川笑了下,拿起筆在稿紙上加了個小箭頭:「簡單,增加一個自轉角速度旋轉項就可以。」
「在數學上,地球的自轉可以看作流形上的一個整體旋轉,把這個旋轉加到每個標架的變化方程里....」
聽到這,許志遠眼前一亮,帶著些興奮的神色迅速補充道:「明白了!」
「那軌道傾角的影響是不是也可以這樣處理?」
韓川打了個響指,笑道:「對!」
「軌道傾角會讓衛星的星下點軌跡偏離大圓弧,這個偏離量可以分解到標架的切向和法向分量上,作為標架方程的修正項。」
「我試試!」
說著,許志遠迅速拉過旁邊的筆記本電腦,在代碼窗口裡飛快地敲著。
活動標架的數學框架他不完全懂,但韓川在稿紙上已經寫明了的標架夾角趨近於零這個優化目標對他來說太清晰了。
這就是一個約束方程組,變量是測控站的經緯度坐標,約束條件是每對相鄰站點的標架夾角大於等於零。
而目標函數則是最小化站點總數。
從建模的角度上來說,這就是一個標準的連續優化問題,不需要離散化,不需要啟發式搜索。
他可以用MATLAB的非線性約束優化工具箱直接求解。
手指在鍵盤上飛速地敲擊著,鍵盤聲在實驗室里響了大概二十分鐘。
和做正規的建模訓練不同的是,這一次許志遠只需要做一個大概就行了。
再加上韓川已經在稿紙上把算法流程畫得足夠清晰了:每個測控站覆蓋邊界的活動標架如何定義,相鄰標架之間的夾角如何計算,地球自轉的旋轉項加在哪個位置,軌道傾角的修正項怎麼分解到切向和法向分量。
可以說每一步都用箭頭標出了輸入和輸出,變量命名也寫在旁邊。
他要做的就是把這張流程圖翻譯成MATLAB語言而已,這對於他來說並不難。
當最後一行代碼落下,許志遠敲下了運行鍵。
屏幕上的命令窗口開始刷屏,一行行疊代日誌飛速滾過。
很快,一張覆蓋了整個地球的曲線圖在電腦屏幕上展開,監測站和衛星的交界線用白色的虛線標記了出來。
「不可思議!」
盯著屏幕上的數字和曲線,許志遠忍不住咽了口唾沫,滿臉的驚訝和興奮。
「所有夾角全部大於零,最小的也有零點三度,大部分區域都在一度以上,幾乎沒有盲區!」
滾動著滑鼠,他不敢置信地調出了原始參數和熱力圖數據。
最小的夾角區域在好望角,夾角是零點三度,意味著在好望角附近有兩個檢測站相距相對較遠,導致第三個站必須更大才能覆蓋空白區域。
簡單地來說,就像是手機的信號站一樣,前兩個信號站的信號覆蓋區域比較小,有部分區域信號就會較弱,需要第三個信號站來做補充。
但即便是沒有第三個信號站,覆蓋較弱區域也不是完全沒有信號,只是強度較低而已。
這份數據,不誇張地說,拿到去年的國賽上去,即便現在只是一個粗糙的版本,也能夠直接拿到第一名!
而且是毫無懸念的第一名!
因為去年這道題最優秀的國一,在全球布了十三個站的基礎上,覆蓋率也只不過是百分之九十八點七而已。
而他在韓川提供的數學建模上寫出來的代碼,覆蓋率達到了百分百!