當前位置:首頁 » 操作系統 » 生物群演算法

生物群演算法

發布時間: 2022-03-15 20:37:04

⑴ 人工螢火蟲群優化演算法是什麼

人工螢火蟲群優化演算法是模擬自然界中螢火蟲成蟲發光的生物學特性發展而來的,也是基於群體搜索的隨機優化演算法。
關於該演算法目前文獻有兩種版本:
①由印度學者Krishnanand等人提出,稱為GSO(glowwormswarmoptimization);
②由劍橋學者Yang提出,稱為FA(fireflyalgorithm)。

⑵ 生物種群和群落如題的計算公式是什麼

理論計算公式:N=M×n/m。

註:N-種群數量,M-被捕捉對象數量,n-重捕個體數量,m-重捕個體中被標記個體的數量

⑶ 什麼是粒子群演算法

粒子群演算法,也稱粒子群優化演算法(Partical Swarm Optimization),縮寫為 PSO, 是近年來發展起來的一種新的進化演算法((Evolu2tionary Algorithm - EA)。PSO 演算法屬於進化演算法的一種,和遺傳演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover) 和「變異」(Mutation) 操作,它通過追隨當前搜索到的最優值來尋找全局最優。這種演算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性。設想這樣一個場景:一群鳥在隨機搜索食物。在這個區域里只有一塊食物。所有的鳥都不知道食物在那裡。但是他們知道當前的位置離食物還有多遠。那麼找到食物的最優策略是什麼呢。最簡單有效的就是搜尋目前離食物最近的鳥的周圍區域。 PSO從這種模型中得到啟示並用於解決優化問題。PSO中,每個優化問題的解都是搜索空間中的一隻鳥。我們稱之為「粒子」。所有的粒子都有一個由被優化的函數決定的適應值(fitness value),每個粒子還有一個速度決定他們飛翔的方向和距離。然後粒子們就追隨當前的最優粒子在解空間中搜索。 PSO 初始化為一群隨機粒子(隨機解)。然後通過迭代找到最優解。在每一次迭代中,粒子通過跟蹤兩個"極值"來更新自己。第一個就是粒子本身所找到的最優解,這個解叫做個體極值pBest。另一個極值是整個種群目前找到的最優解,這個極值是全局極值gBest。另外也可以不用整個種群而只是用其中一部分作為粒子的鄰居,那麼在所有鄰居中的極值就是局部極值。 粒子公式 在找到這兩個最優值時,粒子根據如下的公式來更新自己的速度和新的位置: v[] = w * v[] + c1 * rand() * (pbest[] - present[]) + c2 * rand() * (gbest[] - present[]) (a) present[] = persent[] + v[] (b) v[] 是粒子的速度, w是慣性權重,persent[] 是當前粒子的位置. pbest[] and gbest[] 如前定義 rand () 是介於(0, 1)之間的隨機數. c1, c2 是學習因子. 通常 c1 = c2 = 2. 程序的偽代碼如下 For each particle ____Initialize particle END Do ____For each particle ________Calculate fitness value ________If the fitness value is better than the best fitness value (pBest) in history ____________set current value as the new pBest ____End ____Choose the particle with the best fitness value of all the particles as the gBest ____For each particle ________Calculate particle velocity according equation (a) ________Update particle position according equation (b) ____End While maximum iterations or minimum error criteria is not attained 在每一維粒子的速度都會被限制在一個最大速度Vmax,如果某一維更新後的速度超過用戶設定的Vmax,那麼這一維的速度就被限定為Vmax

⑷ 一群演算法是什麼意思

一群演算法?你確定沒有打錯字,我知道的只有蟻群演算法,蟻群演算法是一種用來尋找優化路徑的概率型演算法。它由Marco Dorigo於1992年在他的博士論文中提出,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為,這種演算法具有分布計算、信息正反饋和啟發式搜索的特徵,本質上是進化演算法中的一種啟發式全局優化演算法。該演算法應用於其他組合優化問題,如旅行商問題、指派問題、Job—shop調度問題、車輛路由問題、圖著色問題和網路路由問題等。最近幾年,該演算法在網路路由中的應用受到越來越多學者的關注,並提出了一些新的基於螞蟻演算法的路由演算法。同傳統的路由演算法相比較,該演算法在網路路由中具有信息分布式性、動態性、隨機性和非同步性等特點,而這些特點正好能滿足網路路由的需要。

