1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          【VRP問題】禁忌搜索算法求解VRP問題

          來源:互聯網轉載 時間:2024-01-29 07:54:36

          一、局部領域搜索

          又稱爬山啟發式算法,從當前的節點開始,和周圍的鄰居節點的值進行比較。如果當前節點是最大的,那么返回當前節點,作為最大值(即山峰最高點);反之就用最高的鄰居節點替換當前節點,從而實現向山峰的高處攀爬的目的。它是禁忌搜索的基礎,TS算法是在其上改進而來。

          優點:

          1、容易理解,容易實現,具有較強的通用性;

          2、局部開發能力強,收斂速度很快。

          缺點:

          1、全局開發能力弱,只能搜索到局部最優解;

          2、搜索結果完全依賴于初始解和鄰域的映射關系。

          通過針對爬山法的分析,提出了TS搜索算法:

          改進1:接受劣解。

          改進2:引入禁忌表。

          改進3:引入長期表和中期表。

          二、TS算法的特點:

          1、基本思想——避免在搜索過程中的循環

          2、只進不退的原則,通過禁忌表實現

          3、不以局部最優作為停止準則

          4、鄰域選優的規則模擬了人類的記憶功能

          TS算法構成要素:

          (1)編碼方式

          將不相同的n件物品分為m組,可以用的編碼:

          a、帶分隔符的順序編碼

          以自然數1~n分別代表n件物品,n個數加上m-1個分割符號混編在一起,隨機排列。 如:1-3-4-0-2-6-7-5-0-8-9

          b、自然數編碼

          編碼的每一位分別代表一件物品,而每一位的值代表該物品所在的分組。

          如:1-2-1-1-2-2-2-3-3

          (2)初始解的獲取

          可以隨機給出初始解,也可以事先使用其他啟發式等算法給出一個較好的初始解。

          (3)移動鄰域

          移動是從當前解產生新解的途徑,例如上述問題中用移動s產生新解s(x)。 從當前解可以進行的所有移動構成鄰域,也可以理解為從當前解經過“一步”可以到達的區域。

          (4)禁忌表

          禁忌表的作用:防止搜索出現循環?

          (1)記錄前若干步走過的點、方向或目標值,禁止返回

          (2)表是動態更新的

          (3)表的長度稱為Tabu-Size

          禁忌表的主要指標(兩項指標)

          禁忌對象:禁忌表中被禁的那些變化元素

          禁忌長度:禁忌的步數

          禁忌對象(三種變化)

          以狀態本身或者狀態的變化作為禁忌對象

          以狀態分量以及分量的變化作為禁忌對象

          采用類似的等高線做法,以目標值變化作為禁忌對象

          禁忌長度:可以是一個固定的常數(T=c),也可以是動態變化的,可按照某種規則或公式在區間內變化。

          禁忌長度過短,一旦陷入局部最優點,出現循環無法跳出;

          禁忌長度過長,候選解全部被禁忌,造成計算時間較大,也可能造成計算無法繼續下去。

          (5)渴望水平函數

          A(x,s)一般為歷史上曾經達到的最好目標值,若有C(s(x))<A(x,s)則S(x)是不受T表限制。即使s(x)∈T,仍可取 x=s(x)。A(x,s)稱為渴望水平函數。

          (6)停止準則

          (1)給定最大迭代步數(最常用 )

          (2)設定某個對象的最大禁忌頻率。

          (3)設定適配值的偏離閾值。

          %Ini adalah implementasi Tabu Search untuk Traveling Salesman%Problem?%untuk merekam waktu komputasi yang dibutuhkantic;clearclc%輸入數據N = 31;TT=[1 82 76 2 96 44 3 50 5 4 49 8 5 13 7 6 29 89 7 58 30 8 84 39 9 14 24 10 2 39 11 3 82 12 5 10 13 98 52 14 84 25 15 61 59 16 1 65 17 88 51 18 91 2 19 19 32 20 93 3 21 50 93 22 98 14 23 5 42 24 42 9 25 61 62 26 9 97 27 80 55 28 57 69 29 23 15 30 20 70 31 85 60 32 98 5];X = TT(:,2);Y = TT(:,3);ZZ=[1 0 2 19 3 21 4 6 5 19 6 7 7 12 8 16 9 6 10 16 11 8 12 14 13 21 14 16 15 3 16 22 17 18 18 19 19 1 20 24 21 8 22 12 23 4 24 8 25 24 26 24 27 2 28 20 29 15 30 2 31 14 32 9];Demand =ZZ(:,2);Vehicle_load = 100; %車輛載重限制?% Parameter TSruncount= 500;Solution_count = 200;?% 計算出城市之間的距離矩陣Distancematrix = generatedistancematrix(X, Y);JaarakSolusiMaksimum = sum(sum(Distancematrix));?%生成初始解%Candidate_TSP_xulie = GenerateSolusiNearestNeighbour(Distancematrix);Candidate_TSP_xulie = generatesolusirandom(N); %初始序列(隨機生成一個n的序列)Candidate_VRP_xulie = converttovrpsolution(Candidate_TSP_xulie, Demand, Vehicle_load); %初始解Candidate_VRP_value = calculatetotaldistance(Candidate_VRP_xulie, Distancematrix); %車輛行駛距離Candidate_VRP_value??% 禁忌表初始化tabulength = 10;TabuList = ones(tabulength, 3);?%Catat kondisi awal%Tsekarang = Tawal;SolusiTerbaik = Candidate_TSP_xulie; %全局序列best_so_far.VRP = Candidate_VRP_xulie; %全局解best_so_far.value = Candidate_VRP_value; % 全局目標值SolusiSaatIni = Candidate_TSP_xulie; %solusi iterasi %全局序列SolusiVRPSaatIni = Candidate_VRP_xulie; %solusi iterasi %全局解JarakSolusiSaatIni = Candidate_VRP_value; % Jarak solusi iterasi %全局目標值?Neighborhood_TSP_xulie = zeros(Solution_count, N + 2); %生成一個100*12的矩陣,用于存放變異后的解Neighborhood_VRP_xulie = zeros(Solution_count, N * 2 + 1); %生成一個100*21的矩陣Neighborhood_VRP_value = zeros(1, Solution_count);%生成一個1*100的矩陣Variation_list = zeros(Solution_count, 3); %生成一個100*3的矩陣,用于存放每個解的變異的種類和變異的兩個位置?better_so_far_TSP.xulie = Candidate_TSP_xulie ;better_so_far_VRP.xulie = Candidate_VRP_xulie;best_so_far.value =Candidate_VRP_value;?better_so_far_TSP_Tabu.xulie = zeros(1, N + 2);better_so_far_VRP_Tabu.xulie = zeros(1, N * 2 + 1);better_so_far_Tabu.value = 0;?preObjV=best_so_far.value;figure;hold on;box onxlim([0,runcount])title('優化過程')xlabel('代數')ylabel('最優值')% Mulai iterasi TSfor i = 1 : runcount%1000    line([i-1,i],[preObjV,best_so_far.value]);pause(0.0001)    preObjV=best_so_far.value;    %generate solusi tetangga    for j = 1 : Solution_count %100                Pilihan = randi(3); %randi 生成均勻分布的偽隨機整數,用于判斷使用哪一種變異        switch (Pilihan)            case 1 % 1-insert                [Neighborhood_TSP_xulie(j, :) Index_1 Index_2 ] = PerformInsert(SolusiSaatIni); %變異,返回變異后序列,變異的客戶點                Neighborhood_VRP_xulie(j, :) = converttovrpsolution(Neighborhood_TSP_xulie(j, :), Demand, Vehicle_load);                Neighborhood_VRP_value(j) = calculatetotaldistance(Neighborhood_VRP_xulie(j, :), Distancematrix);                            case 2 % 1-swap                [Neighborhood_TSP_xulie(j, :)  Index_1 Index_2 ] = PerformSwap(SolusiSaatIni); %變異,兩個位置的客戶點對調                Neighborhood_VRP_xulie(j, :) = converttovrpsolution(Neighborhood_TSP_xulie(j, :), Demand, Vehicle_load);                Neighborhood_VRP_value(j) = calculatetotaldistance(Neighborhood_VRP_xulie(j, :), Distancematrix);                            case 3 % 2-opt                [Neighborhood_TSP_xulie(j, :)  Index_1 Index_2 ] = Perform2Opt(SolusiSaatIni); %變異,兩個位置之間的客戶點完全顛倒                Neighborhood_VRP_xulie(j, :) = converttovrpsolution(Neighborhood_TSP_xulie(j, :), Demand, Vehicle_load);                Neighborhood_VRP_value(j) = calculatetotaldistance(Neighborhood_VRP_xulie(j, :), Distancematrix);        end        Variation_list(j, :) = [Pilihan  Index_1 Index_2];    end        %bedakan antara yg tabu maupun yg tidak tabu    ApakahTabu = zeros(1, Solution_count); %Solution_count=100控制每一代解的個數,100*1的矩陣    for j = 1 : Solution_count        for k = 1 : tabulength %tabulength=10            if Variation_list(j, :) == TabuList(k, :) %判斷每一代當中的100個解的變異種類和變異的位置是否在禁忌表中                ApakahTabu(j) = 1; %ApakahTabu是一個100*1的矩陣用于判斷100個解的變異類別是否已經在禁忌表中            end        end    end??        %尋找每代100個候選解中在禁忌表中和不在禁忌表中的最佳解,并記錄其位置    better_so_far_Tabu_ord = 1;    better_so_far_ord = 1;      better_so_far.value = JaarakSolusiMaksimum; %存放到目前為止不在禁忌表中的最小值,一開始用一個比較大的值表示    better_so_far_Tabu.value = JaarakSolusiMaksimum; %存放禁忌表中的最小值,一開始用一個比較大的值表示    for j = 1 : Solution_count  %        if  ApakahTabu(j) == 0 % 判斷第i代100個解的變異類型是否在禁忌表中,0表示不在            if Neighborhood_VRP_value(j) < better_so_far.value %判斷Neighborhood_VRP_value(100個解的車輛行駛距離)                better_so_far_TSP.xulie = Neighborhood_TSP_xulie(j, :); %存放不在禁忌表中的到當前為止的最佳TSP                better_so_far_VRP.xulie = Neighborhood_VRP_xulie(j, :); %存放不在禁忌表中的到目前為止的最佳VRP                better_so_far.value = Neighborhood_VRP_value(j); %存放不在禁忌表中的目前為止的最佳車輛行駛距離                better_so_far_ord = j; %存放不在禁忌表中的到目前為止的最佳解的位置,即每代第幾個解,100個解都查看過去后就變成每代最佳解            end        else            if Neighborhood_VRP_value(j) <better_so_far_Tabu.value                  better_so_far_TSP_Tabu.xulie = Neighborhood_TSP_xulie(j, :);                better_so_far_VRP_Tabu.xulie = Neighborhood_VRP_xulie(j, :);                better_so_far_Tabu.value = Neighborhood_VRP_value(j);                better_so_far_Tabu_ord = j;            end        end    end    % 比較每代100個不在禁忌表和在禁忌表中的最佳候選解的大小,并根據是否滿足藐視規則更新禁忌表,最佳值    if better_so_far_Tabu.value < best_so_far.value %表示不滿足藐視規則,因為禁忌表的最小值小于不在禁忌表的最小值,說明這一代100個候選解的最佳解小于全局最佳解        SolusiTerbaik = better_so_far_TSP_Tabu.xulie; %solusi global        best_so_far.VRP = better_so_far_VRP_Tabu.xulie; %solusi global        best_so_far.value = better_so_far_Tabu.value; % Jarak solusi global        SolusiSaatIni = better_so_far_TSP_Tabu.xulie; %solusi iterasi        SolusiVRPSaatIni = better_so_far_VRP_Tabu.xulie; %solusi iterasi        JarakSolusiSaatIni = better_so_far_Tabu.value; % Jarak solusi iterasi        %更新禁忌表        IndeksTabuList = mod(i, tabulength) + 1; %tabulength=10        TabuList(IndeksTabuList, :) = Variation_list(better_so_far_Tabu_ord, :);    else %滿足藐視規則        SolusiSaatIni = better_so_far_TSP.xulie; %solusi iterasi        SolusiVRPSaatIni = better_so_far_VRP.xulie; %solusi iterasi        JarakSolusiSaatIni = better_so_far.value; % Jarak solusi iterasi        if better_so_far.value < best_so_far.value            SolusiTerbaik = better_so_far_TSP.xulie; %solusi global            best_so_far.VRP = better_so_far_VRP.xulie; %solusi global            best_so_far.value = better_so_far.value; % Jarak solusi global        end        %update tabu list        IndeksTabuList = mod(i, tabulength) + 1;        TabuList(IndeksTabuList, :) = Variation_list(better_so_far_ord, :);    end   end% disp('berapa kali PP');% berapakalipp = hitungberapakalipp (sol2);% disp(berapakalipp);?disp ('Jarak Terbaik');disp (best_so_far.value);disp (best_so_far.VRP);toc?

          ?

          完整代碼添加QQ1575304183

          標簽:vrp問題-

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          什么是企業EAP?EAP(員工援助計劃)是一個員工心理援助計劃。其內容不同于心理咨詢。心理咨詢的對象是正常人,但這種“正?!敝饕c精神病的“不正?!毕鄬?。對于人們的心理健康來說,其實它不是一個二元變量,而是一個連續譜變量(從不健康到非常健康的連續譜),而這個連續譜是隨著時間而變化的。任何兩個普通人,他們的心理健康水平都是不同的,有的各方面都很健康,有的情緒方面很健康,但人際關系方面卻不是很健康。我...

          常州恐龍園要怎么去?恐龍公園的門票是120元。從常州火車站往南走到長途汽車站,上29路,大約1小時:市區中華恐龍園線——縣直街袁茵第三汽車公司上行:縣直街-小營前路橋市場-長洲賓館-艾博路-公交集團公司-春亭橋(鵬程賓館)-蔻馳站-小東門商場(火車站)-紅梅新村-北路-紅星美凱龍-北環新村-永寧花園-翠竹新村-翠竹東站-棗江花園-棗江北站-體育中心-國際學校-。下游:中華恐龍園-建東學院-何海東路...

          常德市十一中和育才哪個好?十一中好!市十一中興辦于2000年7月,地處城區中心,東臨朗州路,北接濱湖路,南望洞庭大道,位置優越,交通便利,環境幽雅,是省級“園林式”單位,省級“文明衛生”單位,市級“綠色學?!?。幾年來,學校堅持“育人是根本,校風是靈魂,教師是關鍵,教學為中心,科研為先導,質量為生命”的辦學思想,求真務實,勵精圖治。常德市育才中學是2019年8月經常德市人民政府批準成立的一所獨立公辦...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>