在matlab中編的粒子演算法。感覺結果跟初始化的粒子很有關係?而且迭代次數太大的話個體歷史

2022-01-13 17:04:57 字數 3840 閱讀 1088

1樓:

%pso標準演算法 其中w c1 c2 a可以改變%包含初始化函式 迭代函式 還有總體的pso演算法函式function [result,online,offline,minmaxmeanadapt]=pso_stand(swarmsize,particlesize,particlescope,isstep,isdraw,loopcount,isplot)

%function [result,online,offline,minmaxmeanadapt]=pso_stand(swarmsize,particlesize,particlescope,initfunc,stepfindfunc,adaptfunc,isstep,isdraw,loopcount,isplot)!

在執行matlab為什麼會出現??? in an assignment a(i) = b, the number of elements in b and i must be

2樓:這是為什麼哦

貼上了你的**執行了一下,未出現你所說的情況。

但對於你所出現的問題:向量運算時如果等式兩邊向量結構不同就會出現。比如下面的語句:

a(3:6)=1:5

本句表示要對a矩陣中3~6號元素進行賦值,共需四個數,但等式右邊是個1行5列的矩陣,有五個輸入元素,兩邊不匹配,出錯。如改正如下形式可避免此錯誤:

a(3:7)=1:5 或 a(3:6)=1:4

求助:粒子群演算法matlab程式的一點疑問 65

3樓:賞雪瑤

%不知道你具體的問題是什麼,下面是乙個最基本的pso演算法解決函式極值問題,如果是一些大型的問題,需要對速度、慣性常數、和自適應變異做進一步優化,希望對你有幫助

function y = fun(x)

y=-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;

%下面是主程式

%% 清空環境

clcclear

%% 引數初始化

%粒子群演算法中的兩個引數

c1 = 1.49445;

c2 = 1.49445;

maxgen=200; % 進化次數

sizepop=20; %種群規模

vmax=1;%速度限制

vmin=-1;

popmax=5;%種群限制

popmin=-5;

%% 產生初始粒子和速度

for i=1:sizepop

%隨機產生乙個種群

pop(i,:)=5*rands(1,2); %初始種群

v(i,:)=rands(1,2); %初始化速度

%計算適應度

fitness(i)=fun(pop(i,:)); %染色體的適應度

end%找最好的染色體

[bestfitness bestindex]=min(fitness);

zbest=pop(bestindex,:); %全域性最佳

gbest=pop; %個體最佳

fitnessgbest=fitness; %個體最佳適應度值

fitnesszbest=bestfitness; %全域性最佳適應度值

%% 迭代尋優

for i=1:maxgen

for j=1:sizepop

%速度更新

v(j,:) = v(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));

v(j,find(v(j,:)>vmax))=vmax;

v(j,find(v(j,:)popmax))=popmax;

pop(j,find(pop(j,:)0.8

k=ceil(2*rand);%ceil朝正無窮大方向取整

pop(j,k)=rand;

end%適應度值

fitness(j)=fun(pop(j,:));

%個體最優更新

if fitness(j) < fitnessgbest(j)

gbest(j,:) = pop(j,:);

fitnessgbest(j) = fitness(j);

end%群體最優更新

if fitness(j) < fitnesszbest

zbest = pop(j,:);

fitnesszbest = fitness(j);

endend

yy(i)=fitnesszbest;

end%% 結果分析

plot(yy)

title(['適應度曲線 ' '終止代數=' num2str(maxgen)]);

xlabel('進化代數');ylabel('適應度');

基於粒子群演算法的函式優化問題matlab程式設計,用於函式。畢業**,求助

4樓:法若南

好的,只要程式設計的嗎。

5樓:匿名使用者

目標函式是什麼 還有約束條件

最小化的粒子群演算法為什麼越優化結果越大

6樓:俠魂萬里

它是每進化一代就差找一次,能否找到結果是看你設定的最大迭代次數和終止條件是否滿足。你可以看pso演算法的兩個公式。 演算法執行和用什麼語言沒關係。

pso的具體實現步驟如下: step1: 引數初始化。

在初始範圍內,隨機初始化一群粒子。

粒子群演算法用matlab做,要把粒子初始化為矩陣要怎麼做

7樓:匿名使用者

可以參考一下這段**

c1=1.8; %學習因子1

c2=1.8; %學習因子2

wmax=1.6; %慣性權重

wmin=0.8; %慣性權重

maxdt=100; %最大迭代次數

d=3; %搜尋空間維數(未知數個數)

n=30; %初始化群體個體數目

xup=20/(2^0.5); %初始化位移上限

xdown=-20/(2^0.5); %初始化位移下限

vup=0.5; %初始化速度上限

vdown=0.0; %初始化速度下限

eps=10^(-6); %設定精度(在已知最小值時候用)

%------初始化種群的個體(可以在這裡限定位置和速度的範圍)------------

x=((xup-xdown).*rand(n,2*d)+xdown); %隨機初始化位置

v=((vup-vdown).*rand(n,2*d)+vdown); %隨機初始化速度

8樓:匿名使用者

rand是隨機生成數值 然後根據你的問題編寫程式即可

matlab 粒子群演算法改錯

9樓:

y=abs(u2-u2)/abs(u2);

10樓:葉綠素

你這錯一般人改不了,誰知道你的fitness是怎麼定義的!

matlab 粒子群優化問題 10

bp神經網路演算法在matlab中的實現

bp神經網路是最基本 最常用的神經網路,matlab有專用函式來建立 訓練它,主回要就是newff train sim 這三個函式,當然其答他如歸一化函式mapminmax 其他net的引數設定 lr goal等 設定好,就可以通過對歷史資料的學習進行 附件是乙個最基本的 例項,本來是電力負荷 的例...

在matlab中如何輸出函式的影象

如果要畫y x 3 x 2 x 5在 20,20 上的影象,可利用以下方法,繪畫區間可以自己定義 方法一 利用plot函式來繪畫影象 x 0 0.1 20 規定繪畫區間 從 20畫到20,中間以0,1為間隔 y x.3 x.2 x 5 確定要繪畫的函式,注意不要漏了 plot x,y 方法二 利用e...

在matlab的simulink中執行時間只有10秒,為何啊

上面有個設定 時間的地方,你設定乙個你想要的時間就行了,預設的是10s 在matlab中如何改變示波器顯示的橫軸的座標 示波器中右鍵 縮放選項 水平縮放 如果你是說simulink裡的示波器,那麼在paremeter視窗裡的 time range裡輸入橫軸顯示的時間,比如100 預設是auto,10...