MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)
生活随笔
收集整理的這篇文章主要介紹了
MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言:
本文大體的思路是先對人工魚進行編碼,然后采用人工魚群算法求解TSP問題中的覓食、聚群、追尾和隨機行為對人工魚群進行更新。
但是亟需需要解決的問題是:對于CVRP問題,如何對人工魚進行編碼。如果顧客數目為L,提供的車輛數目為K,那么編碼的長度為K*L,編碼的方式為對[1,K*L]之間所有整數的隨機排序(用matlab語言表示為randperm(K*L)),編碼表現形式為[S1,S2,...,SK*L],Sj表示第j個位置上的數字。
舉個例子,如果顧客數目為3,提供的車輛數目為2,那么一條可能的人工魚為[3 6 4 1 2 5]。
編碼結束后,需要對人工魚進行解碼,即這條人工到底代表什么含義,或者說我們根據這條人工魚能否解碼出每個顧客由哪輛車服務,以及每輛車訪問顧客的順序是什么。
下面開始對人工魚進行解碼處理:
已知:人工魚的表現形式[S1,S2,...,SK*L],Sj表示第j個位置上的數字。
下面兩個計算公式計算出第j個位置上的數字Sj所對應的顧客編號i和該顧客由車輛m進行服務。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 又到了年终总结的时候了,数据分析的年度工
- 下一篇: 产品经理必备知识之如何用CREATE模型