亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matlab遺傳算法解決 tsp 問題.txt

?? MATLAB繪制出權值wv和閥值bv確定的誤差曲面
?? TXT
字號:
遺傳算法解決 TSP 問題(附matlab源程序)2007年12月04日 星期二 下午 04:18已知n個城市之間的相互距離,現(xiàn)有一個推銷員必須遍訪這n個城市,并且每個城市
只能訪問一次,最后又必須返回出發(fā)城市。如何安排他對這些城市的訪問次序,可使其
旅行路線的總長度最短?
    用圖論的術語來說,假設有一個圖g=(v,e),其中v是頂點集,e是邊集,設d=(dij)
是由頂點i和頂點j之間的距離所組成的距離矩陣,旅行商問題就是求出一條通過所有頂
點且每個頂點只通過一次的具有最短距離的回路。
    這個問題可分為對稱旅行商問題(dij=dji,,任意i,j=1,2,3,…,n)和非對稱旅行商
問題(dij≠dji,,任意i,j=1,2,3,…,n)。
    若對于城市v={v1,v2,v3,…,vn}的一個訪問順序為t=(t1,t2,t3,…,ti,…,tn),其中
ti∈v(i=1,2,3,…,n),且記tn+1= t1,則旅行商問題的數(shù)學模型為:
     min     l=σd(t(i),t(i+1)) (i=1,…,n)
    旅行商問題是一個典型的組合優(yōu)化問題,并且是一個np難問題,其可能的路徑數(shù)目
與城市數(shù)目n是成指數(shù)型增長的,所以一般很難精確地求出其最優(yōu)解,本文采用遺傳算法
求其近似解。
    遺傳算法:
初始化過程:用v1,v2,v3,…,vn代表所選n個城市。定義整數(shù)pop-size作為染色體的個數(shù)
,并且隨機產(chǎn)生pop-size個初始染色體,每個染色體為1到18的整數(shù)組成的隨機序列。
適應度f的計算:對種群中的每個染色體vi,計算其適應度,f=σd(t(i),t(i+1)).
評價函數(shù)eval(vi):用來對種群中的每個染色體vi設定一個概率,以使該染色體被選中
的可能性與其種群中其它染色體的適應性成比例,既通過輪盤賭,適應性強的染色體被
選擇產(chǎn)生后臺的機會要大,設alpha∈(0,1),本文定義基于序的評價函數(shù)為eval(vi)=al
pha*(1-alpha).^(i-1) 。[隨機規(guī)劃與模糊規(guī)劃]
選擇過程:選擇過程是以旋轉賭輪pop-size次為基礎,每次旋轉都為新的種群選擇一個
染色體。賭輪是按每個染色體的適應度進行選擇染色體的。
   step1 、對每個染色體vi,計算累計概率qi,q0=0;qi=σeval(vj)   j=1,…,i;i=1,
…pop-size.
   step2、從區(qū)間(0,pop-size)中產(chǎn)生一個隨機數(shù)r;
   step3、若qi-1   step4、重復step2和step3共pop-size次,這樣可以得到pop-size個復制的染色體。
grefenstette編碼:由于常規(guī)的交叉運算和變異運算會使種群中產(chǎn)生一些無實際意義的
染色體,本文采用grefenstette編碼《遺傳算法原理及應用》可以避免這種情況的出現(xiàn)
。所謂的grefenstette編碼就是用所選隊員在未選(不含淘汰)隊員中的位置,如:
          8 15 2 16 10 7 4 3 11 14 6 12 9 5 18 13 17 1
          對應:
          8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1。
交叉過程:本文采用常規(guī)單點交叉。為確定交叉操作的父代,從 到pop-size重復以下過
程:從[0,1]中產(chǎn)生一個隨機數(shù)r,如果r            將所選的父代兩兩組隊,隨機產(chǎn)生一個位置進行交叉,如:
          8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1
          6 12 3 5 6 8 5 6 3 1 8 5 6 3 3 2 1 1
交叉后為:
         8 14 2 13 8 6 3 2 5 1 8 5 6 3 3 2 1 1
         6 12 3 5 6 8 5 6 3 7 3 4 3 2 4 2 2 1