⑸ 遺傳演算法,蟻群演算法和粒子群演算法都是什麼演算法

遺傳演算法(Genetic Algorithm)是模擬達爾文生物進化論的自然選擇和遺傳學機理的生物進化過程的計算模型,是一種通過模擬自然進化過程搜索最優解的方法。
蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。
粒子群演算法,也稱粒子群優化演算法(Particle Swarm Optimization),縮寫為 PSO, 是近年來由J. Kennedy和R. C. Eberhart等[1] 開發的一種新的進化演算法(Evolutionary Algorithm - EA)。PSO 演算法屬於進化演算法的一種,和模擬退火演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover) 和「變異」(Mutation) 操作,它通過追隨當前搜索到的最優值來尋找全局最優。

⑹ 生物群類群數量最少的是哪一種

魚類最多
人類最少
D.魚類、兩棲類

⑺ 求生物學 蟻群演算法

蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型演算法。它由Marco Dorigo於1992年在他的博士論文中提出,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為。蟻群演算法是一種模擬進化演算法,初步的研究表明該演算法具有許多優良的性質.針對PID控制器參數優化設計問題,將蟻群演算法設計的結果與遺傳演算法設計的結果進行了比較,數值模擬結果表明,蟻群演算法具有一種新的模擬進化優化方法的有效性和應用價值。

下面詳細說明:
1、范圍:
螞蟻觀察到的范圍是一個方格世界,螞蟻有一個參數為速度半徑(一般是3),那麼它能觀察到的范圍就是3*3個方格世界,並且能移動的距離也在這個范圍之內。
2、環境:
螞蟻所在的環境是一個虛擬的世界,其中有障礙物,有別的螞蟻,還有信息素,信息素有兩種,一種是找到食物的螞蟻灑下的食物信息素,一種是找到窩的螞蟻灑下的窩的信息素。每個螞蟻都僅僅能感知它范圍內的環境信息。環境以一定的速率讓信息素消失。
3、覓食規則:
在每隻螞蟻能感知的范圍內尋找是否有食物,如果有就直接過去。否則看是否有信息素,並且比較在能感知的范圍內哪一點的信息素最多,這樣,它就朝信息素多的地方走,並且每隻螞蟻都會以小概率犯錯誤,從而並不是往信息素最多的點移動。螞蟻找窩的規則和上面一樣,只不過它對窩的信息素做出反應,而對食物信息素沒反應。
4、移動規則:
每隻螞蟻都朝向信息素最多的方向移,並且,當周圍沒有信息素指引的時候,螞蟻會按照自己原來運動的方向慣性的運動下去,並且,在運動的方向有一個隨機的小的擾動。為了防止螞蟻原地轉圈,它會記住最近剛走過了哪些點,如果發現要走的下一點已經在最近走過了,它就會盡量避開。
5、避障規則:
如果螞蟻要移動的方向有障礙物擋住,它會隨機的選擇另一個方向,並且有信息素指引的話,它會按照覓食的規則行為。
6、播撒信息素規則:
每隻螞蟻在剛找到食物或者窩的時候撒發的信息素最多,並隨著它走遠的距離,播撒的信息素越來越少。
根據這幾條規則,螞蟻之間並沒有直接的關系,但是每隻螞蟻都和環境發生交互,而通過信息素這個紐帶,實際上把各個螞蟻之間關聯起來了。比如,當一隻螞蟻找到了食物,它並沒有直接告訴其它螞蟻這兒有食物,而是向環境播撒信息素,當其它的螞蟻經過它附近的時候,就會感覺到信息素的存在,進而根據信息素的指引找到了食物。

⑻ 求大神給出基於粒子群演算法的多目標搜索演算法的完整程序。。。從目標函數到最後。。

%% 該函數演示多目標perota優化問題
%清空環境
clc
clear
load data
%% 初始參數
objnum=size(P,1); %類中物品個數
weight=92; %總重量限制

%初始化程序
Dim=5; %粒子維數
xSize=50; %種群個數
MaxIt=200; %迭代次數
c1=0.8; %演算法參數
c2=0.8; %演算法參數
wmax=1.2; %慣性因子
wmin=0.1; %慣性因子

