-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
算法優(yōu)化問題(算法優(yōu)化問題有哪些)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于算法優(yōu)化問題的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、多目標(biāo)優(yōu)化算法
姓名:袁卓成;學(xué)號:20021210612; 學(xué)院:電子工程學(xué)院
轉(zhuǎn)自 https://blog.csdn.net/weixin_43202635/article/details/82700342
【嵌牛導(dǎo)讀】 本文介紹了各類多目標(biāo)優(yōu)化算法
【嵌牛鼻子】 多目標(biāo)優(yōu)化, pareto
【嵌牛提問】 多目標(biāo)優(yōu)化算法有哪些?
【嵌牛正文】
1)無約束和有約束條件;
2)確定性和隨機(jī)性最優(yōu)問題(變量是否確定);
3)線性優(yōu)化與非線性優(yōu)化(目標(biāo)函數(shù)和約束條件是否線性);
4)靜態(tài)規(guī)劃和動態(tài)規(guī)劃(解是否隨時間變化)。
使多個目標(biāo)在給定區(qū)域同時盡可能最佳,多目標(biāo)優(yōu)化的解通常是一組均衡解(即一組由眾多 Pareto最優(yōu)解組成的最優(yōu)解集合 ,集合中的各個元素稱為 Pareto最優(yōu)解或非劣最優(yōu)解)。
①非劣解——多目標(biāo)優(yōu)化問題并不存在一個最優(yōu)解,所有可能的解都稱為非劣解,也稱為Pareto解。
②Pareto最優(yōu)解——無法在改進(jìn)任何目標(biāo)函數(shù)的同時不削弱至少一個其他目標(biāo)函數(shù)。這種解稱作非支配解或Pareto最優(yōu)解。
多目標(biāo)優(yōu)化問題不存在唯一的全局最優(yōu)解 ,過多的非劣解是無法直接應(yīng)用的 ,所以在求解時就是要尋找一個最終解。
(1)求最終解主要有三類方法:
一是求非劣解的生成法,即先求出大量的非劣解,構(gòu)成非劣解的一個子集,然后按照決策者的意圖找出最終解;(生成法主要有加權(quán)法﹑約束法﹑加權(quán)法和約束法結(jié)合的混合法以及多目標(biāo)遺傳算法)
二為交互法,不先求出很多的非劣解,而是通過分析者與決策者對話的方式,逐步求出最終解;
三是事先要求決策者提供目標(biāo)之間的相對重要程度,算法以此為依據(jù),將多目標(biāo)問題轉(zhuǎn)化為單目標(biāo)問題進(jìn)行求解。
(2)多目標(biāo)優(yōu)化算法歸結(jié)起來有傳統(tǒng)優(yōu)化算法和智能優(yōu)化算法兩大類。
傳統(tǒng)優(yōu)化算法包括加權(quán)法、約束法和線性規(guī)劃法等,實(shí)質(zhì)上就是將多目標(biāo)函數(shù)轉(zhuǎn)化為單目標(biāo)函數(shù),通過采用單目標(biāo)優(yōu)化的方法達(dá)到對多目標(biāo)函數(shù)的求解。
智能優(yōu)化算法包括進(jìn)化算法(Evolutionary Algorithm, 簡稱EA)、粒子群算法(Particle Swarm Optimization, PSO)等。
兩者的區(qū)別——傳統(tǒng)優(yōu)化技術(shù)一般每次能得到Pareo解集中的一個,而用智能算法來求解,可以得到更多的Pareto解,這些解構(gòu)成了一個最優(yōu)解集,稱為Pareto最優(yōu)解(任一個目標(biāo)函數(shù)值的提高都必須以犧牲其他目標(biāo)函數(shù)值為代價的解集)。
①M(fèi)OEA通過對種群 X ( t)執(zhí)行選擇、交叉和變異等操作產(chǎn)生下一代種群 X ( t + 1) ;
②在每一代進(jìn)化過程中 ,首先將種群 X ( t)中的所有非劣解個體都復(fù)制到外部集 A ( t)中;
③然后運(yùn)用小生境截斷算子剔除A ( t)中的劣解和一些距離較近的非劣解個體 ,以得到個體分布更為均勻的下一代外部集 A ( t + 1) ;
④并且按照概率 pe從 A ( t + 1)中選擇一定數(shù)量的優(yōu)秀個體進(jìn)入下代種群;
⑤在進(jìn)化結(jié)束時 ,將外部集中的非劣解個體作為最優(yōu)解輸出。
NSGA一II算法的基本思想:
(1)首先,隨機(jī)產(chǎn)生規(guī)模為N的初始種群,非支配排序后通過遺傳算法的選擇、交叉、變異三個基本操作得到第一代子代種群;
(2)其次,從第二代開始,將父代種群與子代種群合并,進(jìn)行快速非支配排序,同時對每個非支配層中的個體進(jìn)行擁擠度計算,根據(jù)非支配關(guān)系以及個體的擁擠度選取合適的個體組成新的父代種群;
(3)最后,通過遺傳算法的基本操作產(chǎn)生新的子代種群:依此類推,直到滿足程序結(jié)束的條件。
非支配排序算法:
考慮一個目標(biāo)函數(shù)個數(shù)為K(K>1)、規(guī)模大小為N的種群,通過非支配排序算法可以對該種群進(jìn)行分層,具體的步驟如下:
通過上述步驟得到的非支配個體集是種群的第一級非支配層;
然后,忽略這些標(biāo)記的非支配個體,再遵循步驟(1)一(4),就會得到第二級非支配層;
依此類推,直到整個種群被分類。
擁擠度 ——指種群中給定個體的周圍個體的密度,直觀上可表示為個體。
擁擠度比較算子:
設(shè)想這么一個場景:一群鳥進(jìn)行覓食,而遠(yuǎn)處有一片玉米地,所有的鳥都不知道玉米地到底在哪里,但是它們知道自己當(dāng)前的位置距離玉米地有多遠(yuǎn)。那么找到玉米地的最佳策略,也是最簡單有效的策略就是是搜尋目前距離玉米地最近的鳥群的周圍區(qū)域。
基本粒子群算法:
粒子群由 n個粒子組成 ,每個粒子的位置 xi 代表優(yōu)化問題在 D維搜索空間中潛在的解;
粒子在搜索空間中以一定的速度飛行 , 這個速度根據(jù)它本身的飛行經(jīng)驗(yàn)和同伴的飛行經(jīng)驗(yàn)來動態(tài)調(diào)整下一步飛行方向和距離;
所有的粒子都有一個被目標(biāo)函數(shù)決定的適應(yīng)值(可以將其理解為距離“玉米地”的距離) , 并且知道自己到目前為止發(fā)現(xiàn)的最好位置 (個體極值 pi )和當(dāng)前的位置 ( xi ) 。
粒子群算法的數(shù)學(xué)描述 :
每個粒子 i包含為一個 D維的位置向量 xi = ( xi1, xi2, …, xiD )和速度向量 vi = ( vi1, vi2,…, viD ) ,粒子 i搜索解空間時 ,保存其搜索到的最優(yōu)經(jīng)歷位置pi = ( pi1, pi2, …, piD ) 。在每次迭代開始時 ,粒子根據(jù)自身慣性和經(jīng)驗(yàn)及群體最優(yōu)經(jīng)歷位置 pg = ( pg1, pg2, …, pgD )來調(diào)整自己的速度向量以調(diào)整自身位置。
粒子群算法基本思想:
(1)初始化種群后 ,種群的大小記為 N。基于適應(yīng)度支配的思想 ,將種群劃分成兩個子群 ,一個稱為非支配子集 A,另一個稱為支配子集 B ,兩個子集的基數(shù)分別為 n1、n2 。
(2)外部精英集用來存放每代產(chǎn)生的非劣解子集 A,每次迭代過程只對 B 中的粒子進(jìn)行速度和位置的更新 ;
(3)并對更新后的 B 中的粒子基于適應(yīng)度支配思想與 A中的粒子進(jìn)行比較 ,若 xi ∈B , ϖ xj ∈A,使得 xi 支配 xj,則刪除 xj,使 xi 加入 A 更新外部精英集 ;且精英集的規(guī)模要利用一些技術(shù)維持在一個上限范圍內(nèi) ,如密度評估技術(shù)、分散度技術(shù)等。
(4)最后 ,算法終止的準(zhǔn)則可以是最大迭代次數(shù) Tmax、計算精度ε或最優(yōu)解的最大凝滯步數(shù) Δt等。
二、電力系統(tǒng)優(yōu)化算法
電力系統(tǒng)優(yōu)化算法實(shí)際應(yīng)用介紹
優(yōu)化問題可以分成凸(convex)問題和非凸問題。凸問題都是可以找到最優(yōu)解的,只是算力問題,小問題可以用現(xiàn)有的解法器非??斓恼业阶顑?yōu)解,大型問題則一般要用一些定制的分解算法。非凸問題則要具體情況具體討論,如果只是帶有整數(shù)變量的話一般也可以找到不錯的解。
電力系統(tǒng)這邊常用的優(yōu)化就是線性規(guī)劃(LP),二次規(guī)劃(QP),和整數(shù)規(guī)劃(MIP)。LP和QP常用在解最優(yōu)調(diào)度上,MIP用來做日前機(jī)組組合(unit commitment)。這幾種問題都是有很成熟的算法,比如多邊形法(simplex)和branch&bound法,和解法器(solver),比如Gurobi和Cplex。此外還有一種電力系統(tǒng)專有的問題是交流潮流計算(ACOPF),屬于非凸問題,可以用梯度下降法找到次優(yōu)解,而工業(yè)界這些年來也找到了許多啟發(fā)式算法來提高解的速度和質(zhì)量。最近10年以Caltech Steven Low為代表的網(wǎng)絡(luò)控制研究領(lǐng)域也提出了一些ACOPF的凸優(yōu)化近似解法,比如用到了正定規(guī)劃(semi-definite programming),只是假設(shè)具有局限性,目前看來并不被工業(yè)界認(rèn)可。
下面再講一下優(yōu)化分解算法(decomposition),電力領(lǐng)域的優(yōu)化研究主要就是建模和分解大型優(yōu)化問題,問題的維度主要體現(xiàn)在空間維度(spatial),時間維度(temporal),和不確定性上(uncertainty)。常用的分解算法有primal / dual分解法,這個可以參考斯坦福Stephen Boyd的課件,思路就是利用問題本身的結(jié)構(gòu)通過固定偶和變量(coupling variable)把一個大問題分拆成可以獨(dú)立平行解決的小問題(subproblem),再把小問題的結(jié)果匯總起來update coupling variable(使用梯度/次梯度法,或者平面切割法),以此循環(huán)來解決整個問題(master problem),在與平行計算的結(jié)合基礎(chǔ)上通常可以帶來級數(shù)級別的速度提升,比如原來需要數(shù)小時甚至數(shù)日才能解決的問題通過分解+平行計算,可以在數(shù)分鐘內(nèi)解決。這類分解算法常用于空間分拆和情景分拆(scenario decomposition)。
另一種常用的分解算法就是動態(tài)規(guī)劃(dynamic programming),用來解決長時間尺度下帶有不確定性的優(yōu)化控制問題,比如水電規(guī)劃的經(jīng)典算法就是stochastic dual dynamic programming。這方面Gatech的Alex Shapiro寫過一些不錯的資料。最后從學(xué)習(xí)上在搞懂一些基本的經(jīng)典優(yōu)化算法遠(yuǎn)離比如梯度下降和多邊形法外,答主覺得優(yōu)化在電力方面的應(yīng)用主要體現(xiàn)在對primal和dual問題之間關(guān)聯(lián)的以及KKT condition的理解,比如primal約束對應(yīng)的dual是該約束的sub-gradient也就是該約束的price,很多優(yōu)化分解問題都可以通過這種對這種關(guān)系的理解來解決。另一個難點(diǎn)在于對multi-stage decision和uncertainty的理解,比如要理解nonanticipatory control和model predictive control的區(qū)別,這個問題甚至可以延伸到當(dāng)前大火的機(jī)器學(xué)習(xí)上(優(yōu)化控制上的approximate dynamic programming),這方面答主看過不少資料,感覺還是Shapiro寫的最好。
三、算法部署優(yōu)化這一塊是什么
算法部署優(yōu)化這一塊是算法優(yōu)化是指對算法的有關(guān)性能進(jìn)行優(yōu)化。算法優(yōu)化是指對算法的有關(guān)性能進(jìn)行優(yōu)化,如時間復(fù)雜度、空間復(fù)雜度、正確性、健壯性。由于算法應(yīng)用情景變化很大,算法優(yōu)化可以使算法具有更好泛化能力。算法是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制。
四、優(yōu)化算法筆記(七)差分進(jìn)化算法
(以下描述,均不是學(xué)術(shù)用語,僅供大家快樂的閱讀)
差分進(jìn)化算法(Differential Evolution Algorithm,DE)是一種基于群體的進(jìn)化算法,它模擬了群體中的個體的合作與競爭的過程。算法原理簡單,控制參數(shù)少,只有交叉概率和縮放比例因子,魯棒性強(qiáng),易于實(shí)現(xiàn)。
差分進(jìn)化算法中,每一個個體的基因表示待求問題的一個候選解。每次迭代將先進(jìn)行變異操作,選擇一個或多個個體的基因作為基,然后選擇不同的個體的差分來構(gòu)成差分基因,最后將作為基的基因與差分基因相加來得出新的個體。交叉操作將新的個體將于父代的對應(yīng)個體交叉,然后進(jìn)行選擇操作,比較交叉后的個體與父代的對應(yīng)個體,選擇較優(yōu)的個體保留至下一代。在迭代完成之后將選擇種群中最優(yōu)個體的基因作為解。
差分進(jìn)化算法可以算是我所使用過的優(yōu)化算法中大魔王級別的算法,雖然它每個方面都沒有強(qiáng)到離譜,但是綜合起來的效果好于大多數(shù)算法。它就像一個每個科目都能考到90分(百分制)的學(xué)生,雖然沒門課都不是最優(yōu)秀的,但是論綜合,論總分,它有極大的概率是第一名。
在我研究優(yōu)化算法的小路上,我的目標(biāo)就是找到一個能打敗大魔王或是能在大多數(shù)方面壓制魔王的算法。
這次的主角就選魔王軍吧(或者蟻王軍,為了與蟻群算法區(qū)別還是叫魔王軍吧),個體則稱之為魔王兵。
魔王兵的能力取決于它們的基因,它們可以根據(jù)環(huán)境或者需要改變自己的基因使得自己更加強(qiáng)大,更方便的處理問題,問題的維度與基因維度相同。
表示第i個魔王兵在進(jìn)化了第t次后的基因,該個體有D位基因。
與遺傳算法同為進(jìn)化算法的差分進(jìn)化算法,它們的操作(算子)也都非常相似的,都是交叉,變異和選擇,流程也幾乎一樣(遺傳算法先交叉后變異,差分進(jìn)化算法先變異后交叉)。
說到差分進(jìn)化算法中的變異,我就想到一句論語 “三人行,必有我?guī)熝?。擇其善者而從之,其不善者而改之?!?/strong> ,其實(shí)這句論語已經(jīng)向我們說明了差分進(jìn)化算法的整個流程:
“三人行,必有我?guī)熝伞薄儺悾徊妗?/p>
“擇其善者而從之,其不善者而改之”——選擇。
差分進(jìn)化算法中,當(dāng)一個魔王兵變異時,它會先找來3個小伙伴,當(dāng)然是隨機(jī)找來3個小伙伴,避免同化。在一個小伙伴的基因上加上另外兩個小伙伴基因之差作為自己的目標(biāo)基因。其變異公式如下:
表示第i個魔王兵找到了編號為r1、r2和r3的三個魔王兵,當(dāng)然了i、r1、r2、r3為互不相同的整數(shù),F(xiàn)為縮放比例因子,通常 ,一般取F=0.5。 為第i個魔王兵交叉后的目標(biāo)基因圖紙,不過這是個半成品,再經(jīng)過交叉后,目標(biāo)基因圖紙才算完成。
其實(shí)現(xiàn)在我們已經(jīng)有了5個基因圖紙了 ,接下來將進(jìn)行交叉操作。由于變異操作,差分進(jìn)化算法的種群中個體數(shù)至少為4,即魔王軍中至少有4個小兵。
交叉操作中,魔王兵i會將目標(biāo)基因圖紙 進(jìn)行加工得到 ,加工過程如下:
其中 。 為交叉概率,其值越大,發(fā)生交叉的概率越大,一般取 。 為{1,2,…,D}中的隨機(jī)整數(shù),其作用是保證交叉操作中至少有一維基因來自變異操作產(chǎn)生的基因,不能讓交叉操作的努力白費(fèi)。
從公式上可以看出交叉操作實(shí)際上是從變異操作得出的基因圖紙上選擇至少一位基因來替換自己的等位基因,得到最終的基因圖紙。
選擇操作相對簡單,魔王兵i拿到了最終的基因圖紙 ,大喊一聲,進(jìn)化吧,魔王兵i的基因改變了。它拿出了能力測量器fitness function,如果發(fā)現(xiàn)自己變強(qiáng)了,那么就將基因 保留到下一代,否則它選擇放棄進(jìn)化,讓自己還原成 。
實(shí)驗(yàn)又來啦,還是那個實(shí)驗(yàn) ,簡單、易算、好畫圖。
實(shí)驗(yàn)1 :參數(shù)如下
圖中可以看出在第20代時,群體已經(jīng)非常集中了,在來看看最終得出的結(jié)果。
這結(jié)果真是好到令人發(fā)指,惡魔在心中低語“把其他的優(yōu)化算法都丟掉吧”。不過別往心里去,任何算法都有優(yōu)缺點(diǎn),天下沒有免費(fèi)的午餐,要想獲得某種能力必須付出至少相應(yīng)的代價。
實(shí)驗(yàn)2:
將交叉率CR設(shè)為0,即每次交叉只選擇保留一位變異基因。
看看了看圖,感覺跟實(shí)驗(yàn)1中相比沒有什么變化,那我們再來看看結(jié)果。
結(jié)果總體來說比實(shí)驗(yàn)1好了一個數(shù)量級。為什么呢?個人感覺應(yīng)該是每次只改變一位基因的局部搜索能力比改變多位基因更強(qiáng)。下面我們將交叉率CR設(shè)為1來看看是否是這樣。
實(shí)驗(yàn)3:
將交叉率CR設(shè)為1,即每次交叉只選擇保留一位原有基因。
實(shí)驗(yàn)3的圖與實(shí)驗(yàn)1和實(shí)驗(yàn)2相比好像也沒什么差別,只是收斂速度好像快了那么一點(diǎn)點(diǎn)。再來看看結(jié)果。
發(fā)現(xiàn)結(jié)果比實(shí)驗(yàn)2的結(jié)果還要好?那說明了實(shí)驗(yàn)2我得出的結(jié)論是可能是錯誤的,交叉率在該問題上對差分進(jìn)化算法的影響不大,它們結(jié)果的差異可能只是運(yùn)氣的差異,畢竟是概率算法。
實(shí)驗(yàn)4:
將變異放縮因子設(shè)為0,即變異只與一個個體有關(guān)。
收斂速度依然很快,不過怎么感覺結(jié)果不對,而且個體收斂的路徑好像遺傳算法,當(dāng)F=0,時,差分進(jìn)化算法退化為了沒有變異、選擇操作的遺傳算法,結(jié)果一定不會太好。
果然如此。下面我們再看看F=2時的實(shí)驗(yàn)。
實(shí)驗(yàn)5:
將變異放縮因子設(shè)為2。
實(shí)驗(yàn)5的圖可以明顯看出,群體的收斂速度要慢了許多,到第50代時,種群還未完全收斂于一點(diǎn),那么在50代時其結(jié)果也不會很好,畢竟算法還未收斂就停止進(jìn)化了。
結(jié)果不算很好但也算相對穩(wěn)定。
通過上面5個實(shí)驗(yàn),我們大致了解了差分進(jìn)化算法的兩個參數(shù)的作用。
交叉率CR,影響基因取自變異基因的比例,由于至少要保留一位自己的基因和變異的基因?qū)е翪R在該問題上對算法性能的影響不大(這個問題比較簡單,維度較低,影響不大)。
變異放縮因子F,影響群體的收斂速度,F(xiàn)越大收斂速度越慢,F(xiàn)絕對值越小收斂速度越快,當(dāng)F=0是群體之間只會交換基因,不會變異基因。
差分進(jìn)化算法大魔王已經(jīng)如此強(qiáng)大了,那么還有什么可以改進(jìn)的呢?當(dāng)然有下面一一道來。
方案1 .將3人行修改為5人行,以及推廣到2n+1人行。
實(shí)驗(yàn)6:
將3人行修改為5人行,變異公式如下:
五人行的實(shí)驗(yàn)圖看起來好像與之前并沒有太大的變化,我們再來看看結(jié)果。
結(jié)果沒有明顯提升,反而感覺比之前的結(jié)果差了。反思一下五人行的優(yōu)缺點(diǎn),優(yōu)點(diǎn),取值范圍更大,缺點(diǎn),情況太多,減慢搜索速度。
可以看出算法的收斂速度比之前的變慢了一點(diǎn),再看看結(jié)果。
比之前差。
差分進(jìn)化算法的學(xué)習(xí)在此也告一段落。差分進(jìn)化算法很強(qiáng)大,也很簡單、簡潔,算法的描述都充滿了美感,不愧是大魔王。不過這里并不是結(jié)束,這只是個開始,終將找到打敗大魔王的方法,讓新的魔王誕生。
由于差分進(jìn)化算法足夠強(qiáng),而文中實(shí)驗(yàn)的問題較為簡單導(dǎo)致算法的改進(jìn)甚至越改越差(其實(shí)我也不知道改的如何,需要大量實(shí)驗(yàn)驗(yàn)證)。在遙遠(yuǎn)的將來,也會有更加復(fù)雜的問題來檢驗(yàn)?zāi)醯哪芰?,總之,后會無期。
以下指標(biāo)純屬個人yy,僅供參考
目錄
上一篇 優(yōu)化算法筆記(六)遺傳算法
下一篇 優(yōu)化算法筆記(八)人工蜂群算法
優(yōu)化算法matlab實(shí)現(xiàn)(七)差分進(jìn)化算法matlab實(shí)現(xiàn)
以上就是關(guān)于算法優(yōu)化問題相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
多關(guān)鍵詞匹配(多關(guān)鍵詞匹配算法框架)
產(chǎn)品包裝描述怎么寫(產(chǎn)品包裝描述怎么寫好)