“優(yōu)化”是生活中經(jīng)常使用的詞:開車時(shí)希望能在安全的前提下以最短時(shí)間到達(dá)目的地;雙11做功課考慮各種優(yōu)惠活動(dòng),希望獲得最大優(yōu)惠;超市進(jìn)貨時(shí)需要考慮動(dòng)銷存,最大化提高物品周轉(zhuǎn)效率。 這些問題都是“最優(yōu)化問題”,也是數(shù)學(xué)建模中的典型問題,是各大數(shù)學(xué)建模比賽里的???。
優(yōu)化題型有三要素:決策變量、目標(biāo)函數(shù)、約束條件。
(1)決策變量:是決策者可以控制的因素,例如根據(jù)不同的實(shí)際問題,決策變量可以選為產(chǎn)品的產(chǎn)量、物資的運(yùn)量及工作的天數(shù)等。
(2) 目標(biāo)函數(shù):是以函數(shù)形式來表示決策者追求的目標(biāo)。例如目標(biāo)可以是利潤最大或成本最小等。
(3) 約束條件:是決策變量需要滿足的限定條件。
歷年國賽優(yōu)化問題:
優(yōu)化問題的出發(fā)點(diǎn)是系統(tǒng)思維,其基本思路是在一定的約束條件下,保證各方面資源的合理分配, 最大限度地提升系統(tǒng)某一性能或系統(tǒng)整體性能,最終實(shí)現(xiàn)最理想結(jié)果。對(duì)于這類問題,想要建立并求解數(shù)學(xué)模型,可以參考以下思路:
(1)明確目標(biāo),分析問題背景,確定約束條件,搜集全面的客觀數(shù)據(jù)和信息。
(2)建立數(shù)學(xué)模型,構(gòu)建變量之間的數(shù)學(xué)關(guān)系,設(shè)立目標(biāo)函數(shù)。
(3)分析數(shù)學(xué)模型,綜合選擇最適合該模型的優(yōu)化方法。
(4)求解模型,通常借助計(jì)算機(jī)和數(shù)學(xué)分析軟件完成。
(5)對(duì)最優(yōu)解進(jìn)行檢驗(yàn)和實(shí)施。
PS.北太天元內(nèi)已有優(yōu)化工具箱optimization,可以調(diào)用工具箱解決優(yōu)化類問題。
下面給大家分享幾種數(shù)學(xué)建模中常用優(yōu)化算法:
1、線性規(guī)劃
在人們的生產(chǎn)實(shí)踐中,經(jīng)常會(huì)遇到如何利用現(xiàn)有資源來安排生產(chǎn),以取得最大經(jīng)濟(jì)效益的問題。此類問題構(gòu)成了運(yùn)籌學(xué)的一個(gè)重要分支—數(shù)學(xué)規(guī)劃,而線性規(guī)劃(Linear Programming 簡記 LP)則是數(shù)學(xué)規(guī)劃的一個(gè)重要分支。
1.1 用北太天元求解線性規(guī)劃問題
北太天元內(nèi)已有優(yōu)化工具箱optimization,其中的linprog等相關(guān)函數(shù)可用于求解線性規(guī)劃問題。
1.2 線性規(guī)劃特點(diǎn)
優(yōu)點(diǎn):
(1)作為經(jīng)營管理決策中的數(shù)學(xué)手段,在現(xiàn)代決策中的應(yīng)用非常廣泛。
(2)有統(tǒng)一算法,任何線性規(guī)劃問題都能求解,解決多變量最優(yōu)決策的方法。
(3)訓(xùn)練速度快。
(4)預(yù)測(cè)速度快,可以推廣到非常大的數(shù)據(jù)集,對(duì)稀疏數(shù)據(jù)也很有效。
缺點(diǎn):
(1)對(duì)于數(shù)據(jù)的準(zhǔn)確性要求高,只能對(duì)線性的問題進(jìn)行規(guī)劃約束,而且計(jì)算量大。
1.3 相關(guān)問題
運(yùn)輸問題(產(chǎn)銷平衡)、指派問題(匈牙利算法)、對(duì)偶理論與靈敏度分析、投資的收益和風(fēng)險(xiǎn)。
2、整數(shù)規(guī)劃
規(guī)劃中的變量(部分或全部)限制為整數(shù)時(shí),稱為整數(shù)規(guī)劃。若在線性規(guī)劃模型中,變量限制為整數(shù),則稱為整數(shù)線性規(guī)劃。目前所流行的求解整數(shù)規(guī)劃的方法,往往只適用于整數(shù)線性規(guī)劃。目前還沒有一種方法能有效地求解一切整數(shù)規(guī)劃。
2.1 用北太天元求解線性混合整數(shù)規(guī)劃問題
可在北太天元內(nèi)調(diào)用優(yōu)化工具箱optimization,使用intlinprog等相關(guān)函數(shù)求解線性混合整數(shù)規(guī)劃問題。
2.2 整數(shù)規(guī)劃的分類
如不加特殊說明,一般指整數(shù)線性規(guī)劃。對(duì)于整數(shù)線性規(guī)劃模型大致可分為兩類:
(1)變量全限制為整數(shù)時(shí),稱純(完全)整數(shù)規(guī)劃。
(2)變量部分限制為整數(shù)的,稱混合整數(shù)規(guī)劃。
2.3 整數(shù)規(guī)劃特點(diǎn)
原線性規(guī)劃有最優(yōu)解,當(dāng)自變量限制為整數(shù)后,其整數(shù)規(guī)劃解出現(xiàn)下述情況:
(1)原線性規(guī)劃最優(yōu)解全是整數(shù),則整數(shù)規(guī)劃最優(yōu)解與線性規(guī)劃最優(yōu)解一致。
(2)整數(shù)規(guī)劃無可行解。
(3)有可行解(當(dāng)然就存在最優(yōu)解),但最優(yōu)解值變差。
整數(shù)規(guī)劃最優(yōu)解不能按照實(shí)數(shù)最優(yōu)解簡單取整而獲得。
2.4 求解方法分類
(1)分枝定界法—可求純或混合整數(shù)線性規(guī)劃。
(2)割平面法—可求純或混合整數(shù)線性規(guī)劃。
(3)隱枚舉法—求解“0-1”整數(shù)規(guī)劃:過濾隱枚舉法;分枝隱枚舉法。
(4)匈牙利法—解決指派問題(“0-1”規(guī)劃特殊情形)。
(5)蒙特卡洛法—求解各種類型規(guī)劃。
3、非線性規(guī)劃
如果目標(biāo)函數(shù)或約束條件中包含非線性函數(shù),就稱這種規(guī)劃問題為非線性規(guī)劃問題。一般說來,解非線性規(guī)劃要比解線性規(guī)劃問題困難得多。而且,也不象線性規(guī)劃有單純形法這一通用方法,非線性規(guī)劃目前還沒有適于各種問題的一般算法,各個(gè)方法都有自己特定的適用范圍。
3.1 線性規(guī)劃與非線性規(guī)劃的區(qū)別
如果線性規(guī)劃的最優(yōu)解存在,其最優(yōu)解只能在其可行域的邊界上達(dá)到(特別是可行域的頂點(diǎn)上達(dá)到);而非線性規(guī)劃的最優(yōu)解(如果最優(yōu)解存在)則可能在其可行域的任意一點(diǎn)達(dá)到。
3.2 相關(guān)問題
無約束問題(一維搜索方法、二次插值法、無約束極值問題的解法)、約束極值問題(二次規(guī)劃、罰函數(shù)法)、飛行管理問題
4、動(dòng)態(tài)規(guī)劃
動(dòng)態(tài)規(guī)劃(dynamic programming)是運(yùn)籌學(xué)的一個(gè)分支,是求解決策過程(decisionprocess)最優(yōu)化的數(shù)學(xué)方法。例如最短路線、庫存管理、資源分配、設(shè)備更新、排序、裝載等問題,用動(dòng)態(tài)規(guī)劃方法比用其它方法求解更為方便。
雖然動(dòng)態(tài)規(guī)劃主要用于求解以時(shí)間劃分階段的動(dòng)態(tài)過程的優(yōu)化問題,但是一些與時(shí)間無關(guān)的靜態(tài)規(guī)劃(如線性規(guī)劃、非線性規(guī)劃),只要人為地引進(jìn)時(shí)間因素,把它視為多階段決策過程,也可以用動(dòng)態(tài)規(guī)劃方法方便地求解。應(yīng)指出,動(dòng)態(tài)規(guī)劃是求解某類問題的一種方法,是考察問題的一種途徑,而不是一種特殊算法(如線性規(guī)劃是一種算法)。因而,它不象線性規(guī)劃那樣有一個(gè)標(biāo)準(zhǔn)的數(shù)學(xué)表達(dá)式和明確定義的一組規(guī)則,而必須對(duì)具體問題進(jìn)行具體分析處理。因此,在學(xué)習(xí)時(shí),除了要對(duì)基本概念和方法正確理解外,應(yīng)以豐富的想象力去建立模型,用創(chuàng)造性的技巧去求解。
5、多目標(biāo)規(guī)劃
多目標(biāo)規(guī)劃已經(jīng)應(yīng)用到科學(xué)的許多領(lǐng)域,包括工程、經(jīng)濟(jì)和物流,在兩個(gè)或更多沖突的目標(biāo)之間存在取舍時(shí),需要采取最優(yōu)決策。
解決多目標(biāo)規(guī)劃問題的方法:
(1)將多目標(biāo)化為單目標(biāo) (給多個(gè)目標(biāo)賦予權(quán)重)
(2)保持多目標(biāo)不變,根據(jù)自己的偏好選擇解
實(shí)際問題中,目標(biāo)函數(shù)相互沖突是很常見的,例如購買汽車時(shí),要求花費(fèi)少且舒適度高或者要求性能好油耗低,這種問題并沒有絕對(duì)最優(yōu)解(因?yàn)椴]有確定多個(gè)目標(biāo)的權(quán)值),但是我們可以根據(jù)自己的需要選擇一個(gè)相對(duì)好的(達(dá)到我們想要的最佳平衡)。為了尋求這種“最佳平衡”,可以采用算法帕累托最優(yōu)(Pareto optimal)。
以上部分內(nèi)容引用公眾號(hào)“科研交流”,希望對(duì)大家有幫助,覺得有用就點(diǎn)個(gè)贊吧。小助手會(huì)不定期更新數(shù)學(xué)建模干貨,可以多多關(guān)注喲。