錢瑾姝把燃料消耗的積分形式重新推導了一遍,用指數函式的複合形式構造了一個近函式,誤差控制在千分之一以,計算量只增加了不到百分之五。
張辰同時修改點法的主迴圈,把約束條件的雅可比矩陣計算優化了一下,去掉了一個冗餘的迴圈。
兩個小時後,兩邊的改都完了。張辰把程式碼合併,跑了一組簡單測試。程式執行正常,收斂到可行解,但目標函式值比預期高了百分之三。
“度不夠。”張辰盯著輸出結果,“千分之一的近誤差不應該導致百分之三的偏差。”
他重新看了錢瑾姝的近推導,翻了五分鐘,找到問題了。
“近函式的定義域沒卡。邊界附近的值被過度了,導致目標函式在可行域邊界上被低估。”張辰在推導的最後一頁指了指,“這裡加一個截斷,把邊界附近的區域單獨理。”
錢瑾姝湊過來看了一會兒,沒說話,拿起筆在紙上改了幾行。
張辰把新公式輸程式碼,重新編譯執行。這次偏差降到了百分之零點八。
“可以了。”張辰道。
接下來兩天,兩個人都在打磨細節。
張辰把約束條件的理流程重新梳理了一遍,二十多項約束按重要程度排序,把最的幾條放在最前面。
錢瑾姝同時做初始點選取策略——點法對初始點敏,選不好會收斂到不可行域。用了一種啟發式方法,從幾十個隨機初始點裡篩選出最優的一個,穩是穩了,但計算量大。
張辰看了的實現,覺得可以最佳化,“隨機篩選太慢。首接用問題的理特定一個初始點,比如把彈道近似拋線,解析解做初值。”
錢瑾姝猶豫了一下,還是照做了。新方法比隨機篩選快了十倍,而且收斂率更高。
兩天後的下午,演算法框架終於搭完。張辰寫了點法的主迴圈,錢瑾姝實現了約束條件的理和初始點選取。兩人坐在一起,準備跑第一個全流程測試用例。
程式跑起來了,進度條一格一格地走。張辰盯著螢幕,手指在桌上輕輕敲了兩下。錢瑾姝沒說話,眼睛也沒離開螢幕。
跑了不到一半,程式報錯——雅可比矩陣奇異。
張辰皺了皺眉,他把錯誤資訊看了兩遍,又翻出約束條件的梯度程式碼,一行一行地過。過了五六分鐘,他停在一行程式碼前。
“這裡錯了~~”張辰指著螢幕,“約束條件的梯度符號寫反了。應該是負的,我寫了正。”
錢瑾姝湊過來看,愣了一秒,“還真是。難怪奇異,符號反了導致矩陣的行列式接近零。”
張辰改過來,重新編譯執行。這次沒有再報錯,程式順利地跑到了最後。
第一個測試用例收斂,目標函式值比現有方案低了百分之七。
第二個用例,低了百分之九。
第三個用例,低了百分之十二。
“可以。”張辰靠在椅背上。
錢瑾姝把三組結果的資料整理表格,和現有方案做了個對比圖。差距很明顯,尤其是第三個用例,點法的收斂軌跡比序列二次規劃平得多,沒有震盪。
張辰把結果整理報告,發給了周明。郵件裡附了對比曲線和收斂分析,備註裡寫了一句話:“彈道最佳化初版己完,建議整合測試。”
半小時後,周明回了郵件。只有兩個字:“不錯。”
。倍兩的前之是度雜複的題問但,倍一了多組模據判比。天五了用,通跑到務任到接從,版初的組模化佳最道彈
。包布帆進放,住夾子夾用,好理整紙稿草把邊旁在姝瑾錢。明說改了寫裡釋註,庫本版到提碼式程把辰張
。道辰張”。排安哥周等來下接“
”。嗯“
。報彙部備準姝瑾錢和辰張知通明周,天三第的後通跑組模化佳最道彈
”?講誰倆們你“,口門室公辦在站明周”。聽要師總“
”。講我分部法算演,講分部模建。半一人一“,眼一姝瑾錢了看辰張
。了走轉,頭點了點明周
。料材報彙備準在都人個兩,天兩來下接
。理化的式函標目和類分件條束約出突點重,頁六到簡導推模建把姝瑾錢
。然瞭目一異差,上圖張一在畫跡軌斂收的案方有原和法點把,圖線曲比對了做辰張
。午上五週在排安報彙
。邊兩在坐散師程工的組案專個幾他其,邊旁他在坐明周,置位間中的桌條長在坐師總。人個來十了坐,大不室議會
。下一了斷打師總,時近的式函標目不到講。完看人夠好剛間時的留停TPP頁一每,快不速語。遍一了過架框的模建把,前幕影投到走,來起站。講先姝瑾錢
”?多差誤“
”。的來下降三之分千從,正修斷截了做來後辰張“,道姝瑾錢”。八之分千“








