基于人工智能的电力系统机组组合方法设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于人工智能的电力系统机组组合方法设计
基于matpower7.0进行潮流计算,用遗传算法求解机组组合问题第一个m文件:main.m
%% 2020.5.23 电力系统机组组合
clc;
clear;
close all;
rng('default')
rng(1)
addpath(genpath('matpower7.0'))
%% 载入数据
data.Load=xlsread('数据.xlsx',1);
data.Gen=xlsread('数据.xlsx',2);
data.mpc=case14; %载入网络数据
data.weight=[0.5,0.5];
%%
dim=24*4*2;
lb=0;
ub=1;
fobj=@aimFcn_1;
option.lb=lb;
option.ub=ub;
option.dim=dim;
if length(option.lb)==1
option.lb=ones(1,option.dim)*option.lb;
option.ub=ones(1,option.dim)*option.ub;
end
option.fobj=fobj;
option.showIter=0;
%% 算法参数设置
% 基本参数
option.numAgent=20;
option.maxIteration=50;
% 遗传算法
option.p1_GA=0.8;
option.p2_GA=0.1;
%% 粒子群参数
option.w_pso=0.1;
option.c1_pso=1;
str_legend=[{'GA'},{'PSO'}];
%%
data.type=1;
x=ones(option.numAgent,option.dim);
y=ones(option.numAgent,1);
for i=1:option.numAgent
x(i,:)=rand(size(option.lb)).*(option.ub-option.lb)+option.lb;
y(i)=option.fobj(x(i,:),option,data);
end
[bestY(1,:),bestX(1,:),recording(1)]=GA(x,y,option,data); [bestY(2,:),bestX(2,:),recording(2)]=PSO(x,y,option,data);
%% 画图
figure
hold on
plot(recording(1).bestFit,'--k','LineWidth',1)
plot(recording(2).bestFit,'k','LineWidth',1)
legend(str_legend)
xlabel('迭代次数')
ylabel('适应度值')
figure
hold on
plot(recording(1).bestFit,'k+','LineWidth',1)
plot(recording(1).meanFit,'k','LineWidth',1)
legend('最优','平均')
xlabel('迭代次数')
ylabel('适应度值')
%% 整理结果
[~,result1]=aimFcn_1(bestX(1,:),option,data)
[~,result2]=aimFcn_1(bestX(2,:),option,data)
第二个m文件:aimFcn_1.m
function [fit,result]=aimFcn_1(x,option,data)
%%
switchG=x(1:24*4);
switchG=reshape(switchG,4,24);
switchG=round(switchG);
%% 修正开关
for i=1:4
for t=1:24
if t>1
if switchG(i,t)~=switchG(i,t-1)
if jishu1(i,t-1) switchG(i,t)=1; end else if jishu2(i,t-1) switchG(i,t)=0; end end end end if switchG(i,t)==1 if t==1 jishu1(i,t)=1; jishu2(i,t)=0; else jishu1(i,t)=jishu1(i,t-1)+1; jishu2(i,t)=0; end else if t==1 jishu1(i,t)=0; jishu2(i,t)=1; else jishu1(i,t)=0; jishu2(i,t)=jishu2(i,t-1)+1; end end end end x(1:24*4)=[]; P=x(1:24*4); P=reshape(P,4,24); %% 检查爬坡约束 for i=1:4 for t=1:24 if t>1 if P(i,t)>P(i,t-1) if P(i,t)-P(i,t-1)>data.Gen(8,i) P(i,t)=P(i,t-1)+data.Gen(8,i); end else if P(i,t-1)-P(i,t)>data.Gen(9,i)