【优化选址】基于模拟退火结合粒子群算法求解分布式电源定容选址问题matlab源码
1 算法介绍
1.1 模拟退火算法
1.2 粒子群算法
模型介绍见这里。
1.3 含有分布式电源的配电网结构
2 部分代码
%% 模拟退火粒子群算法分布式电源定容选址优化规划
tic %测试时间
format short ;
clc;
clear all;
%% 算法初始参数设置
pop=90; %种群粒子数目
gen=200; %最大迭代次数M
M=4; %目标函数个数
V=68; %控制变量个数
Xmax=10; %控制变量约束最大值
Xmin=0; %控制变量约束最小值
g_best=zeros(gen,V); %全局最优存放位置
pop_num=40; %保存的最优前沿
lamda=0.5; %退火常数
%% 初始化种群个体
[pop_x,pop_v]=initial(pop,V,M);
%% 模拟退火粒子群算法
for t=1:gen %进入主要循环,gen迭代次数
clear Gbest_value
clear R
%% 1.寻找全局最优
[pbest,pbest_value,k]=gbest_fitness(pop_x,V,M,pop);
g_best(t,:)=pbest;
g_best_value(t,:)=pbest_value;
%% 1.对各目标函数值进行排序
for j = 1 : M
[Gbest_value(:,j),R(:,j)]=sort(g_best_value(:,j));
end
%% 2.根据个体排序计算其适应度
for i = 1 : t
for j = 1 : M
if R(i,j)>1
ex(i,j)=(pop-R(i,j))^2;
else
ex(i,j)=k*pop;
end
end
end
ex=sum(ex');
%% 3.得到适应度最好的全局最优解
[Fit,index]=sort(ex');
%[y_val,index]=min(g_best_value);
clear Fit;
gbest=g_best(index,:);
%% 2.速度更新
change_v=update_v(t,gen,pop_v,pop_x(:,1:68),g_best,V,pop,pbest);
pop_v=change_v;
%% 2.更新位置
change_x=pop_x(:,1:V)+change_v(:,1:V);
%% 控制变量约束
for i = 1 : pop
for j = 1 : V
if change_x(i,j)>Xmax
change_x(i,j)=unidrnd(10);
else if change_x(i,j)<Xmin
change_x(i,j)=unidrnd(10);
end
end
end
end
%% 粒子群速度限制约束
%% 求出各个体的目标函数值
for i=1:pop
change_x(i,V+1:V+M)=mokuaihanshu(pop_x(i,:),pop,M,V);%求出各个体的目标函数值
end
%% 形成混合种群
[y1,x1]=size(pop_x);
[y2,x2]=size(change_x);%注意:此时x1不等于x2
migle_x(1:y1,:)=pop_x;
migle_x(y1+1:y1+y2,1:x2)=change_x;
%% 进行非支配排序
migle_x = non_domination_sort_mod(migle_x, M, V);
%% 选择下一代种群
pop_x = replace_chromosome(migle_x, M, V, pop);
disp(t);
end
Ploss=pop_x(:,V+1)./(10^9);
Cost=pop_x(:,V+2)./(10^6);
if M==3
save solution1.txt pop_x -ASCII %以二进制码保存输出结果
[minploss,index]=min(pop_x(:,V+1));
L1=(pop_x(index,V+2));
[minCost,indey]=min(pop_x(:,V+2));
ploss=pop_x(indey,V+1);
plot(pop_x(:,V + 1),pop_x(:,V + 2),'o');
xlabel('系统网损');ylabel('总投资与运行成本');
title(['NSGAminploss= ',num2str(minploss),' L1= ',num2str(L1),' ploss=',num2str(ploss),'minL=',num2str(minL)]);
elseif M ==4
save solution2.txt pop_x -ASCII %以二进制码保存输出结果
plot3(Ploss,Cost,pop_x(:,V + 3),'.');
xlabel('网损');ylabel('总投资与运行成本');zlabel('负荷节点电压偏差');
%title(['网损最优',num2str(min(pop_x(:,V + 1))),'成本最优',num2str(min(pop_x(:,V + 2))),'偏差最小',num2str(min(pop_x(:,V + 3)))]);
grid
end
3 仿真结果
4 参考文献
[1]王艳敏. 基于可靠性的供应链设施选址问题的优化模型[J]. 科学技术与工程, 2012, 12(011):2517-2520.