體系化學習運籌學基礎算法的實踐和總結

文章目錄

  • 引言
  • 目標設計
  • 目標實踐
  • 文章匯總
  • 經驗總結
  • 一則預告

引言

眨眼間已經12月了,眼看著2023年馬上要過完了。

女朋友最近總說,工作以后感覺時間過的好快。事實上,我也是這么認為的。年紀越大,越會擔心35歲危機的降臨。所以,人還是應該持續學習和進步的。具體來說,就是在工作時間之外,每年都能有一些關于自身的成長。

23年初,我給自身成長設置了一系列目標,其中之一就是體系化。這里的體系化,主要包含兩項,第一項是運籌學基礎算法的體系化,第二項是機器學習算法的體系化。到了年尾,應該為一年的工作做一個總結了。

本文將著重分享今年在第一項(運籌學基礎算法)上的實踐和總結,后續文章將再聊另外一個內容。

正文見下。

目標設計

科學體系化的方式,私以為應該是參考各種專業書的目錄,然后結合自己的認知,做個性化設計。 舉個例子,《運籌學》(清華大學出版社)這本書是直接從線性規劃問題開始的,但是求解線性規劃問題的單純形法,對我來說已經比較復雜,不能算入門了。

下圖是我今年初給自己安排的體系化學習目標。

我認為,學習過程要從簡單到復雜。而最簡單的運籌問題,應該是一維無約束問題,在此基礎上再提升問題維度和增加不同類型的約束條件。這些內容,在我年初的體系化學習目標中被歸類為非線性規劃模塊。現在想來,“非線性規劃”這個模塊的標題并不是很準確,不過也沒想到更好的,就繼續用這個吧。

理解了以上普適性較好的基本算法體系后,我覺得才適合來研究線性/整數規劃這一類在實際業務中被廣泛研究的問題和對應的求解算法。

除了非線性規劃、線性規劃和整數規劃外,還要學習智能優化算法的主要原因,是我覺得這些算法的改進嘗試中,針對迭代方向和迭代步長的設計很有藝術感,雖然缺乏嚴格的數學證明,但在實踐中已經被證明為非常有效的手段。

目標實踐

對于大部分算法,我給自己預設的目標是兩周學習完,這樣最終評估下來能有19周的剩余時間。

從剩余時間來說,我給自己安排的計劃,算是比較寬松的。我一直覺得,工作和學習應該是為生活服務的,如果發生了沖突,那幸福的生活體驗應該放在第一位。所以我從一開始就沒想著給自己太大的壓力,如果覺得有些累了,偷懶玩游戲、看視頻,甚至只是無聊發呆,也不會有太大的負罪感。

實際也是如此——從完成度來看,我最后一篇文章是VNS,11月12號完成的,距離12月31號只剩6周,也就是說我在年中的時候荒廢了13周左右的時間。

我對算法學習完成的定義是,寫一篇與算法內容對應的文章,里面至少應該包含2個模塊:

第一個是用自己的邏輯描述清楚算法原理。我對自己的要求是,讓算法小白都能看懂內容,如果未來真的有機會教書育人,這應該是我寶貴的財富了;

第二個是自己編寫代碼實現算法全過程。我對自己的要求是,分別用Python和Java編程實現,以驗證自己是否真的理解了算法原理,同時提升代碼能力。

從實際完成度來看,每一個算法相關的文章都算是及格了。對算法原理的描述,我還是比較滿意的,特別是收到小伙伴們的暖心評論和留言時,都會備受鼓舞。在代碼實現方面,并沒有達到預期,開始階段一些簡單的算法還能用Python和Java分別實現,到了中后期算法復雜度提升后就有些力不從心了。在認清現實后,我去掉了使用Java實現算法過程的目標。針對特別復雜的算法,甚至都不要求自己手寫了。

看,我就是這么容易和自己和解。

文章匯總

本節匯總了近一年運籌學基礎算法的相關文章和鏈接,并按照此前的目標設計進行了分類。

分類文章和鏈接
非線性規劃-黃金分割法Python和Java代碼實現:黃金分割法求解一維最優化問題
非線性規劃-切線法Python和Java代碼實現:切線法求解一維最優化問題
非線性規劃-坐標輪轉法Python代碼實現:坐標輪換法求解多維最優化問題
非線性規劃-梯度類算法梯度類算法原理:最速下降法、牛頓法和擬牛頓法
擬牛頓法:python代碼實現
非線性規劃-間接法求解包含約束的最優化問題:拉格朗日乘子法和KKT條件
非線規劃-直接法求解包含約束的最優化問題:罰函數法
線性規劃-單純形法線性規劃和單純形法-原理篇
線性規劃模型-工程應用篇
線性規劃-整數規劃求解整數規劃問題的割平面法和分支定界法
稍微憋個招,聊聊為什么不能止步于會調求解器
線性規劃-對偶問題線性規劃對偶問題:理論推導和實際應用
智能優化-DE差分進化算法,依舊強勢
智能優化-ACO蟻群算法求包含34個國內城市的TSP,和最優解相差沒那么大
智能優化-ALNS著實不錯的自適應大鄰域搜索算法ALNS

