一、蚁群算法简介

蚁群算法是对自然界蚂蚁的寻径方式进行模似而得出的一种仿生算法:蚂蚁在运动过程中,能够在它所经过的路径上留下信息素(pheromone)的物质进行信息传递,而且蚂蚁在运动过程中能够感知这种物质,并以此指导自己的运动方向。由大量蚂蚁组成的蚁群集体行为便表现出一种信息正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。蚁群算法具有分布计算、信息正反馈和启发式搜索的特征,本质上是进化算法中的一种启发式全局优化算法。

二、TSP问题(旅行商问题)

T S P 问 题 可 以 用 一 个 带 权 完 全 图G=(N,A)来表示,其中N是带有n=|N|点(城市)的集合,A是完全连接这些点的边的集合。每一条边(i,j)属于A都带有一个权值,它代表城市i与城市j之间的距离。TSP问题就是要找到图中的最短哈密尔顿回路。

1、构建图:构建图与问题描述图是一致的,成份的集合C对应着点的集合(即:C=N),连接对应着边的集合(即L=A),且每一条边都带有一个权值,代表点i和j之间的距离。
2、约束条件:所有城市都要被访问且每个城市最多只能被访问一次。
3、信息素和启发式信息:TSP 问题中的信息素表示在访问城市i后直接访问城市j的期望度。启发式信息值一般与城市i和城市j的距离成反比。
4、解的构建:每只蚂蚁最初都从随机选择出来的城市出发,每经过一次迭代蚂蚁就向解中添加一个还没有访问过的城市。当所有城市都被蚂蚁访问过之后,解的构建就终止。

 三、实现流程及伪代码

         

 
  1. function varargout = AntColonyVRPGUI(varargin)
    % ANTCOLONYVRPGUI M-file for AntColonyVRPGUI.fig
    %      ANTCOLONYVRPGUI, by itself, creates a new ANTCOLONYVRPGUI or raises the existing
    %      singleton*.
    %
    %      H = ANTCOLONYVRPGUI returns the handle to a new ANTCOLONYVRPGUI or the handle to
    %      the existing singleton*.
    %
    %      ANTCOLONYVRPGUI('CALLBACK',hObject,eventData,handles,...) calls the local
    %      function named CALLBACK in ANTCOLONYVRPGUI.M with the given input arguments.
    %
    %      ANTCOLONYVRPGUI('Property','Value',...) creates a new ANTCOLONYVRPGUI or raises the
    %      existing singleton*.  Starting from the left, property value pairs are
    %      applied to the GUI before AntColonyVRPGUI_OpeningFcn gets called.  An
    %      unrecognized property name or invalid value makes property application
    %      stop.  All inputs are passed to AntColonyVRPGUI_OpeningFcn via varargin.
    %
    %      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
    %      instance to run (singleton)".
    %
    % See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help AntColonyVRPGUI% Last Modified by GUIDE v2.5 11-Jun-2015 00:13:48% Begin initialization code - DO NOT EDIT
    gui_Singleton = 1;
    gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @AntColonyVRPGUI_OpeningFcn, ...'gui_OutputFcn',  @AntColonyVRPGUI_OutputFcn, ...'gui_LayoutFcn',  [] , ...'gui_Callback',   []);
    if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
    endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
    elsegui_mainfcn(gui_State, varargin{:});
    end
    % End initialization code - DO NOT EDIT% --- Executes just before AntColonyVRPGUI is made visible.
    function AntColonyVRPGUI_OpeningFcn(hObject, eventdata, handles, varargin)
    % This function has no output args, see OutputFcn.
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    % varargin   command line arguments to AntColonyVRPGUI (see VARARGIN)
    % Choose default command line output for AntColonyVRPGUI
    handles.output = hObject;%% change !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    handles.ismdvrp = true; %!!!
    %%
    if handles.ismdvrp == true[handles.initClusters, handles.coordinates] = INIT;handles.clusters = handles.initClusters;set(handles.uipanelBases,'Visible','on');create_init_plot_MDVRP(handles.coordinates, handles.clusters);
    else%initialization[vehicles,demands,dist_stations,dist_bases] = INIT_VRP;handles.vehicles = vehicles;handles.demands = demands;handles.distances_stations = dist_stations;handles.distances_bases = dist_bases;set(handles.uipanelBases,'Visible','off');
    end
    % Update handles structure
    guidata(hObject, handles);% UIWAIT makes AntColonyVRPGUI wait for user response (see UIRESUME)
    % uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
    function varargout = AntColonyVRPGUI_OutputFcn(hObject, eventdata, handles)
    % varargout  cell array for returning output args (see VARARGOUT);
    % hObject    handle to figure
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structure
    varargout{1} = handles.output;% --- Executes on selection change in algorithmPopupmenu.
    function algorithmPopupmenu_Callback(hObject, eventdata, handles)
    % hObject    handle to algorithmPopupmenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns algorithmPopupmenu contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from algorithmPopupmenu%set invisible error messages
    set(handles.errorMandatoryEditFields,'Visible','off');
    %erase text in edit fields
    set(handles.evaporationPheromoneEdit,'String','');
    set(handles.attractStationEdit,'String','');
    set(handles.increasePheromoneEdit,'String','');
    set(handles.amountPheromoneEdit,'String','');
    set(handles.eliteAntsEdit,'String','');
    %set disabled all edit fields
    set(handles.evaporationPheromoneEdit,'Enable','off');
    set(handles.attractStationEdit,'Enable','off');
    set(handles.increasePheromoneEdit,'Enable','off');
    set(handles.amountPheromoneEdit,'Enable','off');
    set(handles.eliteAntsEdit,'Enable','off');
    %set disabled run button
    set(handles.runButton,'Enable','off');
    %set to 0 all results
    set(handles.lengthWayText,'String','-');
    set(handles.subroutesNText,'String','-');
    set(handles.timeSpentText,'String','-');
    if handles.ismdvrp == true%set invisible bases' listboxset(handles.listboxBases,'Visible','off');set(handles.totalLengthText,'Visible','off');set(handles.totalLengthText,'String','-');set(handles.totalLengthLabel,'Visible','off');%clear plotcla;create_init_plot_MDVRP(handles.coordinates, handles.clusters);
    end
    %clear plot
    %cla;
    %clear legend
    legend('off');
    val = get(hObject,'Value');
    if val ~= 1 %not placeholder's text (not be executed)if val ~= 2 %not Clark-Wright algorithm%enable edit fields if val == 5 %AntAlg with elite antsset(handles.eliteAntsEdit,'Enable','on');endset(handles.evaporationPheromoneEdit,'Enable','on');set(handles.attractStationEdit,'Enable','on');set(handles.increasePheromoneEdit,'Enable','on');set(handles.amountPheromoneEdit,'Enable','on');end%enable run buttonset(handles.runButton,'Enable','on');
    end% --- Executes during object creation, after setting all properties.
    function algorithmPopupmenu_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to algorithmPopupmenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    endfunction evaporationPheromoneEdit_Callback(hObject, eventdata, handles)
    % hObject    handle to evaporationPheromoneEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of evaporationPheromoneEdit as text
    %        str2double(get(hObject,'String')) returns contents of evaporationPheromoneEdit as a double% --- Executes during object creation, after setting all properties.
    function evaporationPheromoneEdit_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to evaporationPheromoneEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    endfunction attractStationEdit_Callback(hObject, eventdata, handles)
    % hObject    handle to attractStationEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of attractStationEdit as text
    %        str2double(get(hObject,'String')) returns contents of attractStationEdit as a double% --- Executes during object creation, after setting all properties.
    function attractStationEdit_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to attractStationEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    endfunction increasePheromoneEdit_Callback(hObject, eventdata, handles)
    % hObject    handle to increasePheromoneEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of increasePheromoneEdit as text
    %        str2double(get(hObject,'String')) returns contents of increasePheromoneEdit as a double% --- Executes during object creation, after setting all properties.
    function increasePheromoneEdit_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to increasePheromoneEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    endfunction amountPheromoneEdit_Callback(hObject, eventdata, handles)
    % hObject    handle to amountPheromoneEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of amountPheromoneEdit as text
    %        str2double(get(hObject,'String')) returns contents of amountPheromoneEdit as a double% --- Executes during object creation, after setting all properties.
    function amountPheromoneEdit_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to amountPheromoneEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    endfunction eliteAntsEdit_Callback(hObject, eventdata, handles)
    % hObject    handle to eliteAntsEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of eliteAntsEdit as text
    %        str2double(get(hObject,'String')) returns contents of eliteAntsEdit as a double% --- Executes during object creation, after setting all properties.
    function eliteAntsEdit_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to eliteAntsEdit (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    end% --- Executes on button press in runButton.
    function runButton_Callback(hObject, eventdata, handles)
    % hObject    handle to runButton (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)%clear legend
    legend('off');
    %clear plot
    %cla;
    %set invisible error messages
    set(handles.errorMandatoryEditFields,'Visible','off');indexAlg = get(handles.algorithmPopupmenu,'Value');
    if indexAlg ~= 1 %not placeholder's text (not be executed)if indexAlg ~= 2 %not Clark-Wright algorithmif indexAlg == 5 %AntAlg with elite antsif isempty(get(handles.eliteAntsEdit,'String'))set(handles.errorMandatoryEditFields,'Visible','on');return;endendif  ( isempty(get(handles.evaporationPheromoneEdit,'String')) || ...isempty(get(handles.attractStationEdit,'String')) || ...isempty(get(handles.increasePheromoneEdit,'String')) || ...isempty(get(handles.amountPheromoneEdit,'String')) )set(handles.errorMandatoryEditFields,'Visible','on');return;endend%set disabled run buttonset(handles.runButton,'Enable','off');if handles.ismdvrp == trueclusters = runAlgorithmMDVRP(indexAlg, handles);handles.clusters = clusters;listbox=findall(gcf,'tag','listboxBases');guidata(listbox,handles);%select first value in bases' listbox set(handles.listboxBases,'Value',1);listboxBases_Callback(listbox, eventdata, handles);elserunAlgorithmVRP(indexAlg, handles);    end%set enabled run buttonset(handles.runButton,'Enable','on');%set enabled zoom toolsset(handles.toolZoomIn,'Enable','on');set(handles.toolZoomOut,'Enable','on');%set enabled pan toolset(handles.toolPan,'Enable','on');zoom reset;
    endfunction [clusters] = runAlgorithmMDVRP(index, handles)if index ~= 1if index ~= 2e = str2double(get(handles.evaporationPheromoneEdit,'String'));alpha = str2double(get(handles.attractStationEdit,'String'));beta = str2double(get(handles.increasePheromoneEdit,'String'));tau0 = str2double(get(handles.amountPheromoneEdit,'String'));E = str2double(get(handles.eliteAntsEdit,'String'));endtrytStart = tic; %start spent timeclusters = handles.initClusters;handles.clusters = clusters;basesName = cell(1,length(clusters)+1);basesName{1} = 'Full view';for c = 1:length(clusters)switch indexcase 2 %Clark-Wright[ Route, RouteLength, vehicles ] = Clark_Wright_VRP( ...clusters(c).demands, clusters(c).diststations, ...clusters(c).distbases, clusters(c).vehicles_capacity );case 3 %Ant-minpath[Route, RouteLength, vehicles] = ANT_colony_algorithm_VRP_minpath( ...clusters(c).diststations, clusters(c).distbases, ...clusters(c).demands, [e alpha beta tau0], clusters(c).vehicles_capacity );case 4 %Ant-partition[Route, RouteLength, vehicles] = ANT_colony_algorithm_VRP( ...clusters(c).diststations, clusters(c).distbases, ...clusters(c).demands, [e alpha beta tau0], clusters(c).vehicles_capacity );case 5 %Ant-elite ants[Route, RouteLength, vehicles] = ANT_colony_algorithm_VRP_with_elite_ants( ...clusters(c).diststations, clusters(c).distbases, ...clusters(c).demands, [e alpha beta tau0 E], clusters(c).vehicles_capacity );endhandles.clusters(c).mdvrp = changeStations(clusters, vehicles, RouteLength, Route, c);basesName{c + 1} = sprintf('Base #%d',c); %saving bases that need to be added to listboxendtElapsed = toc(tStart); %end spent timecatch MEmsgbox(strcat('Error occured: ',ME.message),'Error','error');endclusters = handles.clusters;%clear plotcla;create_plot_route_with_vehicles_MDVRP(handles.coordinates, handles.clusters);set(handles.timeSpentText,'String',sprintf('%fs',tElapsed));set(handles.listboxBases, 'String', basesName);set(handles.listboxBases, 'Visible','on');set(handles.totalLengthText,'String',num2str(getTotalLength(handles.clusters)));set(handles.totalLengthText,'Visible','on');set(handles.totalLengthLabel,'Visible','on');endfunction [mdvrp] = changeStations(clusters, vehicles, LR, R, clusterN)mdvrp = struct('length_route',[],'vehicles',[],'simpleVehicles',[],'num_of_subroutes',[]);len = length(vehicles);mdvrp.simpleVehicles = vehicles;for v = 1:lenvehicles(v).route(vehicles(v).route == 1) = 0;len_route = length(vehicles(v).route);for vr = 1:len_routeif vehicles(v).route(vr) ~= 0 %羼腓 礤 徉玎vehicles(v).route(vr) = clusters(clusterN).stations(vehicles(v).route(vr)-1);endendendmdvrp.num_of_subroutes = number_of_subroutes(R);mdvrp.length_route = LR;mdvrp.vehicles = vehicles;function [tlength] = getTotalLength(clusters)tlength = 0;clen = length(clusters);for c = 1:clentlength = tlength + clusters(c).mdvrp.length_route;endfunction runAlgorithmVRP(index, handles)if index ~= 1if index ~= 2e = str2double(get(handles.evaporationPheromoneEdit,'String'));alpha = str2double(get(handles.attractStationEdit,'String'));beta = str2double(get(handles.increasePheromoneEdit,'String'));tau0 = str2double(get(handles.amountPheromoneEdit,'String'));E = str2double(get(handles.eliteAntsEdit,'String'));endtrytStart = tic; %start spent timeswitch indexcase 2 %Clark-Wright[Route,RouteLength,vehicles] = Clark_Wright_VRP( handles.demands, ...handles.distances_stations, handles.distances_bases, handles.vehicles );case 3 %Ant-minpath[Route,RouteLength,vehicles] = ANT_colony_algorithm_VRP_minpath( handles.distances_stations,...handles.distances_bases, handles.demands, [e alpha beta tau0], handles.vehicles);case 4 %Ant-partition[Route,RouteLength,vehicles] = ANT_colony_algorithm_VRP( handles.distances_stations, ...handles.distances_bases, handles.demands, [e alpha beta tau0], handles.vehicles);case 5 %Ant-elite ants[Route,RouteLength,vehicles] = ANT_colony_algorithm_VRP_with_elite_ants( ...handles.distances_stations, handles.distances_bases, handles.demands, ...[e alpha beta tau0 E], handles.vehicles);endtElapsed = toc(tStart); %end spent timecreate_plot_route_with_vehicles( add_bases_to_distances(handles.distances_stations, ...handles.distances_bases), vehicles, [0 handles.demands] );catch MEmsgbox(strcat('Error occured: ',ME.message),'Error','error');endset(handles.lengthWayText,'String',num2str(RouteLength));set(handles.subroutesNText,'String',num2str(number_of_subroutes(Route)));set(handles.timeSpentText,'String',sprintf('%fs',tElapsed));end% --------------------------------------------------------------------
    function dataTooltip_ClickedCallback(hObject, eventdata, handles)
    % hObject    handle to dataTooltip (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------
    function algorithmTooltip_ClickedCallback(hObject, eventdata, handles)
    % hObject    handle to algorithmTooltip (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% --- Executes on selection change in listboxBases.
    function listboxBases_Callback(hObject, eventdata, handles)
    % hObject    handle to listboxBases (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% Hints: contents = cellstr(get(hObject,'String')) returns listboxBases contents as cell array
    %        contents{get(hObject,'Value')} returns selected item from listboxBases%clear legend
    legend('off');
    %clear plot
    cla;index = get(handles.listboxBases,'value') - 1;
    if index == 0 %if user want to see the full graph of routescreate_plot_route_with_vehicles_MDVRP(handles.coordinates, handles.clusters);set(handles.lengthWayText,'String','-');set(handles.subroutesNText,'String','-');
    elsecreate_plot_of_base_MDVRP(handles.coordinates, handles.clusters, index);set(handles.lengthWayText,'String',num2str(handles.clusters(index).mdvrp.length_route));set(handles.subroutesNText,'String',num2str(handles.clusters(index).mdvrp.num_of_subroutes));
    end% --- Executes during object creation, after setting all properties.
    function listboxBases_CreateFcn(hObject, eventdata, handles)
    % hObject    handle to listboxBases (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    empty - handles not created until after all CreateFcns called% Hint: listbox controls usually have a white background on Windows.
    %       See ISPC and COMPUTER.
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');
    end% --------------------------------------------------------------------
    function aboutMenu_Callback(hObject, eventdata, handles)
    % hObject    handle to aboutMenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)About %call gui About.m% --------------------------------------------------------------------
    function fileMenu_Callback(hObject, eventdata, handles)
    % hObject    handle to fileMenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------
    function anotherVRPSubmenu_Callback(hObject, eventdata, handles)
    % hObject    handle to anotherVRPSubmenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)% --------------------------------------------------------------------
    function newDataSubmenu_Callback(hObject, eventdata, handles)
    % hObject    handle to newDataSubmenu (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)

Matlab基于蚁群算法求解多旅行商MTSP问题相关推荐

  1. 【ACO TSP】基于matlab GUI蚁群算法求解旅行商问题【含Matlab源码 1032期】

    ⛄一.TSP简介 旅行商问题,即TSP问题(Traveling Salesman Problem)又译为旅行推销员问题.货郎担问题,是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选 ...

  2. ​【路径规划】基于蚁群算法求解多式联运路径规划问题matlab源码

    1 简介 随着国际贸易的不断发展和国内外物品流通的速度不断加快,多式联运作为一种先进的运输组织形式不断发展.在运输过程中,合理的路径选择和运输模式选择对多式联运的经营者会带来卓有成效的经济效益,而其中 ...

  3. 【建模算法】基于蚁群算法求解TSP问题(Python实现)

    [建模算法]基于蚁群算法(ACA)求解TSP问题(Python实现) TSP (traveling salesman problem,旅行商问题)是典型的NP完全问题,即其最坏情况下的时间复杂度随着问 ...

  4. 【路径规划】基于蚁群算法求解运钞车路径规划VRPSD问题matlab代码

    1 简介 近年来,国内各大城市陆续建立了专业的金融押运企业,为银行网点的现钞运送提供服务.为了实现运钞智能化,降低银行运营成本,需要对银行现钞运送车辆路径规划提供决策支持.而银行运钞车路线规划问题是车 ...

  5. 【路径规划-TSP问题】基于蚁群算法求解实际地图旅行商问题含Matlab源码

    1 内容介绍 旅行商问题的传统求解方法是遗 传算法,此算法收敛速度慢,并不能获得问题的最优解.为了求取旅行商问题的最优解,本文在阐述蚁群算法的基本原理,模型以及在旅行商问题中的实现过程的基 础上,提出 ...

  6. 【路径规划】基于蚁群算法求解公交车路径规划问题matlab源码

    一.简介 1 蚁群算法(ant colony algorithm,ACA)起源和发展历程\ Marco Dorigo等人在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交 ...

  7. 【路径规划】基于蚁群算法求解电动汽车充电站与换电站协调路径规划matlab源码含GUI

    1.蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中,发现蚁群在寻找食物时,通过分泌一种称为信息素的生物激素交流觅食信息从 ...

  8. 【路径规划】基于蚁群算法求解机器人栅格地图路径规划matlab代码

    1 简介 通过栅格法建立栅格地图作为机器人路径规划的工作环境,采用蚁群算法作为机器人路径搜索的规则.将所有机器人放置于初始位置.经过NC次无碰撞迭代运动找到最优路径.到达目标位置.为防止机器人在路径搜 ...

  9. 【路径规划-TSP问题】基于蚁群算法求解旅行商问题含Matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  10. 【VRP问题】基于蚁群算法求解配送路径最短问题附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

最新文章

  1. php 读取stdclass,json - 在php中读取stdclass的问题?
  2. arcsde服务启动不了
  3. 【Java】Java Controller 每次只能一个请求 多线程 ReentrantLock
  4. 团队任务3 每日立会
  5. 关于数据分析的4点心得:维度、指标、KPI
  6. android反射改theme,全局修改默认字体,通过反射也能做到
  7. 由马斯克的Space X 火箭的主芯片程序编写语言说起
  8. js获取汉字拼音首字母
  9. 商业研究(20):滴滴出行,进军海外包车?与OTA携程和包车创业公司,共演“三国杀”?看看分析师、投资人和权威人士等10个人的观点碰撞
  10. 关于java中的setOut()方法
  11. 2017CCCC天梯赛决赛 赛后总结
  12. mysql盲注_Mysql 布尔型盲注手工注入详解
  13. Windows共享、打印机操作、远程桌面
  14. 用户在命令行上发出了EULAS AGREED=1,表示不接受许可协议(虚拟机卸载残留)
  15. LightGBM算法详解(教你一文掌握LightGBM所有知识点)
  16. 一款java的篮球游戏_NBA-BASKETBALL 一个非常有趣的nba 篮球游戏 简单操作容易上手代码值得学习 Game Program 238万源代码下载- www.pudn.com...
  17. 健忘的业余编程菜鸟在这里安窝
  18. 从创新取舍到赶工失衡,一个猎人的《怪物猎人:世界》碎碎念
  19. C++判断一个日期是某一年的多少天(含闰年判断)
  20. Veritas NetBackup即时恢复VMware虚拟机操作方法

热门文章

  1. CorelDraw手表实例实操作让你全面了解技术的综合应用
  2. 恢复计算机注册表命令,电脑的注册表如果损坏怎么恢复
  3. 风变编程-python(基础语法-第1关)
  4. 风变编程——自动化技术和教学的完美融合
  5. CTF_ctfshow_meng新_web1-web24
  6. 【四二学堂】基于uni-app开发的跨平台井字游戏(App+H5 web+微信小程序)
  7. web3对象提供了所有方法。
  8. Magicodes.IE 2.7.0发布
  9. 明星的html模板,明星个人网页制作模板
  10. 淘宝新店铺有哪些扶持