查看: 408|回复: 2|关注: 0
打印 上一主题 下一主题

[未答复] MATLAB 资源分配建模,蚁群算法实现,有红包。

[复制链接]

新手

5 麦片

财富积分


050


1

主题

1

帖子

0

最佳答案
跳转到指定楼层
1#
发表于 2019-8-10 18:16:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求精通蚁群算法实现,能matlab编写实现下列问题。现将该高新技术企业的某次知识员工任务指派及调度抽象为:有3个项目,每个项目均有4个任务(有先后顺序),企业把这12个任务分配给6名知识员工,知识员工承担任务的执行时间如图所示。请各位大神指点,如有能指导实现的,感谢费300.请QQ联系1065880242

入门

68 麦片

财富积分


50500


0

主题

52

帖子

4

最佳答案
2#
发表于 2019-8-10 22:06:39 | 只看该作者
本帖最后由 breezy_gkpm4 于 2019-8-10 22:10 编辑

这是我的账号
TSP 问题
  1. clear all
  2. clc
  3. Alpha = 1;
  4. Beta = 5;
  5. C=[
  6. ? ???565.0? ?575.0;
  7. ? ???25.0? ? 185.0;
  8. ? ???345.0? ?750.0;
  9. ? ???945.0? ?685.0;
  10. ? ???845.0? ?655.0;
  11. ? ???880.0? ?660.0;
  12. ? ???25.0? ? 230.0;
  13. ? ???525.0? ?1000.0;
  14. ? ???580.0? ?1175.0;
  15. ? ???650.0? ?1130.0;
  16. ? ???1605.0??620.0;
  17. ? ???1220.0??580.0;
  18. ? ???1465.0??200.0;
  19. ? ???1530.0??5.0;
  20. ? ???845.0? ?680.0;
  21. ? ???725.0? ?370.0;
  22. ? ???145.0? ?665.0;
  23. ? ???415.0? ?635.0;
  24. ? ???510.0? ?875.0;
  25. ? ???560.0? ?365.0;
  26. ? ???300.0? ?465.0;
  27. ? ???520.0? ?585.0;
  28. ? ???480.0? ?415.0;
  29. ? ???835.0? ?625.0;
  30. ? ???975.0? ?580.0;
  31. ? ???1215.0??245.0;
  32. ? ???1320.0??315.0;
  33. ? ???1250.0??400.0;
  34. ? ???60.0? ?180.0;
  35. ? ???410.0? ?250.0;
  36. ? ???420.0? ?555.0;
  37. ? ???575.0? ?665.0;
  38. ? ???1150.0??1160.0;
  39. ? ???700.0? ?580.0;
  40. ? ???685.0? ?595.0;
  41. ? ???685.0? ?610.0;
  42. ? ???770.0? ?610.0;
  43. ? ???795.0? ?645.0;
  44. ? ???720.0? ?635.0;
  45. ? ???760.0? ?650.0;
  46. ? ???475.0? ?960.0;
  47. ? ???95.0? ?260.0;
  48. ? ???875.0? ?920.0;
  49. ? ???700.0? ?500.0;
  50. ? ???555.0? ?815.0;
  51. ? ???830.0? ?485.0;
  52. ? ???1170.0? ? 65.0;
  53. ? ???830.0? ?610.0;
  54. ? ???605.0? ?625.0;
  55. ? ???595.0? ?360.0;
  56. ? ???1340.0? ?725.0;
  57. ? ???1740.0? ?245.0;
  58. ? ???];
  59. city_len = length(C);
  60. Tau = ones(city_len,city_len);%信息素矩阵
  61. D = zeros(city_len,city_len,'double');
  62. antnum = 50;
  63. Q = 100;%信息素的增强强度
  64. tic
  65. for i = 1:city_len
  66. ? ???D(i,i) = eps('double');
  67. ? ???D(i,i+1:city_len) = sqrt((C(i,1)-C(i+1:city_len,1)).^2+(C(i,2) - C(i+1:city_len,2)).^2);
  68. ? ???D(i+1:city_len,i) = D(i,i+1:city_len);
  69. end
  70. Eta = 1./D;
  71. Maxiter = 180;
  72. iter = 1;
  73. antpop(antnum,city_len) = 0;
  74. waitcity = meshgrid(1:city_len,1:antnum);
  75. Rho = 0.1;%信息素的蒸发系数


  76. while iter <= Maxiter
  77. ? ? antpop = zeros(antnum,city_len);%假定每只蚂蚁放的城市各不相同
  78. ? ? %第一步随机将m只蚂蚁放到n个城市
  79. ? ? antpop(:,1) = (propos(antnum))';
  80. ? ???waitcity = meshgrid(1:city_len,1:antnum);
  81. ? ???for i = 2:city_len
  82. ? ?? ?? ?visited = antpop(:,i-1);
  83. ? ?? ?? ?waitcity_probability = zeros(antnum,city_len-i+1);
  84. ? ?? ?? ?logical_matrix = (bsxfun(@eq,waitcity,visited(:)));
  85. ? ?? ?? ?waitcity = waitcity';
  86. ? ?? ?? ?waitcity = (reshape(waitcity(~logical_matrix'),city_len-i+1,antnum))';
  87. ? ?? ?? ?for j = 1:city_len-i+1
  88. ? ?? ?? ?? ? varnum = (visited(:)-1).*city_len+waitcity(1:antnum,j);%元素的位置
  89. ? ?? ?? ?? ?waitcity_probability(:,j) = (Tau(varnum).^Alpha).*(Eta(varnum).^Beta);
  90. ? ?? ?? ?end
  91. ? ?? ?? ?waitcity_probability = bsxfun(@rdivide,waitcity_probability,sum(waitcity_probability,2));
  92. ? ?? ?? ?waitcity_probability = cumsum(waitcity_probability,2);
  93. ? ?? ?? ?ant_randnum??= rand(1,antnum);
  94. ? ?? ?? ?all_pos = bsxfun(@ge,waitcity_probability,ant_randnum(:));
  95. ? ?? ?? ?all_pos = sum(cumsum(all_pos,2) == 0,2)+1;%找到逻辑矩阵中第一个不为零的元素的位置
  96. ? ?? ???antpop(:,i) = waitcity((all_pos-1).*antnum+(1:antnum)');%矩阵中的元素是按列进行索引的
  97. ? ? end
  98. ? ???%??%更新信息素增量还有记录本次迭代完成之后的最佳路线
  99. ? ? infor_matrix = zeros(city_len,city_len);
  100. ? ???
  101. ? ???all_distance = zeros(1,antnum,'double');
  102. ? ???for i = 1:antnum
  103. ? ?? ?? ?for j = 1:city_len-1
  104. ? ?? ?? ?? ? all_distance(i) = all_distance(i)+sqrt((C(antpop(i,j),1)-C(antpop(i,j+1),1))^2 + (C(antpop(i,j),2)-C(antpop(i,j+1),2))^2);
  105. ? ?? ?? ?end
  106. ? ?? ?? ?for j = 1:city_len-1
  107. ? ?? ?? ?? ? infor_matrix(antpop(i,j),antpop(i,j+1)) = infor_matrix(antpop(i,j),antpop(i,j+1)) +??Q/all_distance(i);
  108. ? ?? ?? ?? ? infor_matrix(antpop(i,1),antpop(i,antnum)) = infor_matrix(antpop(i,1),antpop(i,antnum)) + Q/all_distance(i);
  109. ? ?? ?? ?end
  110. ? ???end
  111. ? ???Tau = (1-Rho).*Tau + infor_matrix;
  112. ? ???[lia,loc] = min(all_distance);%迭代之后的最佳路线及其路线名
  113. ? ? %求所有路线的平均值
  114. ? ? mean_distance = mean(all_distance);
  115. ? ???iter = iter + 1;
  116. end
  117. lia;
  118. antpop(loc,:);



  119. ? ?
复制代码


新手

7 麦片

财富积分


050


14

主题

431

帖子

0

最佳答案
  • 关注者: 2
3#
发表于 2019-8-14 12:47:10 | 只看该作者
需要代做可以加Q122353503
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表