檔案為rar格式修改格式后可解壓
function main()
clc;clear all;close all;
tic; %程式運行計時
global particlesize narvs zb lb ub glb gub weigth
data();
MaxNum=100; %粒子最大迭代次數
dim=9; %目標函式的自變數個數
particlesize=30; %粒子群規模
c1=2; %每個粒子的個體學習因子,也稱為加速常數
c2=2; %每個粒子的社會學習因子,也稱為加速常數
w=0.6; %慣性因子
vmax=1; %粒子的最大飛翔速度
x=zeros(particlesize,dim); %粒子所在的位置
ve=1*rand(particlesize,dim); %粒子的飛翔速度 velocity
for i=1:particlesize
x(i,:)=initial(); %初始化種群
end
for i=1:particlesize
f(i)=goalfunc(x(i,:)); %求目標函式
end
personalbest_x=x;
personalbest_faval=f;
[globalbest_faval i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
k=1;
while k<=MaxNum
for i=1:particlesize
if constraints(x(i,:))
f(i)=goalfunc(x(i,:));
else
f(i)=100;
end
if f(i)<personalbest_faval(i) %判斷當前位置是否是歷史上最佳位置
personalbest_faval(i)=f(i);
personalbest_x(i,:)=x(i,:);
end
end
[globalbest_faval i]=min(personalbest_faval);
globalbest_x=personalbest_x(i,:);
trace(k,:)=globalbest_faval;
for i=1:particlesize %更新粒子群里每個個體的最新位置
ve(i,:)=w*ve(i,:)+c1*rand*(personalbest_x(i,:)-x(i,:))+c2*rand*(globalbest_x-x(i,:));
for j=1:narvs %判斷粒子的飛翔速度是否超過了最大飛翔速度
if ve(i,j)>vmax;
ve(i,j)=vmax;
elseif ve(i,j)<-vmax;
ve(i,j)=-vmax;
end
end
x(i,:)=x(i,:)+ve(i,:);
end
k=k+1
end
globalbest_x %全域最優解
gg=jinixishu(globalbest_x) %優化后的基尼系數值
globalbest_faval %優化后的目標函式值
plot(trace) %
toc;
帶有下標的賦值維度不匹配。
出錯 psomain (line 19)
x(i,:)=initial(); %初始化種群
uj5u.com熱心網友回復:
聯系QQ335258089轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256060.html
