什麼是最佳化技術?給演算法小白同學的快速講解和上手文
來源:阿里雲開發者
阿里妹導讀
背景
一、術語定義
二、快速get理解最佳化是什麼
引用說明:下面的公式均來自 MindOpt新發布的基於大模型的“AI工程師”MindOpt Copilot 生成的內容截圖,或者案例廣場公開內容截圖。大家也可以進去聊天生成自己需要的示例公式和程式碼。
2.1 方程:一個雞兔同籠問題
有一籠兔子和雞,兔子和雞各有一個頭,兔子有4只腳,雞有兩隻腳。籠子上有 35 個頭,下有94 個腳。請問兔子和雞的數目各是多少?
這個時候算出來的結果是:
- 兔子的數量x=12
2.2 不等式方程組+目標函式:
雞兔同籠問題的最佳化問題
有一籠兔子和雞,兔子和雞各有一個頭,兔子有4只腳,雞有兩隻腳。籠子上有頭至少有30個,下面腳至多80個。要想兔子最多,請問最多有多少個兔子?
對應的數學公式的約束就是個不等式的關係:最多,最少。subject to 就是約束的意思,有時會寫成 st.。
增加了目標,想要兔子最多。對應 maximize x,也就是最佳化的目標函式 f = x,最佳化方向是最大化。
如果只考慮不等式的約束,解可能就是個域(有多種解、多個可行域)。比如 x=1,y=29; x=3,y=29; x=3, y= 30……等等;
增加了要將x最大化這個目標,就相當於在這個域裡面找最大值。這個時候可以利用最佳化求解器進行計算,得出最優目標時候的變數取值,如下:
- 兔子的數量 x=10,
三、擴充思路
3.1 擴充應用場景
例1. 電商網際網路常見的廣告資源的安排:
電商平臺要為一家新興手遊公司進行廣告推廣,平臺有兩種廣告型別可供選擇:型別A、型別B、型別C。廣告型別A的轉化率為5%,每投放一次費用為10元;廣告型別B的轉化率為8%,每投放一次費用為15元; 廣告型別B的轉化率為7.7%,每投放一次費用為12元。手遊公司需要至少獲得1000次投放,並且總費用不能超過20000元。每種型別廣告都希望至少投放5次。平臺希望最大化累計轉化數,要如何規劃廣告投放?
廣告型別A投放次數=5 廣告型別B投放次數=6 廣告型別C投放次數=1655 - 目標函式值 = 128.165 為了最大化累計轉化數,電商平臺應該投放5次型別A的廣告(每次轉化率為5%,每次費用為10元),6次型別B的廣告(每次轉化率為8%,每次費用為15元),以及1655次型別C的廣告(每次轉化率為7.7%,每次費用為12元)。此時,累計轉化數最大,為128.165次。
假設一家公司想要給每位員工至少提供以下三種福利中的一種:健身房、健康保險和午餐補貼。給每個員工提供使用健身房需支付50元,健康保險需支付20元,午餐補貼需支付15元。公司有100名員工,每天福利投入的成本上限是4000。公司希望最小化支出,同時儘可能多地為員工提供福利,每種福利至少有30份。該如何規劃福利?
提供健身房福利的員工人數=30 提供健康保險福利的員工人數=30 提供午餐補貼福利的員工人數=40 - 目標函式值 = 2700 為了最小化福利支出,同時儘可能多地為員工提供福利,公司應該為30位員工提供健身房福利(每人每天成本50元),為30位員工提供健康保險福利(每人每天成本20元),併為40位員工提供午餐補貼福利(每人每天成本15元)。這樣,每天的福利支出最低,為2700元。
3.2 擴充問題維度和型別
線性、非線性:最佳化問題裡面常說的“線性”就是一次關係,y =3x就是一次的,線性關係。y = 4 *x*x 就是二次的,屬於非線性關係。當前大部分最佳化問題是著重處理線性關係和二次關係,再高次就不好解了。
連續變數、整數變數:變數x的取值型別。如果有的變數只能是整數,不能是小數,或者說是“離散的”。與之相對的是“連續的”。離散的問題最佳化起來會方法不一樣,會變困難,因此經常有問題需要鬆弛下,使得變為連續的。
問題 “凸” 和 “非凸”。凸最佳化是個研究生課程,比較難。普通人需要掌握凸問題更好求解,非凸不好求解。因此列數學公式描述業務問題時,儘量避免非凸的情況。比如儘量是線性的關係。多次的關係很容易出現非凸的情況。
3.3 更豐富的最佳化問題型別列表
線性規劃,英文是Linear Programming,簡稱LP,對應的數學目標函式是線性關係;
如果加上變數有些是整數(integer),則組合成MILP(Mixed Integer Programming),混合整數的線性規劃問題;
如果目標裡面有二次項,則稱為二次規劃 QP(Quadratic Programming);
如果約束裡面有二次項,則稱為二次約束規劃 QC (Quadratic Constraint),組合還有QCQP;
再進一步的根據目標約束的型別,還可以進一步分類描述不同型別的問題,很多種;
再進一步,根據問題的最佳化計算方式,還可以取名字,比如零階最佳化、黑盒最佳化、梯度下降、無梯度最佳化等;
四、最佳化問題的應用
五、最佳化問題的求解計算
5.1 計算方法
- 是否能求解
- 求解速度
- 穩定性
- 大規模問題求解能力和計算資源佔用
5.2 有哪些軟體可選?
國際上
CPLEX:美國/IBM。網址:。 IBM的老牌產品,歷史悠久,企業使用者多。現在研發團隊維護少了,對於時效要求高的場景可能不支援。
Gurobi:美國/Gurobi。網址:。當前世界頂尖的求解器,部分成員曾任職CPLEX,MILP的效能國際第一。費用比較貴,大約幾十萬/1年/1併發。
Xpress:加拿大/FICO。網址:
Mosek:丹麥/Mosek。網址:
LocalSolver:法國/LocalSolver。網址:
LINGO:美國/LINDO。網址:
COIN-OR:開源組織,收錄了很多種不同的開源求解器。網址:
SCIP:開源的求解器。網址:
GLPK:開源的求解器。網址:
國產的:MindOpt,阿里的求解器
MindOpt:中國/阿里達摩院。
當前支援:
LP、MILP、CQP、SDP這些數學規劃求解。可下載使用。網址: 。根據網頁指引,直接在阿里雲產品平臺https://help.aliyun.com/document_detail/298275.html 下載軟體和獲取免費License。
模擬最佳化 (零階最佳化、黑盒最佳化,可用於調參),未公開下載,需要聯絡 @有悠。
新手推薦用MindOpt線上的平臺,不需要安裝直接先學會使用,Notebook中直接碼程式碼,上手學習更快捷。還有自研的代數建模語言、以及AI技術結合開發、大模型技術結合自動建模和碼程式碼的方案,更貼合現代的AI+運籌結合的技術趨勢。
COPT:中國/杉數。網址: 。根據頁面指引填寫資訊申請安裝包和License。國內研發的早的公司,求解效果不錯。
這個功能和阿里的求解器MindOpt差異不大,目前主要優勢是數學規劃的求解能力全一些。可以提需求給MindOpt研發團隊做針對性調優。
而且,用MindOpt APL建模語言程式設計,是可以輕鬆一行程式碼就換呼叫COPT的!不用糾結一開始選誰家的。
電力能源領域,這個問題規模非常大,海外求解器已經搞不定的行業。 MindOpt透過專案合作定製調優,整體最優。友商結果並沒有我們優秀。
5.3 其他求解方法
六、最佳化技術使用難點、推薦上手方案
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024924/viewspace-2996989/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 給女朋友講解什麼是代理模式模式
- 為什麼甲骨文是技術的川普
- 給女朋友講解什麼是Optional【JDK 8特性】JDK
- 恆訊科技講解:伺服器虛擬化技術是什麼?有什麼用?伺服器
- 11行虛擬碼給你講明白什麼是演算法演算法
- Jazz 你瞭解是什麼技術
- 給產品經理講講,什麼是持續交付和DevOpsdev
- 小白怎麼學習短視訊剪輯?怎樣快速上手?
- 什麼是CDN?CDN的技術原理是什麼?
- vr全景技術是指什麼?什麼是vr全景技術?VR
- 給一位做技術迷茫的同學回信
- 圖文詳解:如何給女朋友解釋什麼是微服務?微服務
- 什麼是cdn技術
- 什麼是java?為什麼大家都學習java技術?Java
- [技術討論]什麼是正確的學習和研究態度
- 前端 101:給不瞭解前端的同學講前端前端
- Vue同構(一): 快速上手Vue
- 什麼是技術債,為什麼要還技術債?
- 什麼是好的技術文件?
- 技術美術師是做什麼的?
- 【計算講談社】第八講|AI 技術的“紡織業”是什麼?AI
- 解讀什麼是遠端訪問技術
- 你瞭解什麼是技術債務嗎?
- 什麼是CDN加速技術
- 隧道代理技術是什麼?
- 製造和新的自動化技術是什麼?
- 學技術的同學不要盲目
- 影片CDN的技術原理是什麼?
- 技術長:CTO是做什麼的
- Linux小白如何快速上手Linux?Linux
- Linux是什麼?為什麼推薦學習Linux技術?Linux
- 小白快速上手搭建屬於自己的網站網站
- 實在RPA給你展示什麼是真正的OCR識別技術
- httpdns是個什麼技術,有什麼用httpdDNS
- 講給小白聽的Promise原理剖析Promise
- 美顏sdk是什麼?美顏技術詳解
- 來自騰訊的乾貨:深度講解VIEWPORT和PX是什麼View
- 什麼是Code-Behind技術