導航:首頁 > 編程語言 > 免疫粒子群優化演算法python

免疫粒子群優化演算法python

發布時間:2022-04-18 15:07:55

❶ 如何用粒子群優化(PSO)演算法實現多目標優化

粒子群演算法,也稱粒子群優化演算法(ParticleSwarmOptimization),縮寫為PSO,是近年來發展起來的一種新的進化演算法(EvolutionaryAlgorithm-EA)。PSO演算法屬於進化演算法的一種,和模擬退火演算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳演算法規則更為簡單,它沒有遺傳演算法的「交叉」(Crossover)和「變異」(Mutation)操作,它通過追隨當前搜索到的最優值來尋找全局最優。這種演算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性。粒子群演算法是一種並行演算法。

❷ 學習多目標優化需要掌握哪些python知識

多目標優化

目標優化問題一般地就是指通過一定的優化演算法獲得目標函數的最優化解。當優化的目標函數為一個時稱之為單目標優化(Single-
objective Optimization Problem,
SOP)。當優化的目標函數有兩個或兩個以上時稱為多目標優化(Multi-objective Optimization Problem,
MOP)。不同於單目標優化的解為有限解,多目標優化的解通常是一組均衡解。

多目標優化演算法歸結起來有傳統優化演算法和智能優化演算法兩大類。
1. 傳統優化演算法包括加權法、約束法和線性規劃法等,實質上就是將多目標函數轉化為單目標函數,通過採用單目標優化的方法達到對多目標函數的求解。
2. 智能優化演算法包括進化演算法(Evolutionary Algorithm, 簡稱EA)、粒子群演算法(Particle Swarm Optimization, PSO)等。

Pareto最優解:

若x*∈C*,且在C中不存在比x更優越的解x,則稱x*是多目標最優化模型式的Pareto最優解,又稱為有效解。
一般來說,多目標優化問題並不存在一個最優解,所有可能的解都稱為非劣解,也稱為Pareto解。傳統優化技術一般每次能得到Pareo解集中的一個,而
用智能演算法來求解,可以得到更多的Pareto解,這些解構成了一個最優解集,稱為Pareto最優解。它是由那些任一個目標函數值的提高都必須以犧牲其
他目標函數值為代價的解組成的集合,稱為Pareto最優域,簡稱Pareto集。

Pareto有效(最優)解非劣解集是指由這樣一些解組成的集合:與集合之外的任何解相比它們至少有一個目標函數比集合之外的解好。

求解多目標優化問題最有名的就是NSGA-II了,是多目標遺傳演算法,但其對解的選擇過程可以用在其他優化演算法上,例如粒子群,蜂群等等。這里簡單介紹一下NSGA-II的選擇演算法。主要包含三個部分:
1. 快速非支配排序
要先講一下支配的概念,對於解X1和X2,如果X1對應的所有目標函數都不比X2大(最小問題),且存在一個目標值比X2小,則X2被X1支配。
快速非支配排序是一個循環分級過程:首先找出群體中的非支配解集,記為第一非支配層,irank=1(irank是個體i的非支配值),將其從群體中除去,繼續尋找群體中的非支配解集,然後irank=2。
2. 個體擁擠距離
為了使計算結果在目標空間比較均勻的分布,維持種群多樣性,對每個個體計算擁擠距離,選擇擁擠距離大的個體,擁擠距離的定義為:
L[i]d=L[i]d+(L[i+1]m−L[i−1]m)/(fmaxm−fminm)
L[i+1]m是第i+1個個體的第m目標函數值,fmaxm 和 fminm是集合中第m個目標函數的最大和最小值。
3. 精英策略選擇
精英策略就是保留父代中的優良個體直接進入子代,防止獲得的Pareto最優解丟失。將第t次產生的子代種群和父代種群合並,然後對合並後的新種群進行非支配排序,然後按照非支配順序添加到規模為N的種群中作為新的父代。