x=unidrnd(4,xSize,Dim); %粒子初始化
v=zeros(xSize,Dim); %速度初始化

xbest=x; %個體最佳值
gbest=x(1,:); %粒子群最佳位置

% 粒子適應度值
px=zeros(1,xSize); %粒子價值目標
rx=zeros(1,xSize); %粒子體積目標
cx=zeros(1,xSize); %重量約束

% 最優值初始化
pxbest=zeros(1,xSize); %粒子最優價值目標
rxbest=zeros(1,xSize); %粒子最優體積目標
cxbest=zeros(1,xSize); %記錄重量,以求約束

% 上一次的值
pxPrior=zeros(1,xSize);%粒子價值目標
rxPrior=zeros(1,xSize);%粒子體積目標
cxPrior=zeros(1,xSize);%記錄重量,以求約束

%計算初始目標向量
for i=1:xSize
for j=1:Dim %控制類別
px(i) = px(i)+P(x(i,j),j); %粒子價值
rx(i) = rx(i)+R(x(i,j),j); %粒子體積
cx(i) = cx(i)+C(x(i,j),j); %粒子重量
end
end
% 粒子最優位置
pxbest=px;rxbest=rx;cxbest=cx;

%% 初始篩選非劣解
flj=[];
fljx=[];
fljNum=0;
%兩個實數相等精度
tol=1e-7;
for i=1:xSize
flag=0; %支配標志
for j=1:xSize
if j~=i
if ((px(i)<px(j)) && (rx(i)>rx(j))) ||((abs(px(i)-px(j))<tol)...
&& (rx(i)>rx(j)))||((px(i)<px(j)) && (abs(rx(i)-rx(j))<tol)) || (cx(i)>weight)
flag=1;
break;
end
end
end

%判斷有無被支配
if flag==0
fljNum=fljNum+1;
% 記錄非劣解
flj(fljNum,1)=px(i);flj(fljNum,2)=rx(i);flj(fljNum,3)=cx(i);
% 非劣解位置
fljx(fljNum,:)=x(i,:);
end
end

%% 循環迭代
for iter=1:MaxIt

% 權值更新
w=wmax-(wmax-wmin)*iter/MaxIt;

%從非劣解中選擇粒子作為全局最優解
s=size(fljx,1);
index=randi(s,1,1);
gbest=fljx(index,:);

%% 群體更新
for i=1:xSize
%速度更新
v(i,:)=w*v(i,:)+c1*rand(1,1)*(xbest(i,:)-x(i,:))+c2*rand(1,1)*(gbest-x(i,:));

%位置更新
x(i,:)=x(i,:)+v(i,:);
x(i,:) = rem(x(i,:),objnum)/double(objnum);
index1=find(x(i,:)<=0);
if ~isempty(index1)
x(i,index1)=rand(size(index1));
end
x(i,:)=ceil(4*x(i,:));
end

%% 計算個體適應度
pxPrior(:)=0;
rxPrior(:)=0;
cxPrior(:)=0;
for i=1:xSize
for j=1:Dim %控制類別
pxPrior(i) = pxPrior(i)+P(x(i,j),j); %計算粒子i 價值
rxPrior(i) = rxPrior(i)+R(x(i,j),j); %計算粒子i 體積
cxPrior(i) = cxPrior(i)+C(x(i,j),j); %計算粒子i 重量
end
end

%% 更新粒子歷史最佳
for i=1:xSize
%現在的支配原有的,替代原有的
if ((px(i)<pxPrior(i)) && (rx(i)>rxPrior(i))) ||((abs(px(i)-pxPrior(i))<tol)...
&& (rx(i)>rxPrior(i)))||((px(i)<pxPrior(i)) && (abs(rx(i)-rxPrior(i))<tol)) || (cx(i)>weight)
xbest(i,:)=x(i,:);%沒有記錄目標值
pxbest(i)=pxPrior(i);rxbest(i)=rxPrior(i);cxbest(i)=cxPrior(i);
end