變異過程:本文采用均勻多點變異。類似交叉操作中選擇父代的過程,在r 選擇多個染色體vi作為父代。對每一個選擇的父代,隨機選擇多個位置,使其在每位置
按均勻變異(該變異點xk的取值范圍為[ukmin,ukmax],產(chǎn)生一個[0,1]中隨機數(shù)r,該點
變異為x'k=ukmin+r(ukmax-ukmin))操作。如:
         8 14 2 13 8 6 3 2 5 7 3 4 3 2 4 2 2 1
      變異后:
        8 14 2 13 10 6 3 2 2 7 3 4 5 2 4 1 2 1
反grefenstette編碼:交叉和變異都是在grefenstette編碼之后進行的,為了循環(huán)操作
和返回最終結果,必須逆grefenstette編碼過程,將編碼恢復到自然編碼。
循環(huán)操作:判斷是否滿足設定的帶數(shù)xzome,否,則跳入適應度f的計算;是,結束遺傳
操作,跳出。 



matlab 代碼



distTSP.txt
0 6 18 4 8
7 0 17 3 7
4 4 0 4 5 
20 19 24 0 22
8 8 16 6 0 
%GATSP.m
function gatsp1()
clear;
load distTSP.txt;
distance=distTSP;
N=5;
ngen=100;
ngpool=10;
%ngen=input('# of generations to evolve = ');
%ngpool=input('# of chromosoms in the gene pool = '); % size of genepool
gpool=zeros(ngpool,N+1); % gene pool
for i=1:ngpool, % intialize gene pool 
gpool(i,:)=[1 randomize([2:N]')' 1]; 
for j=1:i-1
while gpool(i,:)==gpool(j,:) 
       gpool(i,:)=[1 randomize([2:N]')' 1]; 
                end 
             end
          end

costmin=100000; 
    tourmin=zeros(1,N); 
      cost=zeros(1,ngpool); 
increase=1;resultincrease=1;
      for i=1:ngpool, 
          cost(i)=sum(diag(distance(gpool(i,:)',rshift(gpool(i,:))')));
     end
% record current best solution
[costmin,idx]=min(cost);
tourmin=gpool(idx,:);
disp([num2str(increase) 'minmum trip length = ' num2str(costmin)])

costminold2=200000;costminold1=150000;resultcost=100000;
tourminold2=zeros(1,N);
tourminold1=zeros(1,N);
resulttour=zeros(1,N);
while (abs(costminold2-costminold1) ;100)&(abs(costminold1-costmin) ;100)&(increase ;500)

costminold2=costminold1; tourminold2=tourminold1; 
costminold1=costmin;tourminold1=tourmin; 
increase=increase+1; 
if resultcost>costmin 
   resultcost=costmin; 
   resulttour=tourmin; 
   resultincrease=increase-1; 
         end 
for i=1:ngpool, 
           cost(i)=sum(diag(distance(gpool(i,:)',rshift(gpool(i,:))'))); 
end 
% record current best solution 
[costmin,idx]=min(cost); 
tourmin=gpool(idx,:); 
%============== 
% copy gens in th gpool according to the probility ratio 
% >1.1 copy twice 
% >=0.9 copy once 
% ;0.9 remove 
[csort,ridx]=sort(cost); 
% sort from small to big. 
csum=sum(csort); 
caverage=csum/ngpool; 
cprobilities=caverage./csort; 
copynumbers=0;removenumbers=0; 
for i=1:ngpool, 
    if cprobilities(i) >1.1 
             copynumbers=copynumbers+1; 
                    end 
           if cprobilities(i) <0.9 
                   removenumbers=removenumbers+1; 
                           end 
                end 
   copygpool=min(copynumbers,removenumbers); 
               for i=1:copygpool 
                  for j=ngpool:-1:2*i+2 gpool(j,:)=gpool(j-1,:); 
            end 
                   gpool(2*i+1,:)=gpool(i,:); 
          end 
                 if copygpool==0 
                       gpool(ngpool,:)=gpool(1,:); 
                  end 
%========= 
%when genaration is more than 50,or the patterns in a couple are too close,do mutation 
for i=1:ngpool/2 
        % 
sameidx=[gpool(2*i-1,:)==gpool(2*i,:)]; 
diffidx=find(sameidx==0); 
           if length(diffidx)<=2 
                gpool(2*i,:)=[1 randomize([2:12]')' 1]; 
                           end 
                               end 
%=========== 
%cross gens in couples 
           for i=1:ngpool/2 
                  [gpool(2*i-1,:),gpool(2*i,:)]=crossgens(gpool(2*i-1,:),gpool(2*i,:)); 
       end 

        for i=1:ngpool, 
              cost(i)=sum(diag(distance(gpool(i,:)',rshift(gpool(i,:))'))); 
       end 
% record current best solution 
[costmin,idx]=min(cost); 
tourmin=gpool(idx,:); 
disp([num2str(increase) 'minmum trip length = ' num2str(costmin)])
end   

disp(['cost function evaluation: ' int2str(increase) ' times!'])
disp(['n:' int2str(resultincrease)])
disp(['minmum trip length = ' num2str(resultcost)])
disp('optimum tour = ')
disp(num2str(resulttour)) 
%====================================================
function B=randomize(A,rowcol)
% Usage: B=randomize(A,rowcol)
% randomize row orders or column orders of A matrix
% rowcol: if =0 or omitted, row order (default)
% if = 1, column order

rand('state',sum(100*clock))
if nargin == 1, 
        rowcol=0;
end
         if rowcol==0, 
              [m,n]=size(A); 
              p=rand(m,1); 
              [p1,I]=sort(p); 
              B=A(I,:);
elseif rowcol==1,
          Ap=A'; 
          [m,n]=size(Ap); 
          p=rand(m,1); 
          [p1,I]=sort(p); 
          B=Ap(I,:)';
end
%=====================================================
function y=rshift(x,dir)
% Usage: y=rshift(x,dir)
% rotate x vector to right (down) by 1 if dir = 0 (default)
% or rotate x to left (up) by 1 if dir = 1 
if nargin ;2, dir=0; end 
[m,n]=size(x); 
if m>1, 
if n == 1, 
    col=1; 
elseif n>1, 
    error('x must be a vector! break'); 
end % x is a column vectorelseif m == 1, 
if n == 1, y=x; 
return 
elseif n>1, 
     col=0; % x is a row vector endend 
if dir==1, % rotate left or up 
       if col==0, % row vector, rotate left 
             y = [x(2:n) x(1)]; 
       elseif col==1, 
             y = [x(2:n); x(1)]; % rotate up 
end
   elseif dir==0, % default rotate right or down 
              if col==0, 
                    y = [x(n) x(1:n-1)]; 
             elseif col==1 % column vector 
                       y = [x(n); x(1:n-1)]; 
                   end
             end
%==================================================
function [L1,L2]=crossgens(X1,X2)
% Usage:[L1,L2]=crossgens(X1,X2)
s=randomize([2:12]')';
n1=min(s(1),s(11));n2=max(s(1),s(11));
X3=X1;X4=X2;
for i=n1:n2, 
                for j=1:13, 
                     if X2(i)==X3(j), 
                          X3(j)=0; 
                             end 
                  if X1(i)==X4(j),                          X4(j)=0; 
               end 
           end
        end
   j=13;k=13;
    for i=12:-1:2, 
          if X3(i)~=0, 
               j=j-1; 
                 t=X3(j);X3(j)=X3(i);X3(i)=t; 
               end 
                    if X4(i)~=0, 
                           k=k-1; 
                      t=X4(k);X4(k)=X4(i);X4(i)=t; 
                   end
               end
           for i=n1:n2 
              X3(2+i-n1)=X2(i); 
              X4(2+i-n1)=X1(i);
           end
L1=X3;L2=X4;
%=======================
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜臀av一区二区三区| 国产乱码精品一区二区三| 激情综合五月婷婷| 91老司机福利 在线| 欧美大片在线观看一区| 亚洲一区在线电影| 国产精品18久久久久| 欧美喷水一区二区| 综合久久久久久久| 国产乱码精品1区2区3区| 欧美日本高清视频在线观看| 中文字幕av一区二区三区免费看| 日本亚洲欧美天堂免费| 在线免费观看成人短视频| 国产午夜精品久久久久久久| 六月婷婷色综合| 欧美午夜一区二区三区 | 日韩一区二区麻豆国产| 亚洲欧美一区二区三区国产精品 | 国产视频一区在线观看| 日韩电影一区二区三区四区| 日本韩国欧美在线| 成人免费一区二区三区视频| 成人av手机在线观看| 久久久久国产一区二区三区四区| 蜜桃精品视频在线| 8v天堂国产在线一区二区| 一级精品视频在线观看宜春院| 成人18精品视频| 欧美韩国日本不卡| 成人精品视频一区| 国产精品久久久久久久久免费相片| 国产一区二区视频在线| 26uuu亚洲综合色欧美 | 日本韩国一区二区三区| 亚洲摸摸操操av| 91网页版在线| 一区二区三区四区蜜桃| 欧美在线不卡视频| 亚洲成年人影院| 538prom精品视频线放| 国产盗摄一区二区| 日本一区二区电影| 91麻豆产精品久久久久久| 一区二区三区中文字幕| 欧美特级限制片免费在线观看| 午夜精品福利一区二区蜜股av | 亚洲国产高清不卡| www.亚洲国产| 亚洲国产综合色| 欧美精品在线观看一区二区| 蜜桃av噜噜一区二区三区小说| 精品国产成人系列| 成人国产电影网| 亚洲第一在线综合网站| 日韩一级二级三级| 不卡一区中文字幕| 亚洲午夜久久久久久久久电影网 | 欧美精品久久99久久在免费线| 婷婷中文字幕一区三区| 久久久777精品电影网影网 | 99久免费精品视频在线观看| 亚洲精品免费播放| 欧美一区永久视频免费观看| 国产精品影视在线| 亚洲欧洲成人av每日更新| 欧美日韩久久不卡| 丁香网亚洲国际| 亚洲妇女屁股眼交7| 久久久久久久久久久99999| 色综合天天综合在线视频| 喷白浆一区二区| 亚洲天堂av一区| 日韩亚洲欧美在线| 色婷婷亚洲综合| 韩国av一区二区三区在线观看| 亚洲精品一二三| 精品91自产拍在线观看一区| 色哟哟精品一区| 国产一区二区视频在线| 亚洲成人av一区二区| 中文字幕一区二区三区在线不卡 | 国产精品乱人伦| 欧美一区二区三区在线| 91传媒视频在线播放| 国产一区二区三区免费观看| 三级久久三级久久久| 亚洲人快播电影网| 国产精品午夜久久| 精品国精品自拍自在线| 欧美精品色综合| 欧美在线制服丝袜| 99精品欧美一区| 国产精品一品二品| 久久成人免费日本黄色| 婷婷久久综合九色综合绿巨人 | 国产一区二区三区视频在线播放| 亚洲欧洲精品一区二区三区| 在线免费观看日本欧美| 国产白丝精品91爽爽久久| 日韩电影在线观看电影| 欧美美女视频在线观看| 欧美视频一二三区| 99免费精品视频| 国产凹凸在线观看一区二区| 日本不卡1234视频| 亚洲人亚洲人成电影网站色| 国产精品久久久久9999吃药| 欧美一区二区观看视频| 在线免费一区三区| 91亚洲午夜精品久久久久久| 国模大尺度一区二区三区| 激情综合网av| 日韩和欧美的一区| 亚洲国产中文字幕| 亚洲精品日韩综合观看成人91| 国产精品久久久久影院老司| 久久久亚洲国产美女国产盗摄 | 国产成人综合精品三级| 人人狠狠综合久久亚洲| 日韩成人一级片| 午夜精品一区二区三区免费视频| 亚洲成人免费看| 亚洲成人免费在线| 天天综合网天天综合色| 亚洲激情图片一区| 亚洲视频资源在线| 久久久久国产精品麻豆ai换脸| 久久精品一区二区三区不卡牛牛| 26uuu成人网一区二区三区| 欧美成人一区二区| 日韩欧美成人一区二区| 欧美一区二区三区播放老司机| 欧美mv和日韩mv的网站| 欧美哺乳videos| 久久女同精品一区二区| 久久蜜桃av一区二区天堂| 精品国产污污免费网站入口 | 欧美特级限制片免费在线观看| 91啦中文在线观看| 欧美日韩午夜在线视频| 欧美日韩国产高清一区| 91精品免费在线观看| 91视频在线观看| 欧美一级二级三级乱码| 久久先锋影音av| 日韩一区精品视频| 日韩精品乱码免费| 国产91精品在线观看| 99精品久久免费看蜜臀剧情介绍| 99久精品国产| 欧美精品一卡两卡| 久久综合狠狠综合久久综合88 | 久久这里只有精品6| 欧美极品xxx| 一区二区三区四区在线免费观看 | 久久国产欧美日韩精品| 国产在线一区观看| 99视频一区二区| 日韩精品一区在线| 日本一区二区成人| 亚洲成a人片在线不卡一二三区| 美女视频网站久久| 成人黄色a**站在线观看| 欧美丰满美乳xxx高潮www| 精品粉嫩超白一线天av| 成人免费在线播放视频| 免费欧美高清视频| 韩国三级中文字幕hd久久精品| 91免费观看视频在线| 日韩一级黄色大片| 亚洲男女毛片无遮挡| 久久99久久99| 成人激情校园春色| 欧美一区午夜视频在线观看| 国产精品美女一区二区三区 | 欧美精品777| 日本一区二区成人| 日本aⅴ精品一区二区三区| 欧美午夜精品电影| 中文字幕欧美日本乱码一线二线| 亚洲成人激情社区| 成人av资源在线观看| 91亚洲男人天堂| 麻豆精品视频在线观看视频| 成人av影视在线观看| 日韩欧美电影一区| 一区二区三区欧美激情| 黄一区二区三区| 欧美高清www午色夜在线视频| 中文字幕成人网| 国产在线精品国自产拍免费| 色吊一区二区三区| 亚洲一区二区三区小说| 丁香天五香天堂综合| 精品久久久久久最新网址| 亚洲国产一区二区三区青草影视| 在线一区二区三区做爰视频网站| 国产拍揄自揄精品视频麻豆 | 91精品国产欧美日韩|