A. 怎麼把以下的粒子群演算法改成求最小值的優化程序
我文庫中有詳細註解的MATLAB粒子群演算法程序,你只需改動目標函數和幾個參數即可。
希望對你有所幫助
B. 粒子群演算法 matlab 工具箱 在哪調用 還是沒有現成的需要自己下載
http://www.mathworks.com/matlabcentral/fileexchange/7506
這個基復本上快算是官方的制了。粒子群演算法工具。注冊以後就可以下載了。
C. 如何用粒子群優化(PSO)演算法實現多目標優化
粒子群演算法,也稱復粒子群優化算製法(ParticleSwarmOptimization),縮寫為PSO,是近年來發展起來的一種新的進化演算法(EvolutionaryAlgorithm-EA)。PSO演算法屬於進化演算法的一種,和模擬退火演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover)和「變異」(Mutation)操作,它通過追隨當前搜索到的最優值來尋找全局最優。這種演算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性。粒子群演算法是一種並行演算法。
D. 粒子群優化演算法(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('適應度');
E. 粒子群演算法工具箱
您好,看到您的問題將要被新提的問題從問題列表中擠出,問題無人回答內過期後會被容扣分並且懸賞分也將被沒收!所以我給你提幾條建議: 一,您可以選擇在正確的分類下去提問或者到與您問題相關專業網站論壇里去看看,這樣知道你問題答案的人才會多一些,回答的人也會多些。 二,您可以多認識一些知識豐富的網友,和曾經為你解答過問題的網友經常保持聯系,遇到問題時可以直接向這些好友詢問,他們會更加真誠熱心為你尋找答案的。 三,該自己做的事還是必須由自己來做的,有的事還是須由自己的聰明才智來解決的,別人不可能代勞!只有自己做了才是真正屬於自己的,別人只能給你提供指導和建議,最終靠自己。 您可以不採納我的答案,但請你一定採納我的建議哦! 雖然我的答案很可能不能解決你的問題,但一定可以使你更好地使用問問哦~~~
採納哦
F. 粒子群演算法優化支持向量機參數的matlab演算法,小弟畢設做這個課題,非常感謝!
參照書籍 工程優化設計與Matlab實現 李萬祥主編 清華大學出版社2010.2月出版 有源程序 不過裡面的M文件沒有電子版 得自己輸 精通MATLAB最優化計算 這本書里也有
G. 我利用粒子群演算法工具箱求解最優值時陷入了局部最優該如何解決
粒子群陷入局部最優在所難免,建議可以採取加大權重因子的方法,或者一些改進的粒子群演算法會提出對收斂的種群進行干擾,從而產生新的種群,另外可以採用量子粒子群演算法,在局部最優問題上解決的還算可以
H. 粒子群演算法工具箱怎麼用
粒子群演算法的程序搞不到,工具箱下到一個沒有一點注釋之類的,我看不大懂,不會用,能否說說工具箱怎麼用,要粒子群標准演算法的程序。改進演算法的程序更好。很感激。郵箱[email protected]
I. 求一個C++的粒子群優化演算法源碼,可以實現輸入和輸出,還有粒子群的個數和維數有點迷惑,希望高手解答
鳥群演演算法又稱粒子群演演算法。
粒子的個數:用多少粒子來跑粒子群聚演演算法,就表示一次迭代中要找幾組可行解。
粒子的維度:表示輸入資料的特徵,或稱屬性。
*假設我們用粒子群演演算法解這個問題:
[定義問題]把一群人分成會買運動飲料的和會喝白開水的兩個類型。
我們已經知道每個人的四種特質:「平常會不會運動、運動頻繁嗎、嗜甜嗎、性別」,
想知道哪些人喝水、哪些人喝運動飲料;
並且知道四種特質分別影響我們作下判斷的程度。
[資料輸入]一個人就是一筆資料,這四種特質就稱為「特徵」或「屬性」,把每筆資料的特徵(此例中是四個值,分別為0或1)輸入演演算法,最後會得到我們要找的分類結果。
J. C++的粒子群優化演算法運行結果是怎麼樣的
它是每進化一代就差找一次,能否找到結果是看你設置的最大迭代次數和終止條件是否滿足。你可以看pso演算法的兩個公式。
演算法運行和用什麼語言沒關系。
PSO的具體實現步驟如下:
Step1: 參數初始化。
在初始范圍內,隨機初始化一群粒子。即設置種群規模m,粒子的初始位置 x1,x2,...,xm,初始速度v1,,v2…,vm,並將各粒子的個體最優pi設置為初始位置,全局最優值pg設為pi中的最優值。
Step2: 根據速度和位置公式對粒子的速度和位置進行更新。
Step3: 計算每個粒子的適應值。
Step4: 判斷每個粒子的個體最優值。
對每個粒子,將其當前的適應值和上一次的個體最優值pi進行比較,如果當前適應值優於pi,則令pi取當前適應值,否則,個體最優值仍為原來的pi(其中i=1,2,...,m)。
Step5:判斷整個粒子群的全局最優值。
比較當前每個粒子的個體最優值,找出當前迭代中的全局最優值,與歷史全局最優pg比較,如果優於pg,則令pg取當前迭代中的全局最優值,否則,全局最優pg還取原來的值。
Step6: 判斷是否滿足終止條件。如果滿足則轉入Step7;否則,轉Step2,繼續迭代。
Step7: 輸出全局最優解,演算法進行結束。