導航:首頁 > 源碼編譯 > matlab微粒群演算法

matlab微粒群演算法

發布時間:2022-08-21 21:00:22

① 粒子群演算法matlab程序無法運行

%% 清空環境
clear
clc
tic
%% 參數初始化
% 粒子群演算法中的兩個參數
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);
pop(j,k) = rand;
end

% 適應度值
fitness(j) = fun(pop(j,:));
end

% 個體最優更新
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

yy(i) = fitnesszbest;

end
toc
%% 結果分析
plot(yy);
title(['適應度曲線 ' '終止代數=' num2str(maxgen)]);
xlabel('進化代數');
ylabel('適應度');
fun函數如下
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;

② 我QQ是534193499,想向你請教matlab的粒子群演算法

粒子群優化演算法(PSO)是一種進化計算技術(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源於對鳥群捕食的行為研究 。 PSO同遺傳演算法類似,是一種基於迭代的優化演算法。系統初始化為一組隨機解,通過迭代搜尋最優值。但是它沒有遺傳演算法用的交叉(crossover)以及變異(mutation),而是粒子在解空間追隨最優的粒子進行搜索。同遺傳演算法比較,PSO的優勢在於簡單容易實現並且沒有許多參數需要調整。目前已廣泛應用於函數優化,神經網路訓練,模糊系統控制以及其他遺傳演算法的應用領域。

③ matlab 粒子群演算法代碼

目前混合整數規劃是一個可研究的問題,這方面的論文也較多,有的是用四捨五入的方法取整,在matlab中用round函數可實現。也有用三角函數進行轉化的,具體情況我不太清楚。另外你的問題有約束條件,在編程時需要加約束處理。

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

可以參考一下這段代碼

%------給定初始化條件----------------------------------------------
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); %隨機初始化速度

⑤ matlab實現粒子群演算法優化LQR法得不到最優解

PSO確實會存在得不到最優解的情況,因為嚴格意義上它不是全局最優的演算法,而且在比較復雜的問題上,得不到最優解的情況很容易發現。

建議你增大種群大小,增加迭代次數。

⑥ matlab用粒子群演算法求解方程組最優解

這關鍵是適應度函數的問題,你可以編寫如下適應度函數:
F=|E(X1y1+X2y2)-0|+|D(X1y1+X2y2)-1|,F值越小越好,||指的是絕對值。

而變數你就選取X1和X2里的每個元素。比如X1=[x1,x2,x3];X2=[x4,x5,x6];你就可以設置PSO的變數為x1到x6這六個值。
答畢,不懂追問。

⑦ 求粒子群演算法MATLAB完整代碼

%% 清空環境
clear
clc
tic
%% 參數初始化
% 粒子群演算法中的兩個參數
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);
pop(j,k) = rand;
end

% 適應度值
fitness(j) = fun(pop(j,:));
end

% 個體最優更新
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

yy(i) = fitnesszbest;

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

fun函數如下
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;

⑧ 使用matlab粒子群演算法求解以下函數,求主程序

閱讀全文

與matlab微粒群演算法相關的資料

熱點內容
windows下編譯python 瀏覽:607
linux藍牙連接 瀏覽:898
安卓qq郵箱格式怎麼寫 瀏覽:431
如何電信租用伺服器嗎 瀏覽:188
編程中計算根號的思維 瀏覽:183
可愛的程序員16集背景音樂 瀏覽:448
軟體代碼內容轉換加密 瀏覽:797
什麼app看電視不要錢的 瀏覽:16
烏班圖怎麼安裝c語言編譯器 瀏覽:280
plc通訊塊編程 瀏覽:923
我的世界伺服器怎麼清地皮 瀏覽:422
ftp伺服器如何批量改名 瀏覽:314
網易我的世界伺服器成員如何傳送 瀏覽:268
公司雲伺服器遠程訪問 瀏覽:633
法哲學pdf 瀏覽:638
清大閱讀app是什麼 瀏覽:447
怎麼用qq瀏覽器整體解壓文件 瀏覽:587
肺組織壓縮15 瀏覽:271
安卓手機為什麼換電話卡沒反應 瀏覽:797
諸子集成pdf 瀏覽:340