經驗總結

關于這一年來對于運籌算法的學習和感悟,總結如下:

首先,這些算法在運籌學中算是基礎內容。通過對這些知識點的學習和總結,我自身受益匪淺,在一定程度上彌補了我因為非科班出身導致基礎知識儲備的欠缺。不過這只是一個開始,隨著認知的提升,可能會發現未知的內容也越來越多,后續還有很多內容需要去慢慢探索。

其次,在學習上我是偏應用導向的。當初選擇運籌學作為自己未來長期從事的行業,主要是覺得把這些算法策略應用到實際場景中能帶來極大的成就感,所以我不太會執著于理論上的推導,在學習知識時,會優先選擇工業實踐中最常用的運籌算法,并輔以部分基礎的算法原理,以知其然并知其所以然。

最后,這些知識點的串聯方式是基于我目前的認知。圖中的分類僅依賴于我當前體系化學習的實踐路徑,算不上權威,可以作為大家構建自己知識體系的參考。

一則預告

明年運籌優化領域的文章主題,偷偷預告一下,大概率是隨機優化和魯棒優化,即,模型輸入存在不確定性情況下的最優決策。

具體的學習路徑,我還沒思考清楚——當然了,即使已經想清楚了,我也不會直接公開出來,大概率會類似于這樣,等明年年底總結吧!

最后的最后,愿大家都能持之以恒地做一件件小事,慢慢努力,驚艷眾人。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213098.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Xubuntu16.04系統中使用EDIMAX EW-7822UAC無線網卡開啟5G自發AP

目錄 1.關于 EDIMAX EW-7822UAC2.驅動安裝3.查看無線網卡信息3.通過create_ap配置5G自發AP 1.關于 EDIMAX EW-7822UAC 官網介紹 https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_ac1200_dual-band/ew-7822uac/ 詳細參數…

Python開發運維:Python項目發布到K8S集群

目錄 一、實驗 1.Python項目發布到K8S集群 一、實驗 1.Python項目發布到K8S集群 (1)獲取應用程序代碼 #把hello-python.tar.gz壓縮包上傳到k8s控制節點master1的root下,手動解壓 tar zxvf hello-python.tar.gz (2&#xff0…

【Linux】進程周邊001之進程概念

👀樊梓慕:個人主頁 🎥個人專欄:《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C》《Linux》 🌝每一個不曾起舞的日子,都是對生命的辜負 目錄 前言 1.基本概念 2.描述進程-PCB…

LeetCode5.最長回文子串

昨天和之前打比賽的隊友聊天,他說他面百度面到這道算法題,然后他用暴力法解的,面試官讓他優化他沒優化出來,這道題我之前沒寫過,我就想看看我能不能用效率高一點的方法把它做出來,我一開始就在想用遞歸或者…

