導航:首頁 > 五金知識 > matlab有沒有蟻群演算法工具箱

matlab有沒有蟻群演算法工具箱

發布時間:2022-01-16 10:15:03

㈠ MATLAB 有哪些好用的第三方工具箱

這個文件所在的路徑沒有添加到matlab路徑當中,具體方法為:file-set
path-add
with
subfolders添加這個文件所在文件夾即可!

㈡ 求助Matlab蟻群演算法求一般函數極值的演算法

function [ROUTES,PL,Tau]=ACASP(G,Tau,K,M,S,E,Alpha,Beta,Rho,Q)
%% ---------------------------------------------------------------
% ACASP.m
% 蟻群演算法動態尋路演算法
% ChengAihua,PLA Information Engineering University,ZhengZhou,China
% Email:[email protected]
% All rights reserved
%% ---------------------------------------------------------------
% 輸入參數列表
% G 地形圖為01矩陣,如果為1表示障礙物
% Tau 初始信息素矩陣(認為前面的覓食活動中有殘留的信息素)
% K 迭代次數(指螞蟻出動多少波)
% M 螞蟻個數(每一波螞蟻有多少個)
% S 起始點(最短路徑的起始點)
% E 終止點(最短路徑的目的點)
% Alpha 表徵信息素重要程度的參數
% Beta 表徵啟發式因子重要程度的參數
% Rho 信息素蒸發系數
% Q 信息素增加強度系數
%
% 輸出參數列表
% ROUTES 每一代的每一隻螞蟻的爬行路線
% PL 每一代的每一隻螞蟻的爬行路線長度
% Tau 輸出動態修正過的信息素

