【优化算法】贪婪策略和变异策略的混合蚁群算法【含Matlab源码 1521期】

举报
海神之光 发表于 2022/05/28 23:33:07 2022/05/28
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【优化算法】贪婪策略和变异策略的混合蚁群算法【含Matlab源码 1521期】 获取代码方式2: 通过紫极神光博客主页开通CSDN会员,凭支...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【优化算法】贪婪策略和变异策略的混合蚁群算法【含Matlab源码 1521期】

获取代码方式2:
通过紫极神光博客主页开通CSDN会员,凭支付凭证,私信博主,可获得此代码。

获取代码方式3:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:开通CSDN会员,仅只能免费获得1份代码(有效期为开通日起,三天内有效);
订阅紫极神光博客付费专栏,可免费获得2份代码(有效期为订阅日起,三天内有效);

二、部分源代码

%% 主要符号说明 
%% C n个物品的坐标,n×2的矩阵 
%% NC_max 最大迭代次数 
%% m 蚂蚁个数 
%% Alpha 表征局部信息素重要程度的参数 
%% Beta 表征启发式因子重要程度的参数 
%% kethe表征全局信息素重要程度的参数 
%% Rho 信息素蒸发系数 
%% Q 当解不稳定时全局信息素增加强度系数 
%% V_best 最终结果
%% R_best 各代最佳组合
%% Q_best 各代最佳组合的价值 
%%========================================================================= 
%%第一步:变量初始化 
%C=[55,95;10,4;47,60;5,32;4,23;50,72;8,80;61,62;85,65;87,46];
%KV=269; 
%C=[44,92;46,4;90,43;72,83;91,84;40,68;75,92;35,82;8,6;54,44;78,32;40,18;77,56;15,83;61,25;17,96;75,70;29,48;75,14;63,58];
%KV=878;
%a=[72,490,651,833,883,489,359,337,267,441,70,934,467,661,220,329,440,774,595,98,424,37,807,320,501,309,834,851,34,459,111,253,159,858,793,145,651,856,400,285,405,95,391,19,96,273,152,473,448,231];
%b=[438,754,699,587,789,912,819,347,511,287,541,784,676,198,572,914,988,4,355,569,144,272,531,556,741,489,321,84,194,483,205,607,399,747,118,651,806,9,607,121,370,999,494,743,967,718,397,589,193,369];
%KV=11258;
%b=[350,310,300,295,290,287,283,280,272,270,265,251,230,220,215,212,207,203,202,200,198,196,190,182,181,175,160,155,154,140,132,125,110,105,101,92,83,77,75,73,72,70,69,66,60,58,45,40,38,36,33,31,27,23,20,19,10,9,4,1];
%a=[135,133,130,11,128,123,20,75,9,66,105,43,18,5,37,90,22,85,9,80,70,17,60,35,57,35,61,40,8,50,32,40,72,35,100,2,7,19,28,10,22,27,30,88,91,47,68,108,10,12,43,11,20,37,17,4,3,21,10,67];
%KV=3200;
a=randperm(100);%物品价值
b=randperm(100);%物品重量
KV=0.8*sum(a); 
C=[a',b'];
n=size(C,1);%n表示问题的规模(物品个数) 
m=n;
u=n/10;
D=zeros(1,n);
D=C(:,1)./C(:,2); %物品价值与重量之比
D=D';

%贪婪算法计算
for j=1:n
    for i=1:(n-j)
        if(D(i)<D(i+1))
            t1=D(i);
            t2=a(i);
            t3=b(i);
            D(i)=D(i+1);
            a(i)=a(i+1);
            b(i)=b(i+1);
            D(i+1)=t1;
            a(i+1)=t2;
            b(i+1)=t3;
        end
    end
end
C=[a',b'];
V_best=0; %最优价值 
W_best=0; %最优价值对应重量
p=1;
while W_best<=KV
    V_best=V_best+a(p);
    W_best=W_best+b(p);
    p=p+1;
end
V_best=V_best-a(p-1);
W_best=W_best-b(p-1);
Eta=zeros(n);
for i=1:n
    Eta(i) = D(i) ;      %Eta为启发因子,这里设为D
end
NC_max=30; 
Alpha=1;
kethe=1;
Beta=1; 
Rho=0.3; 
theta=0.7;
gama=0.15;
Q=0.1; 
Tau=ones(n);%Tau为局部信息素矩阵  
Tabu=zeros(m,n); %禁忌表矩阵
ramta=ones(n);%ramta为全局信息素矩阵 
NC=1;%迭代计数器
Q_best=zeros(NC_max,1); %各代最佳组合的价值 
R_best=zeros(NC_max,n);  %各代最佳组合
t=ceil(n/3);
while NC<=NC_max    %停止条件之一:达到最大迭代次数  
%%第二步:把贪婪算法的前t个选择赋予禁忌表 
            S=zeros(1,m);%每只蚂蚁选择物品总价值
            W=zeros(1,m);%每只蚂蚁选择物品总重量
            for i=1:t
                Tabu(:,i)=i;%把贪婪算法的前t个选择赋予禁忌表
            end
%%第三步:m只蚂蚁按概率函数选择下一个物品,完成各自的选择
            for i=1:m
                for j=1:t
                    if W(i)+b(j)<=KV
                       S(i)=S(i)+a(j); %赋于每只蚂蚁初始价值
                       W(i)=W(i)+b(j); %赋于每只蚂蚁初始重量
                   end
                end
            end

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97

三、运行结果

在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/121311646

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。