有没有厉害的人帮帮我,免疫算法选址,原来的代码坐标是30个能运行,我现在需要在20个坐标点里面选址,减少了坐标后,然后代码运行后就显示distance出错了,我不知到是哪里的数据有问题

有没有厉害的人帮帮我,免疫算法选址,原来的代码坐标是30个能运行,我现在需要在20个坐标点里面选址,减少了坐标后,然后代码运行后就显示distance出错了,我不知到是哪里的数据有问题

关注引自免费微信小程序:皆我百晓生
根据您提供的信息,您的MATLAB程序在运行免疫算法进行选址时遇到错误,提示“位置1的索引超出数组范围(不能超过20)”。这表明在计算距离时,程序尝试访问city_coordinate或citycoordinate数组中的一个不存在的元素,即索引值超过了数组的实际长度。鉴于您提到将坐标点从30个减少到20个后出现了此问题,我们可以推测错误可能与调整后的数组长度不匹配有关。
为了解决这个问题,我们需要检查并修改相关代码段以确保索引值不会超出数组范围。以下是针对您提供的代码片段进行分析和提出解决方案的步骤:
city_coordinate和citycoordinate数组的长度。确保它们都已更新为20个坐标点,并且在后续计算中使用的索引值不超过20。size(city_coordinate) % 检查city_coordinate数组长度
size(citycoordinate) % 检查citycoordinate数组长度
for i = 1:2循环,这意味着仅对前两个坐标点进行操作。显然,这不是您想要的,因为您现在有20个坐标点。应将循环范围更改为for i = 1:20,以遍历所有坐标点。for i = 1:20
...
end
dist()函数中的参数正确地引用了city_coordinate和citycoordinate数组。这里注意到您提供的代码片段中存在拼写错误:citycoordinate和city_coordinate不一致。请确保它们在所有地方的一致性,并且正确传递给dist()函数。修正后的距离计算代码应为:
for i = 1:size(city_coordinate, 1)
distance(i,:) = dist(city_coordinate(i,:), city_coordinate(bestchrom,:)');
end
请注意,这里假设bestchrom是一个有效的索引值,其取值范围应在1到20之间,用于从city_coordinate数组中选取最佳染色体对应的坐标点。
按照上述步骤检查并修改代码后,应该可以解决您遇到的“位置1的索引超出数组范围”的错误。如果您还有其他问题或需要进一步的帮助,请提供完整的相关代码或详细描述问题,以便进行更深入的分析和解决。