%% --------------------變數初始化----------------------------------
%load
D=G2D(G);
N=size(D,1);%N表示問題的規模(象素個數)
MM=size(G,1);
a=1;%小方格象素的邊長
Ex=a*(mod(E,MM)-0.5);%終止點橫坐標
if Ex==-0.5
Ex=MM-0.5;
end
Ey=a*(MM+0.5-ceil(E/MM));%終止點縱坐標
Eta=zeros(1,N);%啟發式信息,取為至目標點的直線距離的倒數
%下面構造啟發式信息矩陣
for i=1:N
if ix==-0.5
ix=MM-0.5;
end
iy=a*(MM+0.5-ceil(i/MM));
if i~=E
Eta(1,i)=1/((ix-Ex)^2+(iy-Ey)^2)^0.5;
else
Eta(1,i)=100;
end
end
ROUTES=cell(K,M);%用細胞結構存儲每一代的每一隻螞蟻的爬行路線
PL=zeros(K,M);%用矩陣存儲每一代的每一隻螞蟻的爬行路線長度
%% -----------啟動K輪螞蟻覓食活動,每輪派出M只螞蟻--------------------
for k=1:K
disp(k);
for m=1:M
%% 第一步:狀態初始化
W=S;%當前節點初始化為起始點
Path=S;%爬行路線初始化
PLkm=0;%爬行路線長度初始化
TABUkm=ones(1,N);%禁忌表初始化
TABUkm(S)=0;%已經在初始點了,因此要排除
DD=D;%鄰接矩陣初始化
%% 第二步:下一步可以前往的節點
DW=DD(W,:);
DW1=find(DW
for j=1:length(DW1)
if TABUkm(DW1(j))==0
DW(j)=inf;
end
end
LJD=find(DW
Len_LJD=length(LJD);%可選節點的個數
%% 覓食停止條件:螞蟻未遇到食物或者陷入死胡同
while W~=E&&Len_LJD>=1
%% 第三步:轉輪賭法選擇下一步怎麼走
PP=zeros(1,Len_LJD);
for i=1:Len_LJD
PP(i)=(Tau(W,LJD(i))^Alpha)*(Eta(LJD(i))^Beta);
end
PP=PP/(sum(PP));%建立概率分布
Pcum=cumsum(PP);
Select=find(Pcum>=rand);
%% 第四步:狀態更新和記錄
Path=[Path,to_visit];%路徑增加
PLkm=PLkm+DD(W,to_visit);%路徑長度增加
W=to_visit;%螞蟻移到下一個節點
for kk=1:N
if TABUkm(kk)==0
DD(W,kk)=inf;
DD(kk,W)=inf;
end
end
TABUkm(W)=0;%已訪問過的節點從禁忌表中刪除
for j=1:length(DW1)
if TABUkm(DW1(j))==0
DW(j)=inf;
end
end
LJD=find(DW
Len_LJD=length(LJD);%可選節點的個數
end
%% 第五步:記下每一代每一隻螞蟻的覓食路線和路線長度
ROUTES{k,m}=Path;
if Path(end)==E
PL(k,m)=PLkm;
else
PL(k,m)=inf;
end
end
%% 第六步:更新信息素
Delta_Tau=zeros(N,N);%更新量初始化
for m=1:M
if PL(k,m) ROUT=ROUTES{k,m};
TS=length(ROUT)-1;%跳數
PL_km=PL(k,m);
for s=1:TS
x=ROUT(s);
Delta_Tau(y,x)=Delta_Tau(y,x)+Q/PL_km;
end
end
end
Tau=(1-Rho).

㈢ 粒子群演算法 matlab 工具箱 在哪調用 還是沒有現成的需要自己下載

http://www.mathworks.com/matlabcentral/fileexchange/7506

這個基復本上快算是官方的制了。粒子群演算法工具。注冊以後就可以下載了。

㈣ 如何再matlab中實現遺傳演算法或者是蟻群演算法

使用遺傳演算法(ga)工具箱

㈤ matlab怎麼打開神經網路的工具箱

還有,蟻群演算法有沒有工具箱?怎麼打開,求幫忙! 查看原帖>>

㈥ 蟻群演算法怎樣用MATLAB模擬

蟻群演算法採用matlab開發的模擬平台:演算法實現,路徑顯示,人機交互控制等
希望對你有幫助!
是可以運行的
% the procere of ant colony algorithm for VRP
%
% % % % % % % % % % %

%initialize the parameters of ant colony algorithms
load data.txt;
d=data(:,2:3);
g=data(:,4);
m=31; % 螞蟻數
alpha=1;
belta=4;% 決定tao和miu重要性的參數
lmda=0;
rou=0.9;%衰減系數
q0=0.95;
% 概率
tao0=1/(31*841.04);%初始信息素
Q=1;%螞蟻循環一周所釋放的信息素
defined_phrm=15.0; % initial pheromone level value
QV=100; % 車輛容量
vehicle_best=round(sum(g)/QV)+1;%所完成任務所需的最少車數
V=40;
% 計算兩點的距離
for i=1:32;
for j=1:32;
dist(i,j)=sqrt((d(i,1)-d(j,1))^2+(d(i,2)-d(j,2))^2);
end;
end;
%給tao miu賦初值
for i=1:32;
for j=1:32;
if i~=j;
%s(i,j)=dist(i,1)+dist(1,j)-dist(i,j);
tao(i,j)=defined_phrm;
miu(i,j)=1/dist(i,j);
end;
end;
end;

for k=1:32;
for k=1:32;
deltao(i,j)=0;
end;
end;
best_cost=10000;
for n_gen=1:50;
print_head(n_gen);
for i=1:m;
%best_solution=[];
print_head2(i);
sumload=0;
cur_pos(i)=1;
rn=randperm(32);
n=1;
nn=1;
part_sol(nn)=1;
%cost(n_gen,i)=0.0;
n_sol=0; % 由螞蟻產生的路徑數量
M_vehicle=500;
t=0; %最佳路徑數組的元素數為0

while sumload<=QV;

for k=1:length(rn);
if sumload+g(rn(k))<=QV;
gama(cur_pos(i),rn(k))=(sumload+g(rn(k)))/QV;
A(n)=rn(k);
n=n+1;
end;
end;
fid=fopen('out_customer.txt','a+');
fprintf(fid,'%s %i\t','the current position is:',cur_pos(i));
fprintf(fid,'\n%s','the possible customer set is:')
fprintf(fid,'\t%i\n',A);
fprintf(fid,'------------------------------\n');
fclose(fid);

p=compute_prob(A,cur_pos(i),tao,miu,alpha,belta,gama,lmda,i);
maxp=1e-8;
na=length(A);
for j=1:na;
if p(j)>maxp
maxp=p(j);
index_max=j;
end;
end;

old_pos=cur_pos(i);
if rand(1)<q0
cur_pos(i)=A(index_max);
else
krnd=randperm(na);
cur_pos(i)=A(krnd(1));
bbb=[old_pos cur_pos(i)];
ccc=[1 1];
if bbb==ccc;
cur_pos(i)=A(krnd(2));
end;
end;

tao(old_pos,cur_pos(i))=taolocalupdate(tao(old_pos,cur_pos(i)),rou,tao0);%對所經弧進行局部更新

sumload=sumload+g(cur_pos(i));

nn=nn+1;
part_sol(nn)=cur_pos(i);
temp_load=sumload;

if cur_pos(i)~=1;
rn=setdiff(rn,cur_pos(i));
n=1;
A=[];
end;

if cur_pos(i)==1; % 如果當前點為車場,將當前路徑中的已訪問用戶去掉後,開始產生新路徑
if setdiff(part_sol,1)~=[];
n_sol=n_sol+1; % 表示產生的路徑數,n_sol=1,2,3,..5,6...,超過5條對其費用加上車輛的派遣費用
fid=fopen('out_solution.txt','a+');
fprintf(fid,'%s%i%s','NO.',n_sol,'條路徑是:');
fprintf(fid,'%i ',part_sol);
fprintf(fid,'\n');
fprintf(fid,'%s','當前的用戶需求量是:');
fprintf(fid,'%i\n',temp_load);
fprintf(fid,'------------------------------\n');
fclose(fid);

% 對所得路徑進行路徑內3-opt優化
final_sol=exchange(part_sol);

for nt=1:length(final_sol); % 將所有產生的路徑傳給一個數組
temp(t+nt)=final_sol(nt);
end;
t=t+length(final_sol)-1;

sumload=0;
final_sol=setdiff(final_sol,1);
rn=setdiff(rn,final_sol);
part_sol=[];
final_sol=[];
nn=1;
part_sol(nn)=cur_pos(i);
A=[];
n=1;

end;
end;

if setdiff(rn,1)==[];% 產生最後一條終點不為1的路徑
n_sol=n_sol+1;
nl=length(part_sol);
part_sol(nl+1)=1;%將路徑的最後1位補1

% 對所得路徑進行路徑內3-opt優化
final_sol=exchange(part_sol);

for nt=1:length(final_sol); % 將所有產生的路徑傳給一個數組
temp(t+nt)=final_sol(nt);
end;

cost(n_gen,i)=cost_sol(temp,dist)+M_vehicle*(n_sol-vehicle_best); %計算由螞蟻i產生的路徑總長度

for ki=1:length(temp)-1;
deltao(temp(ki),temp(ki+1))=deltao(temp(ki),temp(ki+1))+Q/cost(n_gen,i);
end;

if cost(n_gen,i)<best_cost;
best_cost=cost(n_gen,i);
old_cost=best_cost;
best_gen=n_gen; % 產生最小費用的代數
best_ant=i; %產生最小費用的螞蟻
best_solution=temp;
end;

if i==m;%如果所有螞蟻均完成一次循環,,則用最佳費用所對應的路徑對弧進行整體更新
for ii=1:32;
for jj=1:32;
tao(ii,jj)=(1-rou)*tao(ii,jj);
end;
end;

for kk=1:length(best_solution)-1;

tao(best_solution(kk),best_solution(kk+1))=tao(best_solution(kk),best_solution(kk+1))+deltao(best_solution(kk),best_solution(kk+1));
end;
end;

fid=fopen('out_solution.txt','a+');
fprintf(fid,'%s%i%s','NO.',n_sol,'路徑是:');
fprintf(fid,'%i ',part_sol);
fprintf(fid,'\n');
fprintf(fid,'%s %i\n','當前的用戶需求量是:',temp_load);
fprintf(fid,'%s %f\n','總費用是:',cost(n_gen,i));
fprintf(fid,'------------------------------\n');
fprintf(fid,'%s\n','最終路徑是:');
fprintf(fid,'%i-',temp);
fprintf(fid,'\n');
fclose(fid);
temp=[];
break;
end;
end;

end;
end;

㈦ matlab 有沒有模糊神經網路工具箱

有,工具箱名稱:anfisedit,以下是一些使用說明。
1. GUI工具
Anfisedit 打開ANFIS編輯內器GUI、Fuzzy 調用容基本FIS編輯器、Mfedit 隸屬度函數編輯器、Ruleedit 規則編輯器和語法解析器、Ruleview 規則觀察器和模糊推理方框圖、Surfview輸出曲面觀察器
2. 隸屬度函數
dsigmf 兩個sigmoid型隸屬度函數之差組成的隸屬度函數、gauss2mf 建立兩邊型高斯隸屬度函數、gaussmf 建立高斯曲線隸屬度函數、gbellmf 建立一般鍾型隸屬度函數、pimf 建立Π型隸屬度函數、psigmf 通過兩個sigmoid型隸屬度函數的乘積構造隸屬度函數、smf 建立S-型隸屬度函數、sigmf
建立Sigmoid型隸屬度函數、trapmf 建立梯形隸屬度函數、trimf 建立三角形隸屬度函數、zmf 建立Z-型隸屬度函數

㈧ matlab中的simulink工具箱怎麼什麼也沒有

也許是你的matlab裝的不全,或者是版本不好的緣故吧,我推薦你用matlab6.5,或者是7.3的,7.1的不好
裝好以後點擊新建就有了!

㈨ matlab2012b有沒有遺傳演算法工具箱

自帶有一個,但是一般都不用它,因為不好用。
建議去網上下載gaot(北卡羅來納大學開發)或 GATBX(謝菲爾德大學開發)的安裝。

閱讀全文

與matlab有沒有蟻群演算法工具箱相關的資料

熱點內容
超聲波換能器數量怎麼選擇 瀏覽:427
製冷機怎麼不上水 瀏覽:298
閥門廠實踐總結 瀏覽:302
廣州閥門廠有限公司 瀏覽:483
圓形閥門怎麼樣開 瀏覽:198
氨氣製冷機吸氣閥門 瀏覽:238
空調製冷出水管不滴水怎麼回事 瀏覽:84
表格中的工具箱 瀏覽:88
怎麼能快速記住消防器材 瀏覽:581
對設備看聽聞觸是什麼 瀏覽:104
起重機機械故障有哪些 瀏覽:381
機床鑄造工藝圖怎麼畫 瀏覽:477
機械行業做什麼好 瀏覽:579
電氣裝置檢測報告 瀏覽:545
沒有逆轉錄儀器怎麼做 瀏覽:914
別克威朗儀表盤燈調亮怎麼調 瀏覽:716
北京泰誠機電設備有限公司怎麼樣 瀏覽:168
耐高溫導熱油管道閥門 瀏覽:320
磨床加工五金件 瀏覽:486
裝盤萃取實驗裝置 瀏覽:486