最近在做畢業**,**是關於車輛路徑的,但是卡在染色體編碼這個問題上很久了。
我的染色體編碼的思路是:
假設在某車輛排程問題中存在n個客戶點k輛車進行作業。為避免將不同路線組合在一起時無法區分的問題,在構造染色體時新增虛擬節點0。在編碼時首先生成n個客戶點的乙個全排列,然後將(k+1)個0隨機插入此全排列中,並保證首尾為0,可編成長度為(n+k+1)的染色體。舉個例子,如果某乙個解的編碼是:0258607430190,那麼它表示有3條路線:2—5—8—6;7—4—3;1—9。
但問題就是,生成n個客戶點的乙個全排列後,怎麼編碼將(k+1)個0隨機插入此全排列中。下面是我的部分**:
%% 初始化種群(染色體長度為n+k+1,)
%輸入:
% nind:種群大小
% n: 客戶點的數量
% k: 牽引車的數目
%輸出:
%初始種群
function chrom=initpop(nind,n,k)
chrom=zeros(nind,n,k);%用於儲存種群
for i=1:nind
chrom(i,:)=randperm(n);%隨機生成染色體
???(接下來該怎麼寫呢?)
endend
有大佬能為我提供點什麼思路嗎?
遺傳演算法(二) 編碼
在實現遺傳演算法時,首要遇到的關鍵問題就是編碼 encode 編碼的方法直接影響到了遺傳演算法的交叉運算元 變異運算元等遺傳運算元的運算,因此很大程度上決定了遺傳進化的效率。編譯碼過程圖示 編碼原則 下面主要總結一下最主流的一些編碼方法 含義 個體基因型使用二值符號集來構成,整個基因型是乙個二進位制...
遺傳演算法 二進位制編碼方式
用遺傳演算法求y x sin 10 pi x 2的最大值 1 2 精確到6位小數 pow 2,21 3 1000000 2,22 編碼的二進位制長度為22 include include include include include define n 3000000 define pi 3.141...
遺傳演算法之二進位制編碼
遺傳演算法 ga 的流程如圖所示 把所需要選擇的特徵進行編號,每乙個特徵就是乙個基因,乙個解就是一串基因的組合。為了減少組合數量,在影象中進行分塊,然後把每一塊看成乙個基因進行組合優化的計算。每個解得基因數量是要通過實驗確定的。遺傳演算法不能直接處理問題空間的引數,必須把它們轉換成遺傳空間的由基因按...