❸ 粒子群優化演算法優化pid控制參數程序

這個關鍵是建立評價指標,比如採用超調量、響應時間,或者ITAE等指標最大或者最小,這樣就可以通過粒子群演算法來不斷修正PID參數,從而優化參數了。
一般來講這樣的優化只能離線,不能在線

❹ 多目標協同演算法用什麼軟體

python還是python吧,
本身開源又有很多開源可用包,大勢所趨,熟悉python還可以完成其他開發.Matlab閉源還有Licence問題,加上美麗國的德性,說不定哪天就不能用了,那matlab技能就被徹底封印了.
(4)免疫粒子群優化演算法python擴展閱讀:
主要內容包括:多目標進化演算法、多目標粒子群演算法、其他多目標智能優化演算法、人工神經網路優化、交通與物流系統優化、多目標生產調度和電力系統優化及其他。

❺ Metropolis法和Metropolis-Hastings法有什麼區別嗎各自的優點是什麼呢感謝大神

原文鏈接:http://tecdat.cn/?p=19664

MCMC是從復雜概率模型中采樣的通用技術。

❻ 粒子群優化演算法的PSO

這個屬於多目標優化問題,你可以把參考價格、外觀樣式、網路類型、屏幕參數和攝像頭像素等分別給予不同的權重值,作為一個目標函數,目標函數值就是綜合評價得分,然後用微粒群演算法求解。

❼ 求基於粒子群優化K均值演算法matlab代碼

%
%Ajusticeparameterw=wmax-t*(wmax-wmin)/M
clc;
clearall;
formatlong;
tic
%------初始化------------求最小值
%數據,已經歸一化
sam=[1.00001.00000.74760.62670.16960.07100.25320.8110
0.31880.36560.87070.77040.55590.51530.92130.7017
0.55480.74231.00000.59101.00001.00000.89761.0000
0.78000.71810.68751.00000.21150.02140.15730.8938
0.26800.32380.90360.82100.58740.38400.70370.5142
0.69280.66300.73680.87870.18180.07860.22950.3820
0.42560.49780.84290.91610.71330.31301.00000.7809];
N=50;%粒子數
c1=1.2;%學習因子1
c2=1.2;%學習因子2
wmax=0.9;%最大加權系數
wmin=0.4;%最小加權系數
M=200;%最大迭代數
K=4;%類別數,根據需要修改
[SD]=size(sam);%樣本數和特徵維數
v=rand(N,K*D);%初始速度

%初始化分類矩陣
fori=1:N
clmat(i,:)=randperm(S);%隨機取整數50*7
clmat(i,clmat(i,:)>K)=ceil(rand(1,sum(clmat(i,:)>K))*K);
end
%clmat(clmat>K)=fix(rand*K+1);%取整函數:fix(x),floor(x):,ceil(x),round(x)
fitt=inf*ones(1,N);%初始化個體最優適應度
fg=inf;%初始化群體最優適應度
fljg=clmat(1,:);%當前最優分類
x=zeros(N,K*D);%初始化粒子群位置
y=x;%初始化個體最優解
pg=x(1,:);%初始化群體最優解
cen=zeros(K,D);%類別中心定維
fitt2=fitt;%粒子適應度定維

