目录
1 主要内容
目标函数
程序模型
2 部分代码
3 程序结果
1 主要内容
该程序参考《热电联产在区域综合能源系统中的定容选址研究》,主要针对电热综合能源系统进行优化,确定热电联产机组的位置和容量,程序以33节点电网和17节点热网为例(具体见程序模型),采用5个备选位置作为优化基础,热网采用牛拉法潮流,电网潮流采用matpower工具箱(【发消息】->【免费软件】提供免费下载及相应教程),优化算法采用遗传算法,程序采用matlab编写,注释清晰,方便学习!
-
目标函数
该程序以网损为目标函数,通过遗传算法进行优化求解。
-
程序模型
2 部分代码
clc;clear all; T=60;%仿真代数 遗传算法 M=40;% 群体规模 pm=0.01;pc=0.6;%交叉变异概率 pcmax=0.9;pcmin=0.6;pmmax=0.1;pmmin=0.01; xmax=[5 130];%选址位置、容量kw最大值 xmin=[1 10];%选址位置、容量kw最小值 Long=5;%单个参数字串长度,总编码长度3L bestv=-inf; bval=round(rand(M,2*Long));%初始种群 round 四舍五入取整函数 编码后的初始种群 %%%%%%%%%%%%%bestv=-inf%最优适应度初值%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% for ii=1:T f_ave=0; % 解码,计算适应度 for a=1:M y=zeros(1,2); for gn=1:2 for j=1:1:Long y(gn)=y(gn)+bval(a,gn*Long-j+1)*2^(j-1) ; %%%解码 二进制转换为十进制 end xd(gn)=round((xmax(gn)-xmin(gn))*y(gn)/(2^Long-1)+xmin(gn));%%%%%%%%解码换算为约束条件范围内的数 end xx(a,:)=xd; % %%% %%修正网络参数进行潮流计算% %%% %%% %%% obj(a)=usi_pf(xd); %目标函数 end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%种群M%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% func=1./obj;%目标函数转换为适应度函数 fmax=max(func); f_ave=func/M; p=func./sum(func); q=cumsum(p);%累加 分布采样区间 以便进行选择 [fmax,indmax]=max(func);%求当代最佳个体 indmax 当前最佳个体代数 if fmax>=bestv bestv=fmax;%到目前为止最优适应度值 bvalxx=bval(indmax,:);%到目前为止最佳位串 optxx=xx(indmax,:);%到目前为止最优参数 end Bfit1(ii)=bestv ;% 存储每代的最优适应度 %%%%遗传操作开始 %轮盘赌选择 for i=1:(M-1) r=rand; tmp=find(r<=q);%%找到适应度大于随机r的个体 newbval(i,:)=bval(tmp(1),:); % %保存第一个这样的个体因为r就落到第一个这样的数的区间内,然后继续选择 end newbval(M,:)=bvalxx;%最优保留 bval=newbval; %两点交叉 for i=1:2:(M-1) %隔一个交叉一对 funmax=max(func(i),func(i+1)); if funmaxelse pc=pcmax-(pcmax-pcmin)*(func-f_ave)/(bestv-f_ave); end cc=rand; if cc%%pc交叉率