springboot(ssm滁州市特產銷售系統 特產商城系統Java系統

springboot(ssm滁州市特產銷售系統 特產商城系統Java系統 開發語言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服務器:tomcat 數據庫:mysql 5.7(或8.0) …

解決錯誤:sudo debtap -u curl: (22) The requested URL returned error: 404

具體錯誤 $ sudo debtap -u > Synchronizing pkgfile database... :: Updating 2 repos...core is up to dateextra is up to date > Synchronizing debtap database...% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload …

設計CPU功能的數字電路

實驗目的(1)熟悉Multisim 電路仿真軟件的操作界面和功能; (2)掌握邏輯電路綜合設計,并采用仿真軟件進行仿真。 實驗內容1.試設計一個簡易CPU功能的數字電路,實驗至少要求采用4個74HC/HCT194作為4個存儲單元(可以預先對存儲單元存儲數據),74HC283作為計算單元。請實現…

用相似對角矩陣加速矩陣的冪,以斐波那契數列為例

《用相似對角矩陣加速矩陣的冪,以斐波那契數列為例》 在計算機科學和線性代數領域,矩陣的冪是一個常見而重要的問題。特別是對于大型矩陣,直接計算冪可能會變得十分耗時。然而,通過相似對角矩陣的方法,我們能夠以更為…

多維時序 | MATLAB實現RIME-CNN-LSTM-Multihead-Attention多頭注意力機制多變量時間序列預測

多維時序 | MATLAB實現RIME-CNN-LSTM-Multihead-Attention多頭注意力機制多變量時間序列預測 目錄 多維時序 | MATLAB實現RIME-CNN-LSTM-Multihead-Attention多頭注意力機制多變量時間序列預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本介紹 MATLAB實現RIME-CNN-…

python字符串格式化--數字精度控制和快速寫法與表達式格式化

數字精度控制 我們可以使用m.n來控制數字的寬度和精度: m是寬度,設置必須為數字,且如果設置的數字小于本身,則不生效n控制小數點精度,必須為數字,會進行四舍五入 示例: 5d:是將寬…

idea本地調試hadoop 遇到的幾個問題

1.DEA對MapReduce的toString調用報錯:Method threw ‘java.lang.IllegalStateException‘ exception. Cannot evaluate org.apache.hadoop.mapreduc 解決方法:關閉 IDEA 中的啟用“ tostring() ”對象視圖 2.代碼和hdfs路徑都對的情況下,程序…

架構設計系列之基礎:初探軟件架構設計

11 月開始突發奇想,想把自己在公司內部做的技術培訓、平時的技術總結等等的內容分享出來,于是就開通了一個 Wechat 訂閱號(灸哥漫談),開始同步發送內容。 今天(12 月 10 日)也同步在 CSDN 上開通…

文章解讀與仿真程序復現思路——電力系統自動化EI\CSCD\北大核心《面向微電網群的云儲能經濟-低碳-可靠多目標優化配置方法》

這篇文章的標題涵蓋了以下關鍵信息: 面向微電網群:研究的重點是微電網群,這可能指的是多個微電網系統的集合,而不僅僅是一個單獨的微電網。微電網是指由分布式能源資源、儲能系統和智能控制組成的小型電力系統,通常能夠…

記錄每日LeetCode 406.根據身高重建隊列 Java實現

題目描述: 假設有打亂順序的一群人站成一個隊列,數組 people 表示隊列中一些人的屬性(不一定按順序)。每個 people[i] [hi, ki] 表示第 i 個人的身高為 hi ,前面 正好 有 ki 個身高大于或等于 hi 的人。 請你重新構…

《C++新經典設計模式》之附錄A 類和對象

《C新經典設計模式》之附錄A 類和對象 A.1 靜態對象的探討與全局對象的構造順序A.1.1 靜態對象的探討A.1.1.cpp A.1.2 全局對象的構造順序問題A.1.2.cpp A.2 拷貝構造函數和拷貝賦值運算符A.2.1 拷貝構造函數和拷貝賦值運算符的書寫A.2.1.cpp A.2.2 對象自我賦值產生的問題A.2.…

實現加鹽加密方法以及java nio中基于MappedByteBuffer操作大文件

自己實現 傳統MD5可通過彩虹表暴力破解, 加鹽加密算法是一種常用的密碼保護方法,它將一個隨機字符串(鹽)添加到原始密碼中,然后再進行加密處理。 1. 每次調用方法產生一個唯一鹽值(UUID )密碼…

UDS診斷 10服務

文章目錄 簡介診斷會話切換請求和響應1、請求2、子功能3、肯定響應4、否定響應5、特殊的NRC 為什么劃分不同會話報文示例UDS中常用 NRC參考 簡介 10服務,即 Diagnostic Session Control(診斷會話控制)服務用于啟用服務器中的不同診斷會話&am…

(四) python門面模式

文章目錄 4.1 結構型設計模式4.1.1 簡介4.1.2 常見的幾種結構型設計模式 4.2 理解門面設計模式4.2.1 門面設計模式概述4.2.2 門面設計模式的作用 4.3 UML類圖4.3.1 門面4.3.2 系統4.3.3 客戶端 4.4 門面模式的代碼實現4.4.1 場景:4.4.2 python實現 4.5 原理&#xf…

Compose for iOS:kotlin 與 swift 互操作

前言 類似于 Android 上的 compose,在 iOS 上的 compose 同樣支持嵌套顯示 compose UI 和 swiftUI 或是 uikit 。 但是不同于 Android 原生就是使用 kotlin 作為開發語言,iOS 的開發語言是 swift 或者 object-c 。雖然大多數業務邏輯都可以直接使用 ko…

渲染(iOS渲染過程解析)

渲染 渲染原理 一個硬核硬件科普視頻 CPU和GPU CPU(Central Processing Unit):現代計算機整個系統的運算核心、控制核心,適合串行計算。GPU(Graphics Processing Unit):可進行繪圖運算工作的…