%%
%------循環優化開始------------
fort=1:M
fori=1:N
ww=zeros(S,K);
forii=1:S
ww(ii,clmat(i,ii))=1;%加權矩陣,元素非0即1
end
ccc=[];tmp=0;
forj=1:K
sumcs=sum(ww(:,j)*ones(1,D).*sam);
countcs=sum(ww(:,j));
ifcountcs==0
cen(j,:)=zeros(1,D);
else
cen(j,:)=sumcs/countcs;%求類別中心
end
ccc=[ccc,cen(j,:)];%串聯聚類中心
aa=find(ww(:,j)==1);
iflength(aa)~=0
fork=1:length(aa)
tmp=tmp+(sum((sam(aa(k),:)-cen(j,:)).^2));
end
end
end
x(i,:)=ccc;
fitt2(i)=tmp;%Fitnessvalue
end
%更新群體和個體最優解
fori=1:N
iffitt2(i)<fitt(i)
fitt(i)=fitt2(i);
y(i,:)=x(i,:);%個體最優
iffitt2(i)<fg
pg=x(i,:);%群體最優
fg=fitt2(i);%群體最優適應度
fljg=clmat(i,:);%當前最優聚類
end
end
end
bfit(t)=fg;%最優適應度記錄
w=wmax-t*(wmax-wmin)/M;%更新權重,線性遞減權重法的粒子群演算法
fori=1:N
%更新粒子速度和位置
v(i,:)=w*v(i,:)+c1*rand(1,K*D).*(y(i,:)-x(i,:))+c2*rand(1,K*D).*(pg-x(i,:));
x(i,:)=x(i,:)+v(i,:);
fork=1:K
cen(k,:)=x((k-1)*D+1:k*D);%拆分粒子位置,獲得K個中心
end
%重新歸類
forj=1:S
tmp1=zeros(1,K);
fork=1:K
tmp1(k)=sum((sam(j,:)-cen(k,:)).^2);%每個樣本關於各類的距離
end
[tmp2clmat(i,j)]=min(tmp1);%最近距離歸類
end
end
end
%------循環結束------------
%%
t%迭代次數
fljg%最優聚類輸出
fg%最優適應度輸出
figure(1)
plot(bfit);%繪制最優適應度軌跡
%figure(2)
%plot(x(1,:))
cen%聚類中心
toc

❽ python有沒有粒子群演算法包

scikit-opt調研過很多粒子群演算法包,這個是比較好用的了

定義你的目標函數

defdemo_func(x):
x1,x2,x3=x
returnx1**2+(x2-0.05)**2+x3**2

調用演算法進行優化求解

pso=PSO(func=demo_func,dim=3)
fitness=pso.fit()

❾ 哪位大神指點一下粒子群優化演算法(PSO)的輸入和輸入分別是什麼

PSO的介面樓上已經說了,我跟你說下關於你的圖像聚類的問題怎麼選適應度函數,聚類的目的一般是選出C個質心,採用近鄰原則通過C個質心對樣本點進行聚類。
所以關於你的問題,首先要確定你想聚類成幾類,假設為C類
初始化每個粒子的位置向量為C個質心的位置(假設你的樣本維數D,初始化每一個粒子為一個C*D的向量)
適應度函數:計算每個樣本點到C個質心的位置,選擇最短的距離,假設d,計算所有樣本的距離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('適應度');

閱讀全文

與免疫粒子群優化演算法python相關的資料

熱點內容
怎麼刪除一個app下載任務 瀏覽:713
python執行bat命令 瀏覽:471
什麼吉他調音器app最好 瀏覽:33
php程序員招聘試題 瀏覽:14
程序員升職記第九關最優解 瀏覽:317
三星安卓11怎麼訪問data文件夾 瀏覽:817
華三伺服器怎麼設置開機自啟 瀏覽:711
釘郵登錄伺服器地址 瀏覽:644
起源編譯器適配第二款應用 瀏覽:433
cad弄斷線條命令 瀏覽:463
怎麼恢復手機app的安裝包 瀏覽:300
idea重啟項目不編譯 瀏覽:495
程序員那麼可愛演員表陸漓媽媽 瀏覽:127
linuxgadget驅動 瀏覽:594
華三調用acl的命令 瀏覽:9
資金流pdf 瀏覽:931
金融結演算法補充條款 瀏覽:291
什麼叫伺服器怎麼連接 瀏覽:521
空調壓縮機有製冷但室內不是很冷 瀏覽:839
如何查解壓成功 瀏覽:652