基于人工智能的电力系统机组组合方法设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档