導航:首頁 > 五金知識 > 粒子群演算法工具箱怎麼調用

粒子群演算法工具箱怎麼調用

發布時間:2022-09-26 09:06:48

『壹』 我利用粒子群演算法工具箱求解最優值時陷入了局部最優該如何解決

粒子群陷入局部最優在所難免,建議可以採取加大權重因子的方法,或者一些改進的粒子群演算法會提出對收斂的種群進行干擾,從而產生新的種群,另外可以採用量子粒子群演算法,在局部最優問題上解決的還算可以

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

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

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

『叄』 粒子群優化演算法(PSO)的matlab運行程序~~謝謝大家啦!

%不知道你具體的問題是什麼,下面是一個最基本的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;
%下面是主程序
%% 清空環境
clc
clear

%% 參數初始化
%粒子群演算法中的兩個參數
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,:)<Vmin))=Vmin;

%種群更新
pop(j,:)=pop(j,:)+0.5*V(j,:);
pop(j,find(pop(j,:)>popmax))=popmax;
pop(j,find(pop(j,:)<popmin))=popmin;

%自適應變異(避免粒子群演算法陷入局部最優)
if rand>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);
end

end
yy(i)=fitnesszbest;

end

%% 結果分析
plot(yy)
title(['適應度曲線 ' '終止代數=' num2str(maxgen)]);
xlabel('進化代數');ylabel('適應度');

『肆』 粒子群優化演算法的參數設置

