?? search.m
字號:
%解搜索函數
%===============================================
%第一種群數據
%初始化禁忌表
for i=1:ant_n_A
for j=1:city_n
tobu_A(i,j)=0;
end
end
%隨機放置螞蟻初始位置
for i=1:ant_n_A
city=round((city_n-1)*rand)+1; %隨機產生初始位置城市
tobu_A(i,1)=city;
end
for i=1:ant_n_A %對每一只螞蟻進行解構造
n=1;
for j=1:city_n-1 %每只螞蟻進行city_n-1次探索
for k=1:city_n %臨時池供選擇用
temp_pool_A(k)=(hu_table(tobu_A(i,n),k)^b_A)*(ph_table_A(tobu_A(i,n),k)^a_A);
end
for k=1:n %將已經訪問過的城市的選擇概率置0
temp_pool_A(tobu_A(i,k))=0;
end
ada_sum=0;
for k=1:city_n
ada_sum=ada_sum+temp_pool_A(k);
end
r=rand*ada_sum; %隨機產生一個數
ada_temp=0; %初始化累加值為0
h=0;
while(ada_temp<r)
h=h+1;
ada_temp=ada_temp+temp_pool_A(h);
end
%退出循環時的h值即為被選擇的個體序號
n=n+1;
tobu_A(i,n)=h; %當前訪問的城市加入禁忌表
end
end
%===============================================
%第二種群數據
%初始化禁忌表
for i=1:ant_n_B
for j=1:city_n
tobu_B(i,j)=0;
end
end
%隨機放置螞蟻初始位置
for i=1:ant_n_B
city=round((city_n-1)*rand)+1; %隨機產生初始位置城市
tobu_B(i,1)=city;
end
for i=1:ant_n_B %對每一只螞蟻進行解構造
n=1;
for j=1:city_n-1 %每只螞蟻進行city_n-1次探索
for k=1:city_n %臨時池供選擇用
temp_pool_B(k)=(hu_table(tobu_B(i,n),k)^b_B)*(ph_table_B(tobu_B(i,n),k)^a_B);
end
for k=1:n %將已經訪問過的城市的選擇概率置0
temp_pool_B(tobu_B(i,k))=0;
end
ada_sum=0;
for k=1:city_n
ada_sum=ada_sum+temp_pool_B(k);
end
r=rand*ada_sum; %隨機產生一個數
ada_temp=0; %初始化累加值為0
h=0;
while(ada_temp<r)
h=h+1;
ada_temp=ada_temp+temp_pool_B(h);
end
%退出循環時的h值即為被選擇的個體序號
n=n+1;
tobu_B(i,n)=h; %當前訪問的城市加入禁忌表
end
end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -