精华内容
下载资源
问答
  • 提出将蚁群算法用于求解函数优化问题的新方法。使用一定数量的蚂蚁在解空间中首先随机搜索,然后模拟蚂蚁觅食的方式,更新搜索路径上的信息素,按照转移概率来决定搜索方向,即通过信息素来指引搜索,最后搜索收敛于...
  • 这里使用蚁群算法函数的最大值,函数是:f=-(x.^4+3*y.^4-0.2*cos(3*pi*x)-0.4*cos(4*pi*y)+0.6);步骤如下:初始化参数。初始化蚁群,第一代蚁群随机分布在可行域中。初始化信息素,第一代信息素采用第一代蚁群的...

    这里使用蚁群算法求函数的最大值,函数是:f = -(x.^4 + 3*y.^4 - 0.2*cos(3*pi*x) - 0.4*cos(4*pi*y) + 0.6);

    步骤如下:初始化参数。

    初始化蚁群,第一代蚁群随机分布在可行域中。

    初始化信息素,第一代信息素采用第一代蚁群的函数值表示,函数值越大,信息素越多。

    状态转移,计算状态转移概率,根据状态转移概率进行局部搜索或全局搜索。

    约束边界。

    选择,根据目标函数值在原始蚁群和状态转移之后的蚁群之间进行选择。

    更新信息素,tau = (1 - Rou) .* tau + calObjFun(ants)。

    对选择后的蚁群重复进行状态转移、约束边界和更新信息素3步,直至结束。

    主函数及结果

    下面是主函数:clear;

    clc;

    Ant     =   300;    % 蚂蚁数量Times   =   80;     % 蚂蚁移动次数Rho     =   0.9;    % 信息素挥发系数P0      =   0.2;    % 转移概率常数xl = -1; xu = 1;    % 设置搜索范围yl = -1; yu = 1;

    step = 0.05;

    ants = initant(Ant, xl, xu, yl, yu);    % 初始化蚁群tau = calObjFun(ants);                  % 计算初代信息素firstants = ants;for t = 1:Times

    ants = edgeselection(ants, P0, tau, 1/t, xl, xu, yl, yu);    % 转移+约束

    tau = (1 - Rho) .* tau + calObjFun(ants);               % 更新信息素endfigure(1);

    plotobjfun(xl, xu, yl, yu, step);

    hold on;

    plot3(firstants(:,1), firstants(:,2), calObjFun(firstants), 'b*');

    hold on;

    plot3(ants(:,1), ants(:,2), calObjFun(ants), 'r*');

    hold off;

    程序运行结果绘图如下,其中蓝色点为第一代蚁群,红色为最后一代蚁群:

    AAffA0nNPuCLAAAAAElFTkSuQmCC

    蚁群算法求函数最大值结果

    状态转移和约束边界函数

    函数说明如下:function sants = edgeselection(ants, tau, P0, lamda, xl, xu, yl, yu)% 状态转移 + 约束边界% ants          input  蚁群% tau           input  信息素% P0            input  转移概率常数% lamda         input  局部搜索参数% xl            input  x最小值% xu            input  x最大值% yl            input  y最小值% yu            input  y最大值% sants         output 输出蚁群

    下面计算函数的状态转移概率,进行局部搜索和全局搜索:sants = ants;% 计算状态转移概率[taubest, ~] = max(tau);

    p = abs((taubest - tau) / taubest);

    lsindex = find(p 

    gsindex = find(p >= P0);% 局部搜索r = rand(length(lsindex), 2);

    sants(lsindex, :) = sants(lsindex, :) + (2 .* r - 1) .* lamda;% 全局搜索r = rand(length(gsindex), 2);

    gedge = repmat([xu-xl, yu-yl], length(gsindex), 1);

    sants(gsindex,:) = sants(gsindex,:) + gedge .* (r - 0.5);

    之后约束边界:% 约束边界sants(sants(:, 1) 

    sants(sants(:, 1) > xu, 1) = xu;

    sants(sants(:, 2) 

    sants(sants(:, 2) > yu, 2) = yu;

    最后进行选择:% 选择objvalue = calObjFun(ants);

    sobjvalue = calObjFun(sants);

    tindex = find(sobjvalue 

    sants(tindex, :) = ants(tindex, :);

    一些其他函数

    初始化蚁群函数:function ants = initant(num, xl, xu, yl, yu)% 初始化蚁群% num       input  蚂蚁数量% xl        input  x最小% xu        input  x最大% yl        input  y最小% yu        input  y最大% ants      output 蚁群ants = rand(num, 2);

    ants(:,1) = xl + (xu - xl) .* ants(:,1);

    ants(:,2) = yl + (yu - yl) .* ants(:,2);

    计算目标函数值函数:function objval = calObjFun(X)% 计算目标函数值% X         input  点输入 [x, y] nx2% objvalue  output 输出 nx1objval = -(X(:,1) .^ 4 + 3 .* X(:,2) .^ 4 - 0.2 .* cos(3*pi .* X(:,1)) ...

    - 0.4 .* cos(4*pi .* X(:,2)) + 0.6);

    绘制函数图像函数:function plotobjfun(xl, xu, yl, yu, step)% 绘制函数图像% xl        input  x最小值% xu        input  x最大值% yl        input  y最小值% yu        input  y最大值% step      input  采样距离[x, y] = meshgrid(xl:step:xu, yl:step:yu);

    f = '-(x.^4 + 3*y.^4 - 0.2*cos(3*pi*x) - 0.4*cos(4*pi*y) + 0.6)';

    z = eval(f);

    mesh(x, y, z);

    作者:mwangjs

    链接:https://www.jianshu.com/p/db11dcda3018

    展开全文
  • 基于蚁群算法函数寻优算法

    千次阅读 2021-01-03 21:41:33
    文章目录一、理论基础二、案例背景1、问题...本案例的寻优函数为:f(x,y)=20(x2−y2)2−(1−y2)2−3(1+y)2+0.3,x∈[−5,5],y∈[−5,5]f(x,y)=20(x^2-y^2)^2-(1-y^2)^2-3(1+y)^2+0.3,\quad x∈[-5,5],y∈[-5,5]f(x,y)=20

    一、理论基础

    请参考这里

    二、案例背景

    1、问题描述

    本案例的寻优函数为: f ( x , y ) = 20 ( x 2 − y 2 ) 2 − ( 1 − y 2 ) 2 − 3 ( 1 + y ) 2 + 0.3 , x ∈ [ − 5 , 5 ] , y ∈ [ − 5 , 5 ] f(x,y)=20(x^2-y^2)^2-(1-y^2)^2-3(1+y)^2+0.3,\quad x∈[-5,5],y∈[-5,5] f(x,y)=20(x2y2)2(1y2)23(1+y)2+0.3,x[5,5],y[5,5]函数图形如图1所示。
    在这里插入图片描述

    图1 函数图形

    2、解题思路及步骤

    (1)初始化蚂蚁个数 m = 300 m=300 m=300,最大迭代次数 i t e r _ m a x = 80 iter\_max=80 iter_max=80,信息素挥发因子 R h o = 0.9 Rho=0.9 Rho=0.9,转移概率常数 P 0 = 0.2 P_0=0.2 P0=0.2,局部搜索步长 s t e p = 0.05 step=0.05 step=0.05
    (2)随机产生蚂蚁初始位置,计算适应度函数值,设为初始信息素,计算状态转移概率,其计算公式为 P ( i t e r , i ) = m a x ( T a u ) − T a u ( i ) m a x ( T a u ) (1) P(iter, i) = \frac{max(Tau)-Tau(i)}{max(Tau)} \tag{1} P(iter,i)=max(Tau)max(Tau)Tau(i)(1)其中, m a x ( T a u ) max(Tau) max(Tau)表示信息素的最大值, T a u ( i ) Tau(i) Tau(i)表示蚂蚁 i i i的信息素, P ( i t e r , i ) P(iter, i) P(iter,i)表示第 i t e r iter iter次迭代蚂蚁 i i i的转移概率值。
    (3)进行位置更新:当状态转移概率小于转移概率常数时,进行局部搜索,其搜索公式为 n e w = o l d + r 1 ⋅ s t e p ⋅ λ (2) new=old+r_1·step·\lambda \tag{2} new=old+r1stepλ(2)其中, n e w new new为待移动的位置, o l d old old为蚂蚁当前位置, r 1 r_1 r1为介于[-1,1]的随机数, s t e p step step为局部搜索步长, λ \lambda λ为当前迭代次数的倒数;当状态转移概率大于转移概率常数时,进行全局搜索,其搜索公式为 n e w = o l d + r 2 ⋅ r a n g e (3) new=old+r_2·range\tag{3} new=old+r2range(3)其中, r 2 r_2 r2为[-0.5,0.5]的随机数, r a n g e range range为自变量的区间大小。
    通过判断待移动位置的函数值与当前位置函数值的大小来确定是否更新蚂蚁当前的位置,并利用边界吸收方式进行边界条件处理,将蚂蚁位置界定在取值范围内。
    (4)计算新的蚂蚁位置的适应度值,判断蚂蚁是否移动,更新信息素,信息素更新公式为 T a u = ( 1 − R h o ) ⋅ T a u + f (4) Tau = (1 - Rho) \boldsymbol·Tau + f\tag{4} Tau=(1Rho)Tau+f(4)其中, R h o Rho Rho为信息素挥发因子, T a u Tau Tau为信息素, f f f为目标函数值。
    (5)判断是否满足终止条件:若满足,则结束搜索过程,输出优化值;若不满足,则继续进行迭代优化。

    三、MATLAB程序实现

    利用MATLAB提供的函数,可以方便地在MATLAB环境下实现上述步骤。

    1、清空环境变量

    程序运行之前,清除工作空间Workspace中的变量及Command Window中的命令。具体程序如下:

    %% 清空环境变量
    clear all
    clc
    

    2、初始化参数

    在计算之前,需要对参数进行初始化。同时,为了加快程序的执行速度,对于程序中涉及的一些过程变量,需要预分配其存储容量。具体程序如下:

    %% 初始化参数
    m = 300;                    % 蚂蚁数量
    iter_max = 80;              % 最大迭代次数
    Rho = 0.9;                  % 信息素挥发因子
    P0 = 0.2;                   % 转移概率常数
    step = 0.05;                % 局部搜索步长
    Tau = zeros(m, 1);          % 信息素矩阵
    P = zeros(iter_max, m);     % 转移概率矩阵
    trace = zeros(iter_max, 1); % 每代最优值
    x_lower = -5;               % x范围下限
    y_lower = -5;               % y范围下限
    x_upper = 5;                % x范围上限
    y_upper = 5;                % y范围上限
    

    3、构建解空间

    代码如下:

    %% 构建解空间
    ant = zeros(m, 2);   % 随机生成蚁群位置
    for i = 1: m
        ant(i, 1) = x_lower + (x_upper - x_lower) * rand;
        ant(i, 2) = y_lower + (y_upper - y_lower) * rand;
        Tau(i) = fun(ant(i, 1), ant(i, 2));     % 信息素
    end
    %% 绘图显示
    [x, y] = meshgrid(x_lower:0.05:x_upper, y_lower:0.05:y_upper);
    f = '20*(x.^2-y.^2).^2-(1-y.^2).^2-3*(1+y).^2+0.3';
    z = eval(f);
    figure(1);
    mesh(x, y ,z)
    hold on;
    plot3(ant(:, 1), ant(:, 2), Tau, 'k*');
    xlabel 'x'; ylabel 'y'; zlabel 'z';
    title '蚁群初始位置';
    

    蚁群初始位置如图2所示。
    在这里插入图片描述

    图2 蚁群初始位置

    4、迭代寻优

    迭代寻优为整个算法的核心。首先计算状态转移概率;然后根据转移概率的值判断哪些蚂蚁需要进行局部搜索,哪些蚂蚁需要进行全局搜索,之后再进行搜索,搜索完了之后一定要进行边界处理,并更新蚂蚁的位置;最后,更新信息素,每次迭代保存最优解。

    %% 迭代寻优
    for iter = 1:iter_max
        lamda = 1 / iter;
        [Tau_best, BestIndex] = max(Tau);
        %% 计算状态转移概率
        for i = 1:m
            P(iter, i) = (Tau_best - Tau(i)) / Tau_best;
        end
        %% 位置更新
        for i = 1:m
            %% 局部搜索
            if P(iter, i) < P0
                temp1 = ant(i, 1) + (2 * rand - 1) * step * lamda;
                temp2 = ant(i, 2) + (2 * rand - 1) * step * lamda;
            else
                %% 全局搜索
                temp1 = ant(i, 1) + (x_upper-x_lower)*(rand-0.5);
                temp2 = ant(i, 2) + (y_upper-y_lower)*(rand-0.5);
            end
            %% 边界处理
            if temp1 < x_lower
                temp1 = x_lower;
            elseif temp1 > x_upper
                temp1 = x_upper;
            end
            if temp2 < y_lower
                temp2 = y_lower;
            elseif temp2 > y_upper
                temp2 = y_upper;
            end
            %% 判断蚂蚁是否移动
            if fun(temp1, temp2) > fun(ant(i, 1), ant(i, 2))
                ant(i, 1) = temp1;
                ant(i, 2) = temp2;
            end
        end
        %% 迭代过程中蚂蚁移动图
        figure(2);
        mesh(x, y ,z);
        hold on;
        plot3(ant(:, 1), ant(:, 2), fun(ant(:, 1), ant(:, 2)), '*', 'color', [iter/iter_max, 0, 0]);
        hold off;
        xlabel 'x'; ylabel 'y';
        title '蚁群算法迭代过程中蚂蚁移动';
        pause(0.1)
        frame = getframe(gcf);
        imind = frame2im(frame);
        [imind, cm] = rgb2ind(imind, 256);
        if iter == 1
            imwrite(imind, cm, 'test.gif', 'gif', 'Loopcount', inf, 'DelayTime', 1e-4);
        else
            imwrite(imind, cm, 'test.gif', 'gif', 'WriteMode', 'append', 'DelayTime', 1e-4);
        end
        %% 更新信息素
        for i = 1: m
            Tau(i) = (1 - Rho) * Tau(i) + fun(ant(i, 1), ant(i, 2));
        end
        %% 保存最优解
        [value, index] = max(Tau);
        trace(iter) = fun(ant(index, 1), ant(index, 2));
    end
    

    迭代过程中蚂蚁的移动位置如图3所示。
    在这里插入图片描述

    图3 迭代过程中蚂蚁的移动位置

    5、结果显示

    为了更为直观地对结果进行观察和分析,将寻找到的最优自变量及其最优函数值显示在Command Window中。具体程序如下:

    %% 结果显示
    [~, max_index] = max(Tau);
    max_X = ant(max_index, 1);
    max_Y = ant(max_index, 2);
    max_value = fun(max_X, max_Y);
    disp(['最优自变量:', num2str(ant(max_index, :))]);
    disp(['最优函数值:', num2str(max_value)]);
    

    由于各个蚂蚁的初始位置是随机生成的,因此每次运行的结果都会有所不同。某次运行的结果如下:

    最优自变量:5  -0.0031313
    最优函数值:12496.309
    

    6、绘图

    为了更为直观地对结果进行观察和分析,以图形的形式将结果显示出来,具体程序如下:

    %% 绘图
    figure;
    mesh(x, y ,z);
    hold on;
    x = ant(:, 1);
    y = ant(:, 2);
    plot3(x, y ,eval(f), 'k*');
    xlabel 'x'; ylabel 'y'; zlabel 'z';
    title '蚁群最终位置';
    figure;
    plot(1:iter_max, trace, 'r', 'LineWidth', 2);
    title '蚁群算法函数寻优';
    xlabel '迭代次数'; ylabel '函数值';
    

    蚁群最终位置如图4所示。
    在这里插入图片描述

    图4 蚁群最终位置

    蚁群算法各代的函数值如图5所示。
    在这里插入图片描述

    图5 蚁群算法各代的函数值

    四、参考文献

    [1] 心升明月~~. 基于蚁群算法的旅行商问题(TSP)的优化. CSDN博客.
    [2] 凯旋16668. 【啃书】《智能优化算法及其MATLAB实例》例5.2蚁群算法进行函数寻优. CSDN博客.
    [3] 曲怪曲怪. 《智能算法》专栏. CSDN博客.
    [4] 郁磊等. MATLAB智能算法30个案例分析(第2版)[M].北京航空航天大学出版社.2015年.

    展开全文
  • 文章目录问题描述仿真过程matlab源码 问题描述 仿真过程 matlab源码 %该脚本要命名为func.m %%%%%%%%%%%%%%%%%%%%%%%适应度函数%%%%%%%%%%%%%%%%%%%%%%% ...%%%%%%%%%%%%%%%%%%%%蚁群算法函数极值%%%%%

    问题描述

    在这里插入图片描述
    在这里插入图片描述

    仿真过程

    在这里插入图片描述

    在这里插入图片描述

    matlab源码

    %该脚本要命名为func.m
    %%%%%%%%%%%%%%%%%%%%%%%适应度函数%%%%%%%%%%%%%%%%%%%%%%%
    function value=func(x,y)
    value=20* (x^2-y^2)^2-(1-y)^2-3* (1+y)^2+0.3;
    
    20201012lu注:该matlab代码成功在matlabR2019a运行
    %%%%%%%%%%%%%%%%%%%%蚁群算法求函数极值%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%初始化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    clear all;               %清除所有变量
    close all;               %清图
    clc;                     %清屏
    m=20;                    %蚂蚁个数
    G_max=200;               %最大迭代次数
    Rho=0.9;                 %信息素蒸发系数
    P0=0.2;                  %转移概率常数
    XMAX= 5;                 %搜索变量x最大值
    XMIN= -5;                %搜索变量x最小值
    YMAX= 5;                 %搜索变量y最大值
    YMIN= -5;                %搜索变量y最小值
    %%%%%%%%%%%%%%%%%随机设置蚂蚁初始位置%%%%%%%%%%%%%%%%%%%%%%
    for i=1:m
        X(i,1)=(XMIN+(XMAX-XMIN)*rand);
        X(i,2)=(YMIN+(YMAX-YMIN)*rand);
        Tau(i)=func(X(i,1),X(i,2));
    end
    step=0.1;                %局部搜索步长
    for NC=1:G_max
        lamda=1/NC;
        [Tau_best,BestIndex]=min(Tau);
        %%%%%%%%%%%%%%%%%%计算状态转移概率%%%%%%%%%%%%%%%%%%%%
        for i=1:m
            P(NC,i)=(Tau(BestIndex)-Tau(i))/Tau(BestIndex);
        end
        %%%%%%%%%%%%%%%%%%%%%%位置更新%%%%%%%%%%%%%%%%%%%%%%%%
        for i=1:m
               %%%%%%%%%%%%%%%%%局部搜索%%%%%%%%%%%%%%%%%%%%%%
            if P(NC,i)<P0
                temp1=X(i,1)+(2*rand-1)*step*lamda;
                temp2=X(i,2)+(2*rand-1)*step*lamda;
            else
                %%%%%%%%%%%%%%%%全局搜索%%%%%%%%%%%%%%%%%%%%%%%
                 temp1=X(i,1)+(XMAX-XMIN)*(rand-0.5);
                 temp2=X(i,2)+(YMAX-YMIN)*(rand-0.5);
            end
            %%%%%%%%%%%%%%%%%%%%%边界处理%%%%%%%%%%%%%%%%%%%%%%%
            if temp1<XMIN
                temp1=XMIN;
            end
            if temp1>XMAX
                temp1=XMAX;
            end
            if temp2<YMIN
                temp2=YMIN;
            end
            if temp2>YMAX
                temp2=YMAX;
            end
            %%%%%%%%%%%%%%%%%%蚂蚁判断是否移动%%%%%%%%%%%%%%%%%%
            if func(temp1,temp2)<func(X(i,1),X(i,2))
                X(i,1)=temp1;
                X(i,2)=temp2;
            end
        end
        %%%%%%%%%%%%%%%%%%%%%%%更新信息素%%%%%%%%%%%%%%%%%%%%%%%
        for i=1:m
            Tau(i)=(1-Rho)*Tau(i)+func(X(i,1),X(i,2));
        end
        [value,index]=min(Tau);
        trace(NC)=func(X(index,1),X(index,2));
    end
    [min_value,min_index]=min(Tau);
    minX=X(min_index,1)                           %最优变量
    minY=X(min_index,2)                          %最优变量
    minValue=func(X(min_index,1),X(min_index,2))  %最优值
    figure
    plot(trace)
    xlabel('搜索次数');
    ylabel('适应度值');
    title('适应度进化曲线')
    

    注:该函数有两个全局最优点:x=5,y=5,函数值是-123.7;x=-5,y=5,函数值也是-123.7;因为matlab中min函数的原因,所以该代码不能将这两个点同时找出,每次运行时该代码会随机找到这两个点中一个

    minX =
    
         5
    
    
    minY =
    
         5
    
    
    minValue =
    
        -1.237000000000000e+02
    
    

    在这里插入图片描述

    中 智能优化算法及其MATLAB实例(第二版)[包子阳,余继周][电子工业出版社][2018年01月][9787121330308]

    经过调试,随书所有代码均可以在matlabR2019a上成功运行https://mianbaoduo.com/o/bread/YZyVlp9v

    展开全文
  • 与普通蚁群算法相同,蚁群在选择数字的过程 中将一定量的信息记录在每条选择的路径上以改变下一次蚁群选择各个数字的概率。实验数据表明,文 中的函数优化算法能比遗传算法以及其他用于连续优化的蚁群算法更快地找到...
  • 1 蚁群算法概述 蚁群算法ACO是一种新型的模拟进化算法,该算法采用蚁群在搜索食物源的过程中所体现出来的寻有能力来解决一些离散系统优化中的困难问题。应经用该方法求解了旅行商问题(TSP问题)、指派问题、调度...

    一、简介

    1 蚁群算法的提出
    蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。遗传算法在模式识别、神经网络、机器学习、工业优化控制、自适应控制、生物科学、社会科学等方面都得到应用。
    2 算法的基本原理
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    二、源代码

    <
    展开全文
  • 电信设备-一种基于新概率转移函数的照明通信动态寻径蚁群算法.zip
  • 蚁群算法代码(求函数最值)》由会员分享,可在线阅读,更多相关《蚁群算法代码(求函数最值)(4页珍藏版)》请在人人文库网上搜索。1、function F=F(x1,x2) %目标函数 F=-(x1.2+2*x2.2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*...
  • 蚁群算法及十进制蚁群算法

    千次阅读 2014-09-20 22:54:10
    蚁群算法(ant colonyoptimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。[1] 蚁群...
  • 蚁群算法

    万次阅读 多人点赞 2017-05-13 20:23:13
    蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法,它是由意大利学者Dorigo M等人于1991年首先提出,并首先使用在解决TSP(旅行商问题)上。 之后,又系统研究了蚁群算法的基本原理和数学模型. 蚁群算法的基本思想...
  • 蚁群算法代码(求函数最值).docfunction [F]=F(x1,x2) %目标函数F=-(x1.^2+2*x2.^2-0.3*cos(3*pi*x1)-0.4*cos(4*pi*x2)+0.7);Endfunction [maxx,maxy,maxvalue]=antcolony% 蚁群算法函数最大值的程序ant=200; % ...
  • 模拟退火法和蚁群算法求解多元函数极值问题 目标函数: 算法概述 模拟退火算法 模拟退火算法(Simulated Annealing,简称SA)的思想最早是由Metropolis等提出的。其出发点是基于物理中固体物质的退火过程与一般的组合...
  • 关于蚁群算法的介绍

    2013-09-04 20:06:30
    文章简要介绍了蚁群算法的来历,以及关于蚁群算法概率选择函数和信息素的计算。
  • 蚁群算法解决多峰函数优化问题

    千次阅读 2020-03-28 03:23:43
    一、多峰优化问题概述       ...二、蚁群问题解决函数多峰寻优问题思想         以一维函数y=f(x)的极小值寻优为例,对函...
  • 蚁群算法 matlab程序详细解答-菜鸟也能看懂

    万次阅读 多人点赞 2017-05-30 11:57:03
    最近学习蚁群算法,单单学习算法还是不够深入了解,得实际编程实现了,理解才能更加透彻,本文根据这篇博文贴出来的代码 进行扩充解释,主要就是做个记录,其中阴影部分是本人自己加注释,或许能给刚开始学蚁群算法...
  • 蚁群算法java实现以及TSP问题蚁群算法求解 1. 蚁群算法简介  蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为...
  • 蚁群算法总结

    千次阅读 2019-02-04 12:14:22
    蚁群算法简介 蚁群算法(Ant Clony Optimization, ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作而表现出智能行为,从而为求解复杂问题提供了一个新的方法。 蚁群算法是一种...
  • 蚁群算法作为群体智能算法的一种利用分布式的种群搜索策略来寻找目标函数的最优解。蚁群算法与其他优化算法相比较的一个明显优势是蚁群算法能够适应动态变化的环境,这个特点使它特别适合解决像网络路由这类解空间...
  • 蚁群算法原理以及应用

    万次阅读 多人点赞 2019-03-09 09:05:12
    本文首先对启发式算法和蚁群算法的由来以及含义做简要介绍,然后讲述蚁群算法的求解原理,再分别用两个案例解释蚁群算法,观察蚁群算法的求解结果;通过对蚁群算法的使用方法做简要介绍,可以了解近似解的含义以及正...
  • % i = j 时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示 %% 蚁群算法MATLAB程序第二步:将m只蚂蚁放到n个城市上 %% 蚁群算法MATLAB程序第三步:m只蚂蚁按概率函数选择下一座城市,完成各自...
  • 蚁群算法学习

    千次阅读 2017-03-28 18:54:03
    研究生期间,跟随导师进行复杂网络相关研究,我的方向是复杂网络的社团识别,在阅读相关文献中,决定从蚁群算法入手,利用蚁群算法进行社团划分。以下是近期学习的整理:  蚁群算法原理  其原理是一种正反馈机制...
  • 蚁群算法笔记

    2019-10-04 23:39:44
    蚁群算法在解决规格较小的TSP问题上效果显著。 实质:(正反馈机制)通过“信息素”的多少来选择路径,算法的迭代过程就是“信息素”的积累过程。(最优路径上蚂蚁数量的增加→信息素强度增加→蚂蚁选择概率增大→...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,090
精华内容 836
关键字:

蚁群算法概率函数