資源簡介
運用matlab編程實現蟻群算法的低壓電力線設計

代碼片段和文件信息
clear?all;
clc;
%%第一步:變量初始化
m=40;Alpha=1;Beta=1;Rho=0.1;NC_max=75;Q=100;q0=0.2;s=2;d=23;
C?=[?37???129
????94???424
???361?????5
????91????14
???380???373
???200???288
???163???217
????21???211
???155???389
???430???439
???104????40
???298?????0
???489???275
???488???461
????25???282
???316???426
???451???258
???319???222
???127???217
???289???313
????31???380
???135???212
???424???266
???297???156
???421???156
????33???432
???330???389
???351???124
???352???253
???325???142
???221???239
????26???423
???282???326
????43????30
???386???150
???186???156
???374???259
???377???270
????84???437
???305???212
???371????83
???499???277
???487???368
????52???266
???432???243
???277???410
????77???327
???180???308
???222???151
???371???354
???221???490
???274????11
???324???454
????70???341
????66???305
???150???314
???309???372
???197????74
???112???350
???471????29
????];
%scatter(C(:1)C(:2));
%hold?on;
n=size(C1);%n表示問題的規模(城市個數)結果:n=40?得到第一列維數。即40個城市。
D=ones(nn);%D表示完全圖的賦權鄰接矩陣?31*31矩陣
%%%%%%%%求距離
for?i=1:n
????for?j=1:n
????????
????????if?i ????????????D(ij)=sqrt((C(i1)-C(j1))^2+(C(i2)-C(j2))^2);
????????end
????D(ji)=D(ij);
????end
end
%D
%%%%%%%分布時延
delay=zeros(nn);
for?i=1:n
????for?j=1:n
????????if?D(ij)==1
????????????delay(ij)=0;
????????elseif?D(ij)>=1&D(ij)<100
????????????delay(ij)=0.002;
????????elseif?D(ij)>=100?&?D(ij)<200
????????????delay(ij)=0.004;
????????elseif?D(ij)>=200?&?D(ij)<300
????????????delay(ij)=0.006;
????????elseif?D(ij)>=300?&?D(ij)<400
????????????delay(ij)=0.008;
????????elseif?D(ij)>=400?&?D(ij)<500
????????????delay(ij)=0.01;
????????elseif?D(ij)>=500?&?D(ij)<600
????????????delay(ij)=0.012;
????????end
????end
end
%delay
Eta=1./D;%Eta為啟發因子,這里設為距離的倒數
Tau=ones(nn);%Tau為信息素矩陣
Tabu=zeros(mn);%存儲并記錄路徑的生成
NC=1;%迭代計數器
R_best=zeros(NC_maxn);%各代最佳路線
L_best=inf.*ones(NC_max1);%各次最佳路線的時延?inf表示正無窮大
while?NC<=NC_max%停止條件之一:達到最大迭代次數
?%%%第二步:放在初始位置
?????Tabu(:1)=s;
%%%%第三步:建立路由表
?????R=zeros(nn);
?????for?i=1:n
?????????for?j=1:n
?????????????if?D(ij)<350
?????????????????R(ij)=1;
?????????????else
?????????????????R(ij)=0;
?????????????end
?????????end
?????end
?????R(ij)=R(ij);
%%%%第四步:螞蟻按概率計算下一跳
?????for?i=1:m%螞蟻依次循環
?????????for?j=2:n%城市?
?????????????visited=Tabu(i1:(j-1));%已訪問的城市,是個1行j-1列的向量,紀錄了第i只螞蟻走過的城市號??避免環路
?????????????J=zeros(1(n-j+1));%待訪問的城市,是個1行n-j+1列的向量
?????????????P=J;%待訪問城市的選擇概率分布
?????????????Jc=1;%Jc在這里是什么意思呢?沒什么意思,只是為Jc賦初值
?????????????for?k=1:n?%尋找第i只螞蟻未走過的城市編號
??????????????????if(length(find(visited==k))==0)&(R(visited(end)k)==1)
????????????????????J(Jc)=k;%將未走過的城市編號依次賦給J中第Jc個元素
????????????????????Jc=Jc+1;%通過循環,進行下一個未走過城市的查找
????????????????????end
???????????????%?end?%這個循環又是什么作用?
?????????????end
?????????????if?J(1)==0
?????????????????break;
?????????????end
%%%%%下面計算待選城市的概率分布
????????????for?k=1:length(J)
?????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7522??2010-05-12?17:55??jiandan40.m
-----------?---------??----------?-----??----
?????????????????7522????????????????????1
- 上一篇:MATLAB神經網絡工具箱中的神經網絡模型
- 下一篇:BP神經網絡MATLAB實現
評論
共有 條評論