同任務(wù)】基于matlab蟻群算法多無人機攻擊調(diào)度【含Matlab源碼 034期】)
歡迎來到海神之光博客之家?博主簡介熱愛科研的Matlab仿真開發(fā)者修心和技術(shù)同步精進個人主頁海神之光代碼獲取方式海神之光Matlab王者學習之路—代碼獲取方式??座右銘行百里者半于九十。更多Matlab路徑規(guī)劃仿真內(nèi)容點擊①Matlab路徑規(guī)劃進階版②付費專欄Matlab路徑規(guī)劃初級版??關(guān)注CSDN海神之光更多資源等你來?一、多無人機協(xié)同作業(yè)簡介0 引言多架無人機組成無人機集群可以協(xié)同完成任務(wù)是未來無人機的發(fā)展方向。組成無人機集群的多架無人機通過機間鏈路互相通信實現(xiàn)協(xié)作可以迅速準確地執(zhí)行路徑規(guī)劃、協(xié)同偵察、協(xié)同感知和協(xié)同攻擊等復雜任務(wù)。為實現(xiàn)無人機集群協(xié)作的誘人前景國內(nèi)外都積極開展了相關(guān)研究工作。美國方面美國國防預先研究計劃局(DARPA)于2015年推出“小精靈”項目計劃研制具備自組織和智能協(xié)同能力的無人機蜂群系統(tǒng)。美國防部戰(zhàn)略能力辦公室(SCO)2014年啟動了“無人機蜂群”項目旨在通過有人機空射“灰山鶉”微型無人機蜂群執(zhí)行低空態(tài)勢感知和干擾任務(wù)。美國海軍研究局(ONR)于2015年公布了“低成本無人機蜂群”(LOCUST)項目研發(fā)可快速連續(xù)發(fā)射的無人機蜂群無人機之間利用近距離射頻網(wǎng)絡(luò)共享態(tài)勢信息協(xié)同執(zhí)行掩護、攻擊或防御任務(wù)。2017年在 DARPA 會議中心舉辦“進攻性集群戰(zhàn)術(shù)”(OFFSET)項目的提案人活動目標是發(fā)展基于游戲的開放架構(gòu)為城市作戰(zhàn)的無人集群系統(tǒng)生成、評估和集成集群戰(zhàn)術(shù)。歐洲方面2016 年歐洲防務(wù)局啟動了“歐洲蜂群”項目開展了無人機蜂群的自主決策、協(xié)同飛行等關(guān)鍵技術(shù)研究。2016年英國國防部發(fā)起無人機蜂群競賽參賽的多個團隊控制無人機蜂群實現(xiàn)了通信中繼、協(xié)同干擾、目標跟蹤定位和區(qū)域測繪等任務(wù)。2017 年俄羅斯無線電電子技術(shù)集團對外發(fā)表研究計劃稱在戰(zhàn)斗機上裝載多架蜂群無人機可實現(xiàn)協(xié)同偵察和攻擊的新型作戰(zhàn)樣式。國內(nèi)也相繼展開相關(guān)研究。最近中國電科(CETC)電子科學研究院發(fā)布了陸軍協(xié)同無人機“蜂群”視頻引起廣泛關(guān)注。面對這一重要課題本文研究總結(jié)了無人機協(xié)同應用的發(fā)展趨勢對其當前研究進展和發(fā)展方向進行了探討并提出無人機集群任務(wù)協(xié)作的發(fā)展趨勢是多智能體協(xié)同。1 無人機協(xié)同應用發(fā)展趨勢對現(xiàn)有研究工作的分析如圖1所示無人機協(xié)同應用大體上可以分為3個階段分別是分布式協(xié)同群體智能協(xié)同和未來的多智能體協(xié)同。圖1 無人機協(xié)同技術(shù)的發(fā)展趨勢無人機集群協(xié)同發(fā)展的第1個階段是簡單分布式協(xié)同。在該階段協(xié)同任務(wù)根據(jù)執(zhí)行條件預先在簡單連接和組合的集群成員之間經(jīng)過計算處理后分配執(zhí)行。集群基本沒有能力根據(jù)環(huán)境與目標的變化動態(tài)調(diào)整任務(wù)分配各無人機分擔的任務(wù)通常是確定的。鑒于預分配方式的局限性受生物集群活動的啟發(fā)群體智能被應用于無人機集群使無人機集群協(xié)同發(fā)展到第2個階段——群體智能協(xié)同。在該階段中各個無人機節(jié)點被賦予初級智能能夠進行簡單的認知和決策通過集群個體之間更為緊密的耦合可以根據(jù)執(zhí)行中的反饋調(diào)整優(yōu)化方式或者優(yōu)化目標使整個無人機集群系統(tǒng)有能力構(gòu)成自組織、高穩(wěn)定的分布式系統(tǒng)。群體智能協(xié)同階段當前正處于研究和應用迅速發(fā)展時期。隨著節(jié)點計算能力的進一步提升和人工智能技術(shù)的飛速發(fā)展無人機協(xié)同即將進入發(fā)展的第3個階段——多智能體協(xié)同。在多智能體協(xié)同發(fā)展階段集群中的各個無人機都將是一個獨立的綜合智能體具有多維度認知計算和高級智能處理能力從而實現(xiàn)更高效的自主學習和決策并在此基礎(chǔ)上完成更復雜、更艱巨的任務(wù)。2 分布式協(xié)同從無人機集群出現(xiàn)開始就被用于解決協(xié)同路徑規(guī)劃、協(xié)同感知和協(xié)同任務(wù)規(guī)劃等分布式協(xié)作任務(wù)。早期的無人機分布式協(xié)同任務(wù)通常都是提前進行充分的計算和分配無人機節(jié)點按照既定算法或者方案予以執(zhí)行。根據(jù)計算結(jié)果分布式協(xié)同無人機群可組織執(zhí)行配置好的任務(wù)如圖2所示。圖2 分布式協(xié)同階段的任務(wù)執(zhí)行方式2.1 協(xié)同路徑規(guī)劃協(xié)同路徑規(guī)劃中要求在給定目標或者搜索目標后無人機節(jié)點根據(jù)當前的任務(wù)狀態(tài)來確定飛行路徑。針對協(xié)同搜索和跟蹤任務(wù)的路線規(guī)劃無人機集群可采用最大化目標功能來檢測最重要的目標并在關(guān)鍵時刻對其進行跟蹤從而獲得最有價值的信息。而協(xié)同搜索的路徑規(guī)劃可以分成無人機工作區(qū)間劃分和全區(qū)域覆蓋搜索路徑規(guī)劃2個子問題將多機協(xié)同搜索轉(zhuǎn)化為子區(qū)域上的單機搜索對目標區(qū)域快速進行劃分并生成飛行路線?;诟倪M遺傳算法的多無人機協(xié)同偵察航跡規(guī)劃算法可用于解決面向復雜戰(zhàn)場環(huán)境中高效偵察多種類型目標過程中的路徑規(guī)劃問題并能夠有效地提高航跡規(guī)劃精度和效率。2.2 協(xié)同感知協(xié)同感知是多無人機集群共同探測感知某一目標區(qū)域狀態(tài)的任務(wù)形式。在這類任務(wù)中最常見的是協(xié)同頻譜感知。針對協(xié)同頻譜感知任務(wù)特點采用最佳融合準則的分布式協(xié)同任務(wù)執(zhí)行方案可以優(yōu)化檢測性能使協(xié)作頻譜感知總錯誤率達到最小并能降低協(xié)作感知時間節(jié)省感知過程開銷。2.3 協(xié)同任務(wù)規(guī)劃協(xié)同任務(wù)規(guī)劃要求集群系統(tǒng)能夠根據(jù)目標任務(wù)和執(zhí)行情況對任務(wù)進行系統(tǒng)分配。例如針對協(xié)同打擊任務(wù)通過建立無人機毀傷代價指標函數(shù)、航程代價指標函數(shù)和價值收益指標函數(shù)可以實現(xiàn)多無人機協(xié)同打擊任務(wù)的分配[5];而通過建立多目標優(yōu)化模型并采用遺傳算法能有效提高任務(wù)的完成效率。針對協(xié)同搜救任務(wù)使用一種新的基于通信保持的拍賣方法的自適應反饋調(diào)節(jié)遺傳算法能夠改善傳統(tǒng)遺傳算法存在易陷入局部最優(yōu)的弱點。通過以上3種類型協(xié)同任務(wù)的相關(guān)研究工作可以看出無人機集群的分布式協(xié)同方式雖然充分考慮了“分布式”特點能夠根據(jù)任務(wù)目標和集群特征設(shè)置有效的目標函數(shù)和優(yōu)化方法去尋求最優(yōu)或者較優(yōu)的結(jié)果但是其任務(wù)執(zhí)行環(huán)境和求解目標需要在任務(wù)執(zhí)行之前進行優(yōu)化計算然后分配執(zhí)行不能適應實際中動態(tài)的任務(wù)目標和環(huán)境變化缺乏“智能性”的感知和適應性行為。隨著人們對“蜂群”“鳥群”等生物群體智能研究的深入群體智能協(xié)同被進一步引入到無人機的協(xié)同中。3 群體智能協(xié)同“鳥群”“蟻群”等生物群體雖然其中的個體智能有限但是群體卻展現(xiàn)出高度的自組織性這一特點與無人機集群自主協(xié)同的需求相符因而群體智能在無人機協(xié)同應用領(lǐng)域也得到了廣泛研究使無人機集群協(xié)同具有了初步的智能性。具備群體智能的無人機集群系統(tǒng)在任務(wù)拆解和執(zhí)行過程中引入了群體反饋和適變能力可執(zhí)行較復雜的動態(tài)任務(wù)其過程如圖3所示。圖3 群體智能協(xié)同階段的任務(wù)執(zhí)行方式3.1 協(xié)同路徑規(guī)劃山區(qū)路徑規(guī)劃任務(wù)受到地形特征的強烈影響難以預先確定性分配執(zhí)行簡單的分布式協(xié)同無法勝任。例如為了執(zhí)行山區(qū)應急物資運輸?shù)穆窂揭?guī)劃任務(wù)一種考慮路徑安全度的改進蟻群算法可快速收斂并生成更短路徑。蟻群算法也被用于無人機協(xié)同飛抵空戰(zhàn)場的航跡規(guī)劃任務(wù)中;一種基于改進混沌蟻群算法更能克服傳統(tǒng)蟻群智能算法中易出現(xiàn)局部極值、收斂效率低的缺陷提升算法的全局尋優(yōu)能力和搜索效率。針對協(xié)同攻擊移動目標場景的航跡規(guī)劃另一種改進的蟻群算法建立了結(jié)合任務(wù)分配的無人機群協(xié)同航跡規(guī)劃模型可以快速地對地面多個移動目標規(guī)劃出有效的航跡。3.2 協(xié)同感知在協(xié)同感知任務(wù)中群體智能也得到應用。針對無人機集群通信場景和需求出現(xiàn)了考慮結(jié)合認知無線電技術(shù)指導下的智能通信思想和匯聚有限智慧的群體智能理論方法構(gòu)建了群體智能協(xié)同通信模型和智能協(xié)同感知模型。3.3 協(xié)同任務(wù)規(guī)劃協(xié)同作戰(zhàn)是協(xié)同任務(wù)規(guī)劃中的典型場景結(jié)合群體智能優(yōu)化算法的優(yōu)勢基于粒子群-整數(shù)編碼狼群算法的集群組網(wǎng)任務(wù)分配算法適合解決此類協(xié)同問題;由于無人機集群協(xié)同決策困難還可以結(jié)合狼群算法的認知與協(xié)作能力實現(xiàn)在復雜環(huán)境下迅速對目標進行跟蹤和包圍。這種協(xié)同任務(wù)是第一類簡單協(xié)同所不能勝任的。雖然無人機集群和群體智能的結(jié)合可以充分發(fā)揮無人機集群優(yōu)勢增強分布式協(xié)同智能性可在任務(wù)執(zhí)行過程中與環(huán)境和任務(wù)執(zhí)行中間過程產(chǎn)生一定交互和反饋使之具備一定的自適應能力但是這種智能仍然是非常有限的其本質(zhì)仍然是基于特定計算模式和反饋模式下的分布式優(yōu)化算法。4 多智能體協(xié)同隨著人工智能技術(shù)和節(jié)點自身算力的不斷增強未來無人機集群中的個體將具備更強的智能性能夠獨立對環(huán)境和任務(wù)進行感知和評估實現(xiàn)多個智能體之間的交互和協(xié)同從而具備多智能體協(xié)同能力。近年來人工智能領(lǐng)域研究取得了突破性進展。其中深度強化學習在諸多領(lǐng)域得到了成功應用。無線通信網(wǎng)絡(luò)基于多智能體深度強化學習的資源分配技術(shù)也得到了深入研究。多智能體深度強化學習模型早已被用于解決車聯(lián)網(wǎng)中頻譜資源分配問題,這種應用已經(jīng)與無人機集群系統(tǒng)頗為接近。例如一種基于多智能體深度強化學習的分布式動態(tài)功率分配方案?;诙嘀悄荏w深度強化學習的策略還可被用于二者的結(jié)合——用無人機輔助車輛網(wǎng)絡(luò)進行多維資源管理。雖然基于強化學習的多智能體通信網(wǎng)絡(luò)資源分配問題已經(jīng)得到了廣泛研究但是由于網(wǎng)絡(luò)特性的不同傳統(tǒng)的針對其他通信網(wǎng)絡(luò)的研究成果不能直接用于無人機集群網(wǎng)絡(luò)。因而基于強化學習的多智能體自主協(xié)同應用逐漸成為未來無人機多智能體自主協(xié)同的一個研究熱點。針對無人機群的通信網(wǎng)絡(luò)資源動態(tài)分配問題而提出的多智能體深度強化學習方案也陸續(xù)出現(xiàn),例如一種基于多智能體深度強化學習的分布式干擾協(xié)調(diào)策略被用于受到干擾的無人機網(wǎng)絡(luò)中的文件下載業(yè)務(wù)。智能體在適用于無人機網(wǎng)絡(luò)特點的獨立強化學習中其行為策略通常只能根據(jù)它們對全局環(huán)境的局部個體觀察來制定。針對這種局限性聯(lián)合采用2種不同規(guī)模的智能體可解決智能體之間的通信問題。無人機集群協(xié)同經(jīng)常會處理動態(tài)高維離散和連續(xù)動作狀態(tài)空間的優(yōu)化求解問題近來出現(xiàn)的演員-評論家算法是深度強化學習的一個新興方向結(jié)合了基于值函數(shù)和基于策略函數(shù)的深度強化學習兩大分支的優(yōu)勢非常適用于無人機集群的智能協(xié)同。利用演員-評論家算法在無線信道和可再生能源再生率都是隨機變化且環(huán)境動態(tài)變化條件下可尋求資源分配最佳策略,如用于解決車聯(lián)網(wǎng)中復雜動態(tài)環(huán)境下的資源分配問題。應用設(shè)備到設(shè)備(D2D)網(wǎng)絡(luò)的異構(gòu)蜂窩網(wǎng)絡(luò)環(huán)境下基于演員-評論家算法的策略可用于智能化節(jié)能模式選擇和資源分配。隨著節(jié)點智能算力的不斷增強無人機集群中的每架無人機可以作為一個具有深度強化學習能力的智能體而整個集群可通過合作構(gòu)成多智能體。相鄰無人機之間通過通信網(wǎng)絡(luò)進行信息交換與分發(fā)。如圖4所示每架無人機都與局部環(huán)境相互作用根據(jù)從周圍環(huán)境或者同伴無人機得到的信息針對承載的任務(wù)需求通過深度強化學習智能地產(chǎn)生動作策略進行自身資源與行為的分配與調(diào)整進而與環(huán)境和同伴互動并獲得個體獎勵。圖4 基于多智能體的無人機集群每架無人機的深度強化學習智能體由2個深度神經(jīng)網(wǎng)絡(luò)構(gòu)成包括演員網(wǎng)絡(luò)和評論家網(wǎng)絡(luò)如圖5所示。圖5 基于演員評論家算法的無人機智能體演員網(wǎng)絡(luò)負責輸出動作評論家網(wǎng)絡(luò)負責評價演員的動作以獲得相互促進的效果。與傳統(tǒng)的深度強化學習方法相比演員-評論家算法同時吸取了基于值函數(shù)方法和基于策略函數(shù)方法的優(yōu)點從價值和策略兩方面來訓練提升智能體訓練的更快效果也更好。通過訓練和學習期望智能體的評論家網(wǎng)絡(luò)可以獲得最佳效用評估函數(shù)智能體從周圍環(huán)境中觀察得到狀態(tài)信息St ,例如干擾狀態(tài)、相鄰無人機等。演員網(wǎng)絡(luò)擬合動作策略函數(shù)π(St;ωπ),根據(jù)狀態(tài)信息St,動作策略函數(shù)輸出當前時隙的動作at,也就是資源分配結(jié)果并應用到環(huán)境中得到個體的即時獎勵rt。獎勵由獎勵函數(shù)計算得到負責反饋一個即時的、合理的、具有指導意義的獎勵值從而激勵智能體向目標更新策略。評論家網(wǎng)絡(luò)擬合效用評估函數(shù)Q(St,at,ω),負責預測和評估在當前狀態(tài)St采用動作at所能得到的狀態(tài)動作價值即長期性回報Rt為式中γ是折扣因子γ表示了當前對于未來收益的重視程度取值在01之間取值0則表示智能體忽視未來收益只看重當前的收益rt,取值1則表示智能體將未來每個時刻的收益都視為與當前時刻收益一樣的重要性。獲得最大的長期性回報是智能體的最終目的這個目標可以根據(jù)任務(wù)的性質(zhì)被定義為不同的評判標準。評論家網(wǎng)絡(luò)的最佳效用評估函數(shù)對應的演員網(wǎng)絡(luò)動作策略即為最佳動作策略π*。動作策略函數(shù)的參數(shù)通過策略梯度的方法進行更新效用評估函數(shù)的參數(shù)采用最小化損失函數(shù)進行更新式中yt為優(yōu)勢函數(shù)用來衡量計算執(zhí)行動作后的實際效用評估值。通過更新智能體的演員網(wǎng)絡(luò)的動作策略輸出的動作越來越好而評論家網(wǎng)絡(luò)的效用評估也會越來越準確。基于多智能體的無人機群的每架無人機都會朝著收益最大的方向執(zhí)行動作從而實現(xiàn)集群的收益最大化。?二、蟻群算法簡介1 蟻群算法(ant colony algorithm,ACA)起源和發(fā)展歷程Marco Dorigo等人在研究新型算法的過程中發(fā)現(xiàn)蟻群在尋找食物時通過分泌一種稱為信息素的生物激素交流覓食信息從而能快速的找到目標于是在1991年在其博士論文中首次系統(tǒng)地提出一種基于螞蟻種群的新型智能優(yōu)化算法“螞蟻系統(tǒng)Ant system,簡稱AS”后來提出者及許多研究者對該算法作了各種改進將其應用于更為廣泛的領(lǐng)域如圖著色問題、二次分配問題、工件排序問題、車輛路徑問題、車間作業(yè)調(diào)度問題、網(wǎng)絡(luò)路由問題、大規(guī)模集成電路設(shè)計等。近些年來M.Dorigo等人把螞蟻算法進一步發(fā)展成一種通用的優(yōu)化技術(shù)“蟻群優(yōu)化Ant Colony Optimization,簡稱ACO”并將所有符合ACO框架的算法稱為“蟻群優(yōu)化算法ACO algorithm”。具體來說各個螞蟻在沒有事先告知食物在什么地方的前提下開始尋找食物。當一只找到食物以后它會向環(huán)境釋放一種揮發(fā)性分泌物pheromone (稱為信息素,該物質(zhì)隨著時間的推移會逐漸揮發(fā)消失信息素濃度的大小表征路徑的遠近)信息素能夠讓其他螞蟻感知從而起到一個引導的作用。通常多個路徑上均有信息素時螞蟻會優(yōu)先選擇信息素濃度高的路徑從而使?jié)舛雀叩穆窂叫畔⑺貪舛雀咝纬梢粋€正反饋。有些螞蟻并沒有像其它螞蟻一樣總重復同樣的路他們會另辟蹊徑如果另開辟的道路比原來的其他道路更短那么漸漸地更多的螞蟻被吸引到這條較短的路上來。最后經(jīng)過一段時間運行可能會出現(xiàn)一條最短的路徑被大多數(shù)螞蟻重復著。最終信息素濃度最高的路徑即是最終被螞蟻選中的最優(yōu)路徑。與其他算法相比蟻群算法是一種比較年輕的算法具有分布式計算、無中心控制、個體之間異步間接通信等特點并且易于與其他優(yōu)化算法相結(jié)合經(jīng)過不少仁人志士的不斷探索到今天已經(jīng)發(fā)展出了各式各樣的改進蟻群算法不過蟻群算法的原理仍是主干。2 蟻群算法的求解原理基于上述對蟻群覓食行為的描述該算法主要對覓食行為進行以下幾個方面模擬1模擬的圖場景中包含了兩種信息素一種表示家一種表示食物的地點并且這兩種信息素都在以一定的速率進行揮發(fā)。2每個螞蟻只能感知它周圍的小部分地方的信息。螞蟻在尋找食物的時候如果在感知范圍內(nèi)就可以直接過去如果不在感知范圍內(nèi)就要朝著信息素多的地方走螞蟻可以有一個小概率不往信息素多的地方走而另辟蹊徑這個小概率事件很重要代表了一種找路的創(chuàng)新對于找到更優(yōu)的解很重要。3螞蟻回窩的規(guī)則與找食物的規(guī)則相同。4螞蟻在移動時候首先會根據(jù)信息素的指引如果沒有信息素的指引會按照自己的移動方向慣性走下去但也有一定的機率改變方向螞蟻還可以記住已經(jīng)走過的路避免重復走一個地方。5螞蟻在找到食物時留下的信息素最多然后距離食物越遠的地方留下的信息素越少。找到窩的信息素留下的量的規(guī)則跟食物相同。蟻群算法有以下幾個特點:正反饋算法、并發(fā)性算法、較強的魯棒性、概率型全局搜索、不依賴嚴格的數(shù)學性質(zhì)、搜索時間長易出現(xiàn)停止現(xiàn)象。螞蟻轉(zhuǎn)移概率公式公式中是螞蟻k從城市i轉(zhuǎn)移到j(luò)的概率αβ分別為信息素和啟發(fā)式因子的相對重要程度為邊ij上的信息素量為啟發(fā)式因子為螞蟻k下步允許選擇的城市。上述公式即為螞蟻系統(tǒng)中的信息素更新公式是邊i,j)上的信息素量ρ是信息素蒸發(fā)系數(shù)0ρ1;為第k只螞蟻在本次迭代中留在邊i,j上的信息素量Q為一正常系數(shù)為第k只螞蟻在本次周游中的路徑長度。在螞蟻系統(tǒng)中信息素更新公式為3 蟻群算法的求解步驟1初始化參數(shù)在計算之初需要對相關(guān)參數(shù)進行初始化如蟻群規(guī)模螞蟻數(shù)量m、信息素重要程度因子α、啟發(fā)函數(shù)重要程度因子β、信息素會發(fā)銀子ρ、信息素釋放總量Q、最大迭代次數(shù)iter_max、迭代次數(shù)初值iter1。2構(gòu)建解空間將各個螞蟻隨機地置于不同的出發(fā)點對每個螞蟻kk1,2,3…m按照2-1計算其下一個待訪問城市直到所有螞蟻訪問完所有城市。3更新信息蘇計算每個螞蟻經(jīng)過路徑長度Lk(k1,2,…m記錄當前迭代次數(shù)中的最優(yōu)解最短路徑。同時根據(jù)式2-2和2-3對各個城市連接路徑上信息素濃度進行更新。4 判斷是否終止若iteriter_max則令iteriter1,清空螞蟻經(jīng)過路徑的記錄表并返回步驟2否則終止計算輸出最優(yōu)解。5判斷是否終止若iteriter_max則令iteriter1,清空螞蟻經(jīng)過路徑的記錄表并返回步驟2否則終止計算輸出最優(yōu)解。3. 判斷是否終止若iteriter_max則令iteriter1,清空螞蟻經(jīng)過路徑的記錄表并返回步驟2否則終止計算輸出最優(yōu)解。?三、部分源代碼t[4 5;16 25.8;10 45;20 55;30 65;35 55;29 31;37 26;47 27;30 31.3;31 17;14 7;35.6 13.8;26.7 22.5;21 39;38 42;5 26;28 53;20 13;10 60;26 31;54 38;7 58;12 36;30 2] %24個點,第25個點事originsave t.mat tload t.matvalue[1 1 1 2 3 2 1 3 3 2 2 2 2 2 1 2 3 3 1 1 2 1 1 1]; %24個目標的價值valuevalue/100;timezeros(1,25); %偵察UAV時間數(shù)組里面放的是飛機走的航程除以速度便是時間設(shè)速度為‘1’attacktimezeros(1,25); %打擊UAV時間數(shù)組%把偵察過的任務(wù)對應無人機走過的航程存到該任務(wù)的一個矩陣里當做時間然后打擊任務(wù)如果選定某任務(wù)check一下時間是否合格合格的話可以打擊并存入禁忌表不合格的話選次概率的%注目的是把所有目標執(zhí)行完所有任務(wù)所以每次迭代最后所有無人機收獲的總價值都一樣都是所有目標的價值之和所以本程序考慮優(yōu)先執(zhí)行價值大的目標防止無人機飛很久、打很久后攻打效率變低%的情況出現(xiàn)%%計算城市間相互距離nsize(t,1);Dzeros(n,n);for i1:nfor j1:nif i~jD(i,j)sqrt(sum((t(i,:)-t(j,:)).^2));elseD(i,j)1e-2;endendend%%初始化參數(shù)m10; %螞蟻個數(shù)alpha1; %信息素重要程度因子beta1; %啟發(fā)函數(shù)重要程度因子gama2;rho0.3; %信息素揮發(fā)因子Q1.0; %總量eta1./D; %啟發(fā)函數(shù)tauones(n,n)7.1192e-005;%信息素矩陣iter1; %迭代次數(shù)初始值iter_max80; %迭代次數(shù)最大值length_bestzeros(iter_max,1);%每次迭代最佳路徑長度(應該是一次比一次小)length_avezeros(iter_max,1); %每次迭代路徑平均長度%%迭代尋找最佳路徑while iteriter_maxwhtacell(8,1);lieendzeros(8,1);for zu1:8city_index1:25; %城市來標號table[];startzeros(4,1);temprandperm(24);for i1:4start(i)temp(i);endtable(:,1)start;j2;while (j30)for i1:4if i1 %UAV1只負責“偵察”任務(wù)if table(1,(j-1))~25table1table(1,:);table1[table1;table(3:4,:)];tabu1table1(; %UAV1的禁忌表出來了 %25如果也在tabu1里的話那么allow_index1~ismember(city_index,tabu1); %【走過的變成0能走的為1】【若tabu(1 4)則allow_index(0 1 1 0 1 1 1…)】【注意allow_index與city_index同維】allow1city_index(allow_index1); %把還能走的序號摘出來了待訪問的城市集合P1allow1;%計算城市的轉(zhuǎn)移概率if numel(allow1)~0for k1:max(size(allow1))-1P1(k)(tau(table(1,(j-1)),allow1(k))alpha)*(eta(table(1,(j-1)),allow1(k))beta)100007.1192e-004;endP1(max(size(allow1)))7.1192e-005;P1P1/sum(P1);[d1,ind1]sort(P1,2,‘descend’);%從大到小排序是d1,對應的原序號是ind1target1allow1(ind1(1));%輪盤賭法選擇下一個城市%pc1cumsum(P1); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index1find(pc1rand);%target1allow1(target_index1(1)); %這次返回的是allow數(shù)組中城市的真正序號table(1,j)target1; %把選好這個點放到路徑表里面rrD(25,table(1,1));time(table(1,1))rr;if j2for c2:(j-1)rrrrD(table(1,c-1),table(1,c));endendrrrrrD(table(1,j-1),target1);%rrr就是UAV1到該點時走過的航程time(target1)rrr;elsetable(1,j)25;endendif table(1,(j-1))25table(1,j)25;endendif i2 %UAV2只負責“打擊”任務(wù)if (table(2,(j-1))~25)table(2,1)table(1,1); %設(shè)定它第一次打擊的是UAV1偵察過的目標ta2table(1:(4(j-1)1)); %當前元素之前所有的元素tabu21[];tabu22[];tabu2[];for y1:24if sum(ta2y)2tabu21[tabu21;y];endend %出現(xiàn)過兩次的放在tabu21里tabu22setdiff(1:24,ta2); %一次都沒出現(xiàn)的放在tabu22里tabu2[tabu21’,tabu22]; %tabu2出來了allow_index2~ismember(city_index,tabu2); %【走過的變成0能走的為1】【若tabu(1 4)則allow_index(0 1 1 0 1 1 1…)】【注意allow_index與city_index同維】allow2city_index(allow_index2); %把還能走的序號摘出來了待訪問的城市集合P2allow2;%計算城市的轉(zhuǎn)移概率for k1:(length(allow2)-1)P2(k)tau(table(2,(j-1)),allow2(k))*eta(table(2,(j-1)),allow2(k))*value(allow2(k))10000;endP2(max(size(allow2)))7.1192e-005;P2P2/sum(P2);[d2,ind2]sort(P2,2,‘descend’);%從大到小排序是d1,對應的原序號是ind1target2allow2(ind2(1)); %target2d1(1);%輪盤賭法選擇下一個城市%pc2cumsum(P2); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index2find(pc2rand); %選中那個概率較大的選中的點返回的是allow數(shù)組中的序號%target2allow2(target_index2(1)); %這次返回的是allow數(shù)組中城市的真正序號%table(2,j)target2; %把選好這個點放到路徑表里面ooD(25,table(2,1));attacktime(table(2,1))oo;if j2for c2:(j-1)ooooD(table(2,c-1),table(2,c));endendoooooD(table(2,j-1),target2);%ooo就是UAV2到該點時走過的航程if numel(d2)5u2;while (oootime(target2)20 u6)target2allow2(ind2(u));oooooD(table(2,(j-1)),target2);uu1;endendtable(2,j)target2;attacktime(target2)ooo;endif table(2,(j-1))25table(2,j)25;endendif i3 %UAV3是“察打”任務(wù)if table(3,(j-1))~25ta3table(1:(4(j-1)2));tabu3[];tabu3c[];for y1:24if sum(ta3y)2tabu3[tabu3;y];endend %出現(xiàn)兩次的放在tabu3里for y1:24if sum(ta3y)1tabu3c[tabu3c;y];endend %tabu3c是待打的任務(wù)已偵查完的任務(wù)allow_index3~ismember(city_index,tabu3); %【走過的變成0能走的為1】【若tabu(1 4)則allow_index(0 1 1 0 1 1 1…)】【注意allow_index與city_index同維】allow3city_index(allow_index3); %把還能走的序號摘出來了待訪問的城市集合P3allow3;%計算城市的轉(zhuǎn)移概率for k1:(length(allow3)-1)%if ismember(allow3(k),tabu3c)1htable(3,(j-1))P3(k)(tau(table(3,j-1),allow3(k))alpha)*(eta(table(3,(j-1)),allow3(k))beta)*value(allow3(k))*100007.1192e-005;%這是要打的需要價值%else%P3(k)(tau(table(3,(j-1)),allow3(k))alpha)*(eta(table(3,(j-1)),allow3(k))beta)1007.1192e-005;%這些是待偵察的沒有價值%endendP3(max(size(allow3)))7.1192e-009;P3P3/sum(P3);[d3,ind3]sort(P3,2,‘descend’);%從大到小排序是d1,對應的原序號是ind1target3allow3(ind3(1));%輪盤賭法選擇下一個城市%pc3cumsum(P3); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index3find(pc3rand); %選中那個概率較大的選中的點返回的是allow數(shù)組中的序號%target3allow3(target_index3(1)); %這次返回的是allow數(shù)組中城市的真正序號%table(3,j)target3; %把選好這個點放到路徑表里面wwD(25,table(3,1));time(table(3,1))ww;if j2for c2:(j-1)wwwwD(table(3,c-1),table(3,c));endendwwwwwD(table(3,j-1),target3);%www就是UAV3到該點時走過的航程if ismember(target3,tabu3c)0 %偵察任務(wù)time(target3)www;table(3,j)target3;else %打擊任務(wù)attacktime(target3)www;if numel(d3)5u2;while (wwwtime(target3)20 u6)target3allow3(ind3(u));wwwwwD(table(3,(j-1)),target3);uu1;endendattacktime(target3)www;table(3,j)target3;%wwwtime(target3)10 說明此打擊任務(wù)合理endendif table(3,(j-1))25table(3,j)25;endendif i4 %UAV4是“察打”任務(wù)if table(4,(j-1))~25ta4table(1:(4(j-1)3));tabu4[];tabu4c[];for y1:24if sum(ta4y)2tabu4[tabu4;y];endend %出現(xiàn)兩次的放在tabu4里、、可以把已經(jīng)偵察過的放在tabu4c中即出現(xiàn)過一次的如果選到的是在tabu4’中的說明是要打擊的然后算一下它的航程再和偵察路徑比較for y1:24if sum(ta4y)1tabu4c[tabu4c;y];endendallow_index4~ismember(city_index,tabu4); %【走過的變成0能走的為1】【若tabu(1 4)則allow_index(0 1 1 0 1 1 1…)】【注意allow_index與city_index同維】allow4city_index(allow_index4); %把還能走的序號摘出來了待訪問的城市集合P4allow4;%計算城市的轉(zhuǎn)移概率for k1:(max(size(allow4))-1)%if ismember(allow4(k),tabu4c)1sxxtable(4,(j-1))P4(k)(tau(table(4,(j-1)),allow4(k))alpha)*(eta(table(4,(j-1)),allow4(k))beta)*value(allow4(k))*100007.1192e-005;%else%P4(k)(tau(table(4,(j-1)),allow4(k))alpha)*(eta(table(4,(j-1)),allow4(k))beta)*1007.1192e-005;%endendP4(max(size(allow4)))7.1192e-009;P4P4/sum(P4);[d4,ind4]sort(P4,2,‘descend’);%從大到小排序是d1,對應的原序號是ind1target4allow4(ind4(1));%輪盤賭法選擇下一個城市%pc4cumsum(P4); % p1 p1p2 p1p2p3 p1p2p3p4 …【p1-allow(1) p2-allow(2) …】%target_index4find(pc4rand); %選中那個概率較大的選中的點返回的是allow數(shù)組中的序號%target4allow4(target_index4(1)); %這次返回的是allow數(shù)組中城市的真正序號%table(4,j)target4; %把選好這個點放到路徑表里面qqD(25,table(4,1));time(table(4,1))qq;if j2for c2:(j-1)qqqqD(table(4,c-1),table(4,c));endendqqqqqD(table(4,j-1),target4);%www就是UAV3到該點時走過的航程if ismember(target4,tabu4c)0 %偵察任務(wù)time(target4)qqq;table(4,j)target4;else %打擊任務(wù)attacktime(target4)qqq;if numel(d4)5u2;while (qqqtime(target4)20 u6)target4allow4(ind4(u));qqqqqD(table(4,j-1),target4);uu1;endendattacktime(target4)qqq;table(4,j)target4;%wwwtime(target4)10 說明此打擊任務(wù)合理endendif table(4,(j-1))25table(4,j)25;endendend %一列結(jié)束?四、運行結(jié)果?五、matlab版本及參考文獻1 matlab版本2014a2 參考文獻[1]揭東,湯新民,陳濟達,李騰.改進蟻群算法的多無人機沖突解脫技術(shù)研究[J].武漢理工大學學報(交通科學與工程版). 2020,44(01)3 備注簡介此部分摘自互聯(lián)網(wǎng)僅供參考若侵權(quán)聯(lián)系刪除 仿真咨詢1 各類智能優(yōu)化算法改進及應用生產(chǎn)調(diào)度、經(jīng)濟調(diào)度、裝配線調(diào)度、充電優(yōu)化、車間調(diào)度、發(fā)車優(yōu)化、水庫調(diào)度、三維裝箱、物流選址、貨位優(yōu)化、公交排班優(yōu)化、充電樁布局優(yōu)化、車間布局優(yōu)化、集裝箱船配載優(yōu)化、水泵組合優(yōu)化、解醫(yī)療資源分配優(yōu)化、設(shè)施布局優(yōu)化、可視域基站和無人機選址優(yōu)化2 機器學習和深度學習方面卷積神經(jīng)網(wǎng)絡(luò)CNN、LSTM、支持向量機SVM、最小二乘支持向量機LSSVM、極限學習機ELM、核極限學習機KELM、BP、RBF、寬度學習、DBN、RF、RBF、DELM、XGBOOST、TCN實現(xiàn)風電預測、光伏預測、電池壽命預測、輻射源識別、交通流預測、負荷預測、股價預測、PM2.5濃度預測、電池健康狀態(tài)預測、水體光學參數(shù)反演、NLOS信號識別、地鐵停車精準預測、變壓器故障診斷3 圖像處理方面圖像識別、圖像分割、圖像檢測、圖像隱藏、圖像配準、圖像拼接、圖像融合、圖像增強、圖像壓縮感知4 路徑規(guī)劃方面旅行商問題TSP、車輛路徑問題VRP、MVRP、CVRP、VRPTW等、無人機三維路徑規(guī)劃、無人機協(xié)同、無人機編隊、機器人路徑規(guī)劃、柵格地圖路徑規(guī)劃、多式聯(lián)運運輸問題、車輛協(xié)同無人機路徑規(guī)劃、天線線性陣列分布優(yōu)化、車間布局優(yōu)化5 無人機應用方面無人機路徑規(guī)劃、無人機控制、無人機編隊、無人機協(xié)同、無人機任務(wù)分配6 無線傳感器定位及布局方面?zhèn)鞲衅鞑渴饍?yōu)化、通信協(xié)議優(yōu)化、路由優(yōu)化、目標定位優(yōu)化、Dv-Hop定位優(yōu)化、Leach協(xié)議優(yōu)化、WSN覆蓋優(yōu)化、組播優(yōu)化、RSSI定位優(yōu)化7 信號處理方面信號識別、信號加密、信號去噪、信號增強、雷達信號處理、信號水印嵌入提取、肌電信號、腦電信號、信號配時優(yōu)化8 電力系統(tǒng)方面微電網(wǎng)優(yōu)化、無功優(yōu)化、配電網(wǎng)重構(gòu)、儲能配置9 元胞自動機方面交通流 人群疏散 病毒擴散 晶體生長10 雷達方面卡爾曼濾波跟蹤、航跡關(guān)聯(lián)、航跡融合