matlab蚁群算法解决mtsp问题的算法中出现“数组索引超出数组范围”的问题,请各位大佬解答一下

代码如下:

citys = [18.4700 95.1000

16.4700 94.6400

20.0900 94.5400

14.3900 93.3700

25.2300 97.2400

22.0000 93.0500

23.4700 92.0200

16.2000 96.2900

17.3000 97.3800

13.0500 98.1200

15.5300 97.3800

24.5200 95.5900

16.4100 97.1300

15.0900 92.5500

18.0000 98.0000];

%% 3、计算距离矩阵

D = Distance(citys); % 计算距离矩阵

n = size(D, 1); % 获取所有城市的个数

m = 50; % 蚂蚁对数,每对蚂蚁分为蚂蚁1与蚂蚁2、3、4、5

alpha = 1; % 信息素重要程度因子

beta = 5; % 启发函数重要程度因子

rho = 0.1; % 信息素挥发因子

Q = 1; % 常系数(信息素释放量)

Eta = 1./D; % 启发函数

Tau = ones(n,n); % 信息素矩阵

Table1 = zeros(m,n); % 蚂蚁1路径记录表

Table2 = zeros(m,n); % 蚂蚁2路径记录表

Table3 = zeros(m, n); % 路径记录表

Table4 = zeros(m, n); % 路径记录表

Table5= zeros(m, n); % 路径记录表

iter = 1; % 迭代次数初值

iter_max = 200; % 最大迭代次数

Route_best1 = zeros(iter_max,n); % 蚂蚁1各代最佳路径

Route_best2 = zeros(iter_max,n); % 蚂蚁2各代最佳路径

Route_best3 = zeros(iter_max,n); % 蚂蚁3各代最佳路径

Route_best4 = zeros(iter_max,n); % 蚂蚁4各代最佳路径

Route_best5 = zeros(iter_max,n); % 蚂蚁5各代最佳路径

Length_best = zeros(iter_max,1); % 各代最佳路径的长度

Length_ave = zeros(iter_max,1); % 各代路径的平均长度

while iter <= iter_max

start = ones(m,1)+1; %初始出发城市为2

Table1(:,1) = start;

Table2(:,1) = start;

Table3(:,1) = start;

Table4(:,1) = start;

Table5(:,1) = start;

citys_index = 1:n;

% 逐个蚂蚁路径选择

for i = 1:m

% 逐个城市路径选择

for j = 2:n

tabu1 = Table1(i,1:(j - 1)); %蚂蚁1已访问的城市集合

tabu1(tabu1==0) = []; %把表中的0元素舍去,因为无意义

tabu2 = Table2(i,1:(j - 1)); %蚂蚁2已访问的城市集

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值