|
数学建模--粒子群算法模版 www.madio.net 求解下列非线性规划最优解 min f(x) = x(1)^2 + x(2)^2 + 8;
! n, A, X4 R" d; T2 u% n! I s.t. x(1)^2 - x(2) >= 0; -x(1) - x(2)^2 + 2 = 0; x(1),x(2) >=0 主函数: clc; format long;%------给定初始化条件---------------------------------------
2 S4 t# T3 \3 h7 n' J- w% u8 e3 ]4 Lc1=2; %学习因子1 c2=2; %学习因子2 w=0.7; %惯性权重 MaxDT=1000; %最大迭代次数 D = 1; M=40; %初始化群体个体数目eps=1; %设置精度(在已知最小值时候用) %------初始化种群的个体(可以在这里限定位置和速度的范围)---------- for i=1:M for j=1:D x(i,j)=rand; %随机初始化位置 v(i,j)=rand; %随机初始化速度 endend %------先计算各个粒子的适应度,并初始化p(i)和gbest------------- for i=1:M p(i)=fitness(x(i,:)); y(i,:)=x(i,:);end gbest=x(1,:); %gbest为全局最优 for i=2:M if fitness(x(i,:)) < fitness(gbest) gbest=x(i,:); endend %------进入主要循环,按照公式依次迭代,直到满足精度要求---------- for t=1:MaxDT for i=1:M v(i,:)=w*v(i,:)+c1*rand*(y(i,:)-x(i,:))+c2*rand*(gbest-x(i,:)); x(i,:)=x(i,:)+v(i,:); if fitness(x(i,:))<p(i) p(i)=fitness(x(i,:)); y(i,:)=x(i,:); end if p(i)<fitness(gbest) gbest=y(i,:); end endend 3 O3 J* V4 a3 P; m
8 M. o9 F N+ K/ A
Solution=gbest' Result=fitness(gbest) function objvalue = fitness(X) x2 = X; x1 = 2-X^2; if x1^2-x2>=0 && -x1-x2^2+2==0 && x1>=0 &&x2>=0 objvalue = x1^2+x2^2+8; else objvalue = 1000; end end ! h- @1 k4 \ r8 g' L+ Z
; b2 y8 ^. w2 s" w" O0 M/ ?
2 H. c# r2 Q" k# ^! ~8 F
. B. l7 a" u; ?+ k
|