【布局优化】基于matalb差分进化算法求解电力负荷分配【含Matlab源码 145期】

526 阅读4分钟

一、简介

1.种群初始化设置初始进化代数t=0,在优化问题的可行解空间内按下式,随机产生满足约束条件的NP个个体X构成初始种群,NP的选取一般在维数D的5-10倍之间。
在这里插入图片描述
2.变异操作变异操作是DE算法中的关键步骤,也是其与其他进化算法的主要区别所在。DE算法最基本的变异成分是父代的差分矢量,每个差分矢量对应父代种群中两个不同个体的差向量,差分矢量定义见下式:
在这里插入图片描述
其中,r1,r2,r3∈{1, 2, …,NP}为随机选取的互不相同的正整数,且r1,r2,r3与当前目标个体矢量索引号i不同,由此可见,DE算法的种群规模必须大于4,否则将无法进行变异操作。Vi(t+1)为目标个体矢量Xi(t)对应的变异个体矢量,Xr3(t)称为基向量,F∈[0, 2]为常数,是DE算法的主要控制参数之一,称为变异因子或缩放因子,控制差异矢量的缩放幅度,也即对基向量影响的大小。
在这里插入图片描述
3.交叉操作为进一步增加种群多样性,DE 算法将目标矢量个体Xi(t)与其对应的变异个体Vi(t+1)进行交叉操作,产生试验个体,即目标个体的候选个体Ui(t+1)。为保证目标个体Xi(t)的进化,必须保证试验个体Ui(t+1)中至少有一维分量由变异个体Vi(t+1)贡献,而其他维分量则由交叉概率因子CR决定。由此试验个体中每一维分量uij(t+1)按下式。
在这里插入图片描述
其中,xij(t)表示父代种群中目标个体矢量Xi(t)中的第j维分量,vij(t+1)为变异个体Vi(t+1)中的第j维分量,其中i=1,…,NP,j=1,…,D。rand(j)∈[0,1]为第j维分量对应的随机数。交叉概率因子CR∈[0,1]是DE算法的另一个主要控制参数,它决定了变异个体Vi(t+1)在生成的试验个体Ui(t+1)中所占的比例。 k为第i个个体对应的系数,一般是从序列[1, 2, …,D]中随机选择的一个整数,用来确保候选个体Ui(t+1)中至少有一维分量来自变异个体Vi(t+1)。

4.选择操作(优胜劣汰)
在这里插入图片描述

二、源代码

clc
clear all
close all
%差分进化算法程序基本程序
F0=0.5;%是变异率    
Gm=1000; %最大迭代次数
pd=10500;%系统电力需求总量
Np=100; %种群规模
CR=0.9; %杂交参数
G=1;%初始化代数
DD=40;%所求问题的维数
ge=zeros(1,Np);%各代的最优值
X1=zeros(Np,DD);%各代的最优解
 
xmax=[114 114 120 190  97 140 300 300 300 300 375 375 500 500 500 500 500 500 550 550 550 550 550 550 550 550 150 150 150 97 190 190 190 200 200 200 110 110 110 550];
 
xmin=[36 36 60 80 47 68 110 135 135 130 94 94 125 125 125 125 220 220 242 242 254 254 254 254 254 254 10 10 10 47 60 60 60 90 90 90 25 25 25 242];%解可行域
 
%%%%%%%%%%初始化解
A=xmax-xmin;
 B=repmat(A,Np,1);
 C=repmat(xmin,Np,1);
X0=B.*rand(Np,DD)+C; 
X=X0;%产生初始种群
%%%%%%%%%%变异操作
X1new=zeros(Np,DD);%初始化 留作储存变异后X
X1_new=zeros(Np,DD);%初始化 留作储存交叉后X
X1=zeros(Np,DD);%初始化
value=zeros(1,Np);
while G<=Gm %开始迭代/G=1,G=Tmax
 
 %找出最小值
     for i=1:Np
          value(i)=f(X1(i,:));
     end
    [fmin,nmin]=min(value); %返回最小值 及 对应序号
    if G>1
    if fmin<min(ge)
    ge(G)=fmin; %当代最优值
    X1(G,:)=X1(nmin,:); %最优值对应最优解
    else
         ge(G)=ge(G-1); %当代最优值
          X1(G,:)=X1(G-1,:); %最优值对应最优解
    end
    else
         ge(G)=fmin; %当代最优值
    X1(G,:)=X1(nmin,:); %最优值对应最优解
    end
    G=G+1;
    X=X1;
end
figure
ii=linspace(1,Np,Np);
plot(ge)
[gmin,n]=min(ge); %各代进行比较取得最优值
% bestvalue=gmin
% bestsolution=X1(n,:)
%目标函数的倒数

三、运行结果
在这里插入图片描述

四、备注

版本:2014a