%彼此不受支配,隨機決定
if ~( ((px(i)<pxPrior(i)) && (rx(i)>rxPrior(i))) ||((abs(px(i)-pxPrior(i))<tol)...
&& (rx(i)>rxPrior(i)))||((px(i)<pxPrior(i)) && (abs(rx(i)-rxPrior(i))<tol)) || (cx(i)>weight) )...
&& ~( ((pxPrior(i)<px(i)) && (rxPrior(i)>rx(i))) ||((abs(pxPrior(i)-px(i))<tol) && (rxPrior(i)>rx(i)))...
||((pxPrior(i)<px(i)) && (abs(rxPrior(i)-rx(i))<tol)) || (cxPrior(i)>weight) )
if rand(1,1)<0.5
xbest(i,:)=x(i,:);
pxbest(i)=pxPrior(i);rxbest(i)=rxPrior(i);cxbest(i)=cxPrior(i);
end
end
end

%% 更新非劣解集合
px=pxPrior;
rx=rxPrior;
cx=cxPrior;
%更新升級非劣解集合
s=size(flj,1);%目前非劣解集合中元素個數

%先將非劣解集合和xbest合並
pppx=zeros(1,s+xSize);
rrrx=zeros(1,s+xSize);
cccx=zeros(1,s+xSize);
pppx(1:xSize)=pxbest;pppx(xSize+1:end)=flj(:,1)';
rrrx(1:xSize)=rxbest;rrrx(xSize+1:end)=flj(:,2)';
cccx(1:xSize)=cxbest;cccx(xSize+1:end)=flj(:,3)';
xxbest=zeros(s+xSize,Dim);
xxbest(1:xSize,:)=xbest;
xxbest(xSize+1:end,:)=fljx;

%篩選非劣解
flj=[];
fljx=[];
k=0;
tol=1e-7;
for i=1:xSize+s
flag=0;%沒有被支配
%判斷該點是否非劣
for j=1:xSize+s
if j~=i
if ((pppx(i)<pppx(j)) && (rrrx(i)>rrrx(j))) ||((abs(pppx(i)-pppx(j))<tol) ...
&& (rrrx(i)>rrrx(j)))||((pppx(i)<pppx(j)) && (abs(rrrx(i)-rrrx(j))<tol)) ...
|| (cccx(i)>weight) %有一次被支配
flag=1;
break;
end
end
end

%判斷有無被支配
if flag==0
k=k+1;
flj(k,1)=pppx(i);flj(k,2)=rrrx(i);flj(k,3)=cccx(i);%記錄非劣解
fljx(k,:)=xxbest(i,:);%非劣解位置
end
end

%去掉重復粒子
repflag=0; %重復標志
k=1; %不同非劣解粒子數
flj2=[]; %存儲不同非劣解
fljx2=[]; %存儲不同非劣解粒子位置
flj2(k,:)=flj(1,:);
fljx2(k,:)=fljx(1,:);
for j=2:size(flj,1)
repflag=0; %重復標志
for i=1:size(flj2,1)
result=(fljx(j,:)==fljx2(i,:));
if length(find(result==1))==Dim
repflag=1;%有重復
end
end
%粒子不同,存儲
if repflag==0
k=k+1;
flj2(k,:)=flj(j,:);
fljx2(k,:)=fljx(j,:);
end

end

%非劣解更新
flj=flj2;
fljx=fljx2;

end

%繪制非劣解分布
plot(flj(:,1),flj(:,2),'o')
xlabel('P')
ylabel('R')
title('最終非劣解在目標空間分布')
disp('非劣解flj中三列依次為P,R,C')

熱點內容
測試php性能工具 發布:2024-11-15 22:19:37 瀏覽:579
安卓手機怎麼給王者榮耀差評 發布:2024-11-15 22:16:47 瀏覽:269
c調用python返回 發布:2024-11-15 22:14:23 瀏覽:942
優酷無法上傳高清視頻 發布:2024-11-15 22:13:13 瀏覽:732
源碼倉 發布:2024-11-15 22:07:29 瀏覽:721
極路由外網訪問 發布:2024-11-15 21:49:56 瀏覽:489
lispc語言 發布:2024-11-15 21:45:32 瀏覽:850
linux誤刪除目錄恢復 發布:2024-11-15 21:41:13 瀏覽:286
手機密碼忘了怎麼修改 發布:2024-11-15 21:40:04 瀏覽:335
常用的外文資料庫 發布:2024-11-15 21:37:22 瀏覽:9