matlab程序突然出错,帮忙看下,急
我的蚁群算法突然出现错误,错误如下:
??? Undefined command/function 'pos'.
Error in ==> initial at 18
x1=pos(i,1);
Error in ==> main at 20
initial; %初始化数据,将蚂蚁随机放入城市位置
我的主程序如下:
global dis_table; %城市距离矩阵
global tobu; %蚂蚁禁忌表
global ph_table; %信息素分布表
global hu_table; %启发式分布表
global ant_n; %蚂蚁数量
global temp_pool; %放置备选城市
global dispose; %信息素挥发率
global everbest; %历代最优解
global best_individual; %历代最优解路径
global G; %记录进化代数
global adapt_ave; %进化数据
global adapt_best; %历代最优解的变化
initial; %初始化数据,将蚂蚁随机放入城市位置
for G=1:NC
pause(0.01);
search; %解构成
adapting; %计算各回路长度
keepbest; %保优函数
ph_fresh; %信息素更新
paint; %绘制图形
end
result;
clear a;
clear b;
clear NC;
clear h;
clear i;
clear j;
clear k;
clear n;
clear min_dis;
clear min_pos;
clear r;
clear tobu;
clear dis_sum;
clear dispose;
clear dis;
clear ant_n;
clear x1;
clear x2;
clear y1;
clear y2;
clear temp_pool;
clear city;
clear city_n;
clear adapt;
clear ada_sum;
clear ada_temp;
clear G;
clear ans;
初始化函数如下:
%初始化函数
ant_n=50;
city_n=30;
NC=200;
tobu(ant_n,city_n)=0;
ph_table(city_n,city_n)=0;
hu_table(city_n,city_n)=0;
a=3;
b=1;
dispose=0.2;
everbest=inf;
adapt_ave(NC)=0;
adapt_best(NC)=inf;
%计算城市距离矩阵
for i=1:city_n
for j=1:city_n
x1=pos(i,1);
y1=pos(i,2);
x2=pos(j,1);
y2=pos(j,2);
dis_table(i,j)=sqrt((x1-x2)^2+(y1-y2)^2);
end
end
for i=1:city_n
dis_table(i,i)=inf;
end
%初始化启发式分布表
for i=1:city_n
for j=1:city_n
hu_table(i,j)=100/dis_table(i,j);
end
end
%初始化信息素
for i=1:city_n
for j=1:city_n
ph_table(i,j)=0.5; %额定信息素取值为0~1
end
end