clear
clc
close all
% psoSVMcgForClass
%
% by faruto
%Email:patrick.lee@foxmail.com QQ:516667408 http://blog.sina.com.cn/faruto
%last modified 2011.06.08
% 若转载请注明:
% faruto and liyang , LIBSVM-farutoUltimateVersion
% a toolbox with implements for support vector machines based on libsvm, 2011.
% Software available at http://www.matlabsky.com
%
% Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for
% support vector machines, 2001. Software available at
% http://www.csie.ntu.edu.tw/~cjlin/libsvm
%% 参数初始化
pso_option = struct('c1',2.05,'c2',2.05,'maxgen',2500,'sizepop',100, ...
'k',0.6,'wV',1.1,'wP',1.1,'v',5, ...
'popcmax',30,'popcmin',-30,'popgmax',30,'popgmin',-30);
% pso_option = struct('c1',1.5,'c2',1.7,'maxgen',200,'sizepop',20, ...
% 'k',0.6,'wV',1,'wP',1,'v',5, ...
% 'popcmax',100,'popcmin',0.1,'popgmax',10^3,'popgmin',10^(-2));
% c1:初始为1.5,pso参数局部搜索能力
% c2:初始为1.7,pso参数全局搜索能力
% maxgen:初始为200,最大进化数量
% sizepop:初始为20,种群最大数量
% k:初始为0.6(k belongs to [0.1,1.0]),速率和x的关系(V = kX)
% wV:初始为1(wV best belongs to [0.8,1.2]),速率更新公式中速度前面的弹性系数
% wP:初始为1,种群更新公式中速度前面的弹性系数
% v:初始为5,SVM Cross Validation参数
% popcmax:初始为100,SVM 参数c的变化的最大值.
% popcmin:初始为0.1,SVM 参数c的变化的最小值.
% popgmax:初始为1000,SVM 参数g的变化的最大值.
% popgmin:初始为0.01,SVM 参数c的变化的最小值.
Vcmax = pso_option.k*pso_option.popcmax;
Vcmin = -Vcmax ;
Vgmax = pso_option.k*pso_option.popgmax;
Vgmin = -Vgmax ;
eps = 10^(-5);
% train_1 = train(1:100,1);
% train_label1 = train_label(1:100);
% train_2 = train(31:40,1:9);
% train_label2 = train_label(31:40);
%% 产生初始粒子和速度
for i=1:pso_option.sizepop
% 随机产生种群和速度
pop(i,1) = (pso_option.popcmax-pso_option.popcmin)*rand+pso_option.popcmin;
pop(i,2) = (pso_option.popgmax-pso_option.popgmin)*rand+pso_option.popgmin;
V(i,1)=Vcmax*rands(1,1);
V(i,2)=Vgmax*rands(1,1);
% 计算初始适应度
fitness(i)=myfunc_fit1(pop(i,:));
% [traini1,a1,b1]=svmpredict(train_label1,train_1,model);
% [traini2,a2,b2]=svmpredict(train_label2,train_2,model);
% fitness(i)= 0.25*mse(traini1-train_label1) + 0.75*mse(traini2-train_label2);
end
% 找极值和极值点
[global_fitness bestindex]=min(fitness); % 全局极值
local_fitness=fitness; % 个体极值初始化
global_x=pop(bestindex,:); % 全局极值点
local_x=pop; % 个体极值点初始化
% 每一代种群的平均适应度
avgfitness_gen = zeros(1,pso_option.maxgen);
%% 迭代寻优
for i=1:pso_option.maxgen
for j=1:pso_option.sizepop
%速度更新
V(j,:) = pso_option.wV*V(j,:) + pso_option.c1*rand*(local_x(j,:) - pop(j,:)) + pso_option.c2*rand*(global_x - pop(j,:));
if V(j,1) > Vcmax
V(j,1) = Vcmax;
end
if V(j,1) < Vcmin
V(j,1) = Vcmin;
end
if V(j,2) > Vgmax
V(j,2) = Vgmax;
end
if V(j,2) < Vgmin
V(j,2) = Vgmin;
end
%种群更新
pop(j,:)=pop(j,:) + pso_option.wP*V(j,:);
if pop(j,1) > pso_option.popcmax
pop(j,1) = pso_option.popcmax;
end
if pop(j,1) < pso_option.popcmin
pop(j,1) = pso_option.popcmin;
end
if pop(j,2) > pso_option.popgmax
pop(j,2) = pso_option.popgmax;
end
if pop(j,2) < pso_option.popgmin
pop(j,2) = pso_option.popgmin;
end
% 自适应粒子变异
if rand>0.5
k=ceil(2*rand);
if k == 1
pop(j,k) = (pso_option.popcmax-pso_option.popcmin)*rand + pso_option.popcmin;
end
if k == 2
pop(j,k) = (pso_option.popgmax-pso_option.popgmin)*rand + pso_option.popgmin;
end
end
%适应度值
fitness(j)=myfunc_fit1(pop(j,:));
% [trainj1,a1,b1]=svmpredict(train_label1,train_1,model);
% [trainj2,a2,b2]=svmpredict(train_label2,train_2,model);
% fitness(j)= 0.2*mse(trainj1-train_label1) + 0.8*mse(trainj2-train_label2);
%个体最优更新
if fitness(j) < local_fitness(j)
local_x(j,:) = pop(j,:);
local_fitness(j) = fitness(j);
end
if fitness(j) == local_fitness(j) && pop(j,1) < local_x(j,1)
local_x(j,:) = pop(j,:);
local_fitness(j) = fitness(j);
end
%群体最优更新
if fitness(j) < global_fitness
global_x = pop(j,:);
global_fitness = fitness(j);
end
if abs( fitness(j)-global_fitness )<=eps && pop(j,1) < global_x(1)
global_x = pop(j,:);
global_fitness = fitness(j);
end
end
fit_gen(i)=global_fitness;
avgfitness_gen(i) = sum(fitness)/pso_option.sizepop;
end
xlswrite('fit_gen.xlsx',fit_gen);
xlswrite('avgfitness_gen.xlsx',avgfitness_gen);
%% 结果分析
figure;
hold on;
plot(fit_gen,'r-','LineWidth',1.5);
% plot(avgfitness_gen,'o-','LineWidth',1.5);
legend('最佳适应度','平均适应度');
xlabel('进化代数','FontSize',12);
ylabel('适应度','FontSize',12);
grid on;
bestc = global_x(1);
bestg = global_x(2);
bestCVmse = fit_gen(pso_option.maxgen);
line1 = '适应度曲线MSE[PSOmethod]';
line2 = ['(参数c1=',num2str(pso_option.c1), ...
',c2=',num2str(pso_option.c2),',终止代数=', ...
num2str(pso_option.maxgen),',种群数量pop=', ...
num2str(pso_option.sizepop),')'];
line3 = ['Best c=',num2str(bestc),' g=',num2str(bestg), ...
' CVmse=',num2str(bestCVmse),];
title({line1;line2;line3},'FontSize',12);
没有合适的资源?快使用搜索试试~ 我知道了~
7利用智能算法对微网中的分布式电源进行最优调度实现配电网稳定运行.zip
共14个文件
m:9个
xlsx:4个
zip:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 84 浏览量
2024-02-01
14:29:15
上传
评论
收藏 1.83MB ZIP 举报
温馨提示
7利用智能算法对微网中的分布式电源进行最优调度实现配电网稳定运行.zip
资源推荐
资源详情
资源评论
收起资源包目录
7利用智能算法对微网中的分布式电源进行最优调度实现配电网稳定运行.zip (14个子文件)
7利用智能算法对微网中的分布式电源进行最优调度实现配电网稳定运行
PSO_0810
PSO_0804_1.m 5KB
PSO_prog_test_2D.m 6KB
光伏气温.xlsx 1.2MB
rosen.m 282B
myfunc_fit3.m 499B
avgfitness_gen.xlsx 168KB
myfunc_fit1.m 246B
fit_gen.xlsx 58KB
风速.xlsx 35KB
PSO_0804.m 4KB
PSO_prog_test.m 4KB
PSO_FUNC.m 4KB
myfunc_fit2.m 1KB
利用智能算法对微网中的分布式电源进行最优调度实现配电网稳定运行.zip 941KB
共 14 条
- 1
资源评论
skyJ
- 粉丝: 2509
- 资源: 2038
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功