從上面的例子我們可以看到應用PSO解決優化問題的過程中有兩個重要的步驟: 問題解的編碼和適應度函數PSO的一個優勢就是採用實數編碼, 不需要像遺傳演算法一樣是二進制編碼(或者採用針對實數的遺傳操作.例如對於問題 f(x) = x1^2 + x2^2+x3^2 求解,粒子可以直接編碼為 (x1, x2, x3), 而適應度函數就是f(x). 接著我們就可以利用前面的過程去尋優.這個尋優過程是一個疊代過程, 中止條件一般為設置為達到最大循環數或者最小錯誤
PSO中並沒有許多需要調節的參數,下面列出了這些參數以及經驗設置
粒子數: 一般取 20–40. 其實對於大部分的問題10個粒子已經足夠可以取得好的結果, 不過對於比較難的問題或者特定類別的問題, 粒子數可以取到100 或 200
粒子的長度: 這是由優化問題決定, 就是問題解的長度
粒子的范圍: 由優化問題決定,每一維可是設定不同的范圍
Vmax: 最大速度,決定粒子在一個循環中最大的移動距離,通常設定為粒子的范圍寬度,例如上面的例子里,粒子 (x1, x2, x3) x1 屬於 [-10, 10], 那麼 Vmax 的大小就是 20
學習因子: c1 和 c2 通常等於 2. 不過在文獻中也有其他的取值. 但是一般 c1 等於 c2 並且范圍在0和4之間
中止條件: 最大循環數以及最小錯誤要求. 例如, 在上面的神經網路訓練例子中, 最小錯誤可以設定為1個錯誤分類, 最大循環設定為2000, 這個中止條件由具體的問題確定.
全局PSO和局部PSO: 我們介紹了兩種版本的粒子群優化演算法: 全局版和局部版. 前者速度快不過有時會陷入局部最優. 後者收斂速度慢一點不過很難陷入局部最優. 在實際應用中, 可以先用全局PSO找到大致的結果,再用局部PSO進行搜索.
另外的一個參數是慣性權重, 由Shi 和Eberhart提出, 有興趣的可以參考他們1998年的論文(題目: A modified particle swarm optimizer)。

『伍』 MATLAB中粒子群演算法定義

你要自己寫這個fun_PSOtrain_QNN的演算法,神經網路工具箱里沒有這個函數

『陸』 粒子群演算法的參數設置

從上面的例子我們可以看到應用PSO解決優化問題的過程中有兩個重要的步驟: 問題解的編碼和適應度函數 不需要像遺傳演算法一樣是二進制編碼(或者採用針對實數的遺傳操作.例如對於問題 f(x) = x1^2 + x2^2+x3^2 求解, 粒子可以直接編碼為 (x1, x2, x3), 而適應度函數就是f(x). 接著我們就可以利用前面的過程去尋優.這個尋優過程是一個疊代過程, 中止條件一般為設置為達到最大循環數或者最小錯誤
PSO中並沒有許多需要調節的參數,下面列出了這些參數以及經驗設置
粒子數: 一般取 20 – 40. 其實對於大部分的問題10個粒子已經足夠可以取得好的結果, 不過對於比較難的問題或者特定類別的問題, 粒子數可以取到100 或 200
粒子的長度: 這是由優化問題決定, 就是問題解的長度
粒子的范圍: 由優化問題決定,每一維可以設定不同的范圍
Vmax: 最大速度,決定粒子在一個循環中最大的移動距離,通常設定為粒子的范圍寬度,例如上面的例子里,粒子 (x1, x2, x3) x1 屬於 [-10, 10], 那麼 Vmax 的大小就是 20
學習因子: c1 和 c2 通常等於 2. 不過在文獻中也有其他的取值. 但是一般 c1 等於 c2 並且范圍在0和4之間
中止條件: 最大循環數以及最小錯誤要求. 例如, 在上面的神經網路訓練例子中, 最小錯誤可以設定為1個錯誤分類, 最大循環設定為2000, 這個中止條件由具體的問題確定.
全局PSO和局部PSO: 我們介紹了兩種版本的粒子群優化演算法: 全局版和局部版. 前者速度快不過有時會陷入局部最優. 後者收斂速度慢一點不過很難陷入局部最優. 在實際應用中, 可以先用全局PSO找到大致的結果,再用局部PSO進行搜索. 代碼來自2008年數學建模東北賽區B題, #includestdafx.h#include<math.h>#include<time.h>#include<iostream>#include<fstream>usingnamespacestd;intc1=2;//加速因子intc2=2;//加速因子doublew=1;//慣性權重doubleWmax=1;//最大慣性權重doubleWmin=0.6;//最小慣性權重intKmax=110;//迭代次數intGdsCnt;//物資總數intconstDim=10;//粒子維數intconstPNum=50;//粒子個數intGBIndex=0;//最優粒子索引doublea=0.6;//適應度調整因子doubleb=0.5;//適應度調整因子intXup[Dim];//粒子位置上界數組intXdown[Dim]=;//粒子位置下界數組intValue[Dim];//初始急需度數組intVmax[Dim];//最大速度數組classPARTICLE;//申明粒子節點voidCheck(PARTICLE&,int);//約束函數voidInput(ifstream&);//輸入變數voidInitial();//初始化相關變數doubleGetFit(PARTICLE&);//計算適應度voidCalculateFit();//計算適應度voidBirdsFly();//粒子飛翔voidRun(ofstream&,int=2000);//運行函數classPARTICLE//微粒類{public:intX[Dim];//微粒的坐標數組intXBest[Dim];//微粒的最好位置數組intV[Dim];//粒子速度數組doubleFit;//微粒適合度doubleFitBest;//微粒最好位置適合度};PARTICLEParr[PNum];//粒子數組intmain()//主函數{ofstreamoutf(out.txt);ifstreaminf(data.txt);//關聯輸入文件inf>>GdsCnt;//輸入物資總數Input(inf);Initial();Run(outf,100);system(pause);return0;}voidCheck(PARTICLE&p,intcount)//參數:p粒子對象,count物資數量{srand((unsigned)time(NULL));intsum=0;for(inti=0;i<Dim;i++){if(p.X>Xup)p.X=Xup;elseif(p.X<Xdown)p.X=Xdown;if(p.V>Vmax)p.V=Vmax;elseif(p.V<0)p.V=0;sum+=p.X;}while(sum>count){p.X[rand()%Dim]--;sum=0;for(inti=0;i<Dim;i++){if(p.X>Xup)p.X=Xup;elseif(p.X<Xdown)p.X=Xdown;if(p.V>Vmax)p.V=Vmax;elseif(p.V<0)p.V=0;sum+=p.X;}}voidInput(ifstream&inf)//以inf為對象輸入數據{for(inti=0;i<Dim;i++)inf>>Xup;for(inti=0;i<Dim;i++)inf>>Value;}voidInitial()//初始化數據{GBIndex=0;srand((unsigned)time(NULL));//初始化隨機函數發生器for(inti=0;i<Dim;i++)Vmax=(int)((Xup-Xdown)*0.035);for(inti=0;i{for(intj=0;j<Dim;j++){Parr.X[j]=(int)(rand()/(double)RAND_MAX*(Xup[j]-Xdown[j])-Xdown[j]+0.5);Parr.XBest[j]=Parr.X[j];Parr.V[j]=(int)(rand()/(double)RAND_MAX*(Vmax[j]-Vmax[j]/2));}Parr.Fit=GetFit(Parr);Parr.FitBest=Parr.Fit;if(Parr.Fit>Parr[GBIndex].Fit)GBIndex=i;}}doubleGetFit(PARTICLE&p)//計算對象適應度{doublesum=0;for(inti=0;i<Dim;i++)for(intj=1;j<=p.X;j++)sum+=(1-(j-1)*a/(Xup-b))*Value;returnsum;}voidCalculateFit()//計算數組內各粒子的適應度{for(inti=0;i{Parr.Fit=GetFit(Parr);}}voidBirdsFly()//粒子飛行尋找最優解{srand((unsigned)time(NULL));staticintk=10;w=Wmax-k*(Wmax-Wmin)/Kmax;k++;for(inti=0;i{for(intj=0;j<Dim;j++){Parr.V[j]=(int)(w*Parr.V[j]);Parr.V[j]+=(int)(c1*rand()/(double)RAND_MAX*(Parr.XBest[j]-Parr.X[j]);Parr.V[j]+=c2*rand()/(double)RAND_MAX*(Parr[GBIndex].XBest[j]-Parr.X[j]));}}Check(Parr,GdsCnt);for(intj=0;j<Dim;j++){Parr.X[j]+=Parr.V[j];Check(Parr,GdsCnt);}CalculateFit();for(inti=0;i{if(Parr.Fit>=Parr.FitBest){Parr.FitBest=Parr.Fit;for(intj=0;j<Dim;j++)Parr.XBest[j]=Parr.X[j];}}GBIndex=0;for(inti=0;i{if(Parr.FitBest>Parr[GBIndex].FitBest&&i!=GBIndex)GBIndex=i;}}voidRun(ofstream&outf,intnum)//令粒子以規定次數num飛行{for(inti=0;i<num;i++){BirdsFly();outf<<(i+1)<<ends<for(intj=0;j<Dim;j++)outf<outf<<endl;}cout<<Done!<<endl;}

『柒』 用matlab實現粒子群優化演算法的可視化模擬,跪求源代碼!!!!

給你一個地址,是Mathworks公司網站上的,全球Matlab使用者將自己的代碼在這里分享,這是粒子群演算法PSO工具箱地址

http://www.mathworks.com/matlabcentral/fileexchange/7506-particle-swarm-optimization-toolbox

看看使用說明,用一下demo就會了,在界面的右下方有平面粒子顯示

在這里你還可以搜到很多源代碼,希望對你有幫助

『捌』 matlab工具箱里moga怎麼用

本來想找MOPSO多目標粒子群演算法的matlab工具箱的,但是還沒找到。只是有人看到用Matlab的MOGA工具箱。
也挺好的,至少可以直接拿過來做MOP多目標問題的求解。

NSGA-II is a very famous multi-objective optimization algorithm. I submitted an example previously and wanted to make this submission useful to others by creating it as a function. Even though this function is very specific to benchmark problems, with a little bit more modification this can be adopted for any multi-objective optimization.
The function is nsga_2(pop,gen). The input arguments for the function are population size and number of generations. For customization purposes the user is free to modify the objective function (function of several decision variables) by modifying an m file (evaluate_objective.m). Couple of sample objective functions is already described in the file. The user also has the freedom to define the decision space.
For more information on NSGA-II visit Kanpur Genetic Algorithm Laboratory at

『玖』 如何調用MATLAB遺傳演算法工具箱

1、打開MATLAB軟體。

『拾』 粒子群演算法工具箱怎麼用

您好,看到您的問題將要被新提的問題從問題列表中擠出,問題無人回答過期後會被扣分並且懸賞分也將被沒收!所以我給你提幾條建議: 一,您可以選擇在正確的分類下去提問或者到與您問題相關專業網站論壇里去看看,這樣知道你問題答案的人才會多一些,回答的人也會多些。 二,您可以多認識一些知識豐富的網友,和曾經為你解答過問題的網友經常保持聯系,遇到問題時可以直接向這些好友詢問,他們會更加真誠熱心為你尋找答案的。 三,該自己做的事還是必須由自己來做的,有的事還是須由自己的聰明才智來解決的,別人不可能代勞!只有自己做了才是真正屬於自己的,別人只能給你提供指導和建議,最終靠自己。 您可以不採納我的答案,但請你一定採納我的建議哦! 雖然我的答案很可能不能解決你的問題,但一定可以使你更好地使用問問哦~~~

閱讀全文

與粒子群演算法工具箱怎麼調用相關的資料

熱點內容
美術畫室器材有哪些 瀏覽:443
超聲波頻率什麼波長什麼 瀏覽:476
安裝在線監測設備需多少錢 瀏覽:198
尼桑綠色eco儀表燈是什麼意思 瀏覽:186
家裡沒有負重器材怎麼搞負重 瀏覽:619
儀表台上電池的燈亮是什麼原因 瀏覽:521
製冷74f是什麼意思 瀏覽:930
機械挖填土方每平方多少錢 瀏覽:386
娛樂暖場設備出租怎麼找客戶 瀏覽:261
水暖消防閥門怎麼樣 瀏覽:340
等級保護測評工具箱 瀏覽:520
皓影儀表盤顯示的是什麼燈 瀏覽:589
天蠍排氣閥門怎麼開關 瀏覽:206
超聲波治療儀用在腿上起什麼作用 瀏覽:829
製取並收集氧氣的實驗裝置 瀏覽:13
熱油泵軸承加什麼油 瀏覽:872
驗證動量守恆實驗裝置的示意圖如圖所示 瀏覽:844
製冷劑行情怎麼樣 瀏覽:333
物探測試檢測設備是什麼 瀏覽:746
日本軸承代號是什麼意思 瀏覽:955