% // 主函数程序:
clc;
clear;
close all
%% 基础参数
%风电出力
Pwind=[24.6,22.1,17.5,13.5,10.1,8.5,13.9,23.5,25.8,29.4,35.1,38.9,36.9,32.5,30.3,25,23.2,25.1,27.8,32.3,35.3,35.5,25,10.8,];
%原电网24小时负荷
Pload=[55,50,53.1,49.4,54,49.4,45.6,34.8,30.1,25.2,21.8,10,10.9,11.2,6.3,5.9,5,5.6,18.6,35,36.2,37.1,40.2,25.3];
N = 100; %种群内个体数目
N_chrom = 25; %染色体节点数,也就是每个个体有多少条染色体,其实说白了就是看适应函数里有几个自变量。
iter = 1000; %迭代次数,也就是一共有多少代
mut = 0.2; %突变概率
acr = 0.2; %交叉概率
best = 1;
%每个节点的值的区间
for i=1:24
chrom_range(1,(i+1)) = 0;
chrom_range(2,(i+1)) = 0;
if (Pload(i)-Pwind(i))>=0
chrom_range(2,(i+1)) =(Pload(i)-Pwind(i));
else
chrom_range(1,(i+1)) = (Pload(i)-Pwind(i));
end
end
chrom_range(1,1) = 100;
chrom_range(1,2:25) = -35;
chrom_range(2,1) = 80000;
chrom_range(2,2:25) = 50;
chrom = zeros(N, N_chrom);%存放染色体的矩阵
fitness = zeros(N, 1);%存放染色体的适应度
fitness_ave = zeros(1, iter);%存放每一代的平均适应度
fitness_best = zeros(1, iter);%存放每一代的最优适应度
chrom_best = zeros(1, N_chrom+1);%存放当前代的最优染色体与适应度
%% 初始化,这只是用于生成第一代个体,并计算其适应度函数
chrom = Initialize(N, N_chrom, chrom_range); %初始化染色体
fitness = CalFitness(chrom, N, N_chrom); %计算适应度
chrom_best = FindBest(chrom, fitness, N_chrom); %寻找最优染色体
fitness_best(1) = chrom_best(end); %将当前最优存入矩阵当中
fitness_ave(1) = CalAveFitness(fitness); %将当前平均适应度存入矩阵当中
%% 用于生成以下其余各代,一共迭代多少步就一共有多少代
for t = 2:iter
chrom = MutChrom(chrom, mut, N, N_chrom, chrom_range, t, iter); %变异,这个进行基因突变处理的函数原理没有懂!!!
chrom = AcrChrom(chrom, acr, N, N_chrom); %交叉
fitness = CalFitness(chrom, N, N_chrom); %计算适应度
chrom_best_temp = FindBest(chrom, fitness, N_chrom); %寻找最优染色体
if chrom_best_temp(end)>chrom_best(end) %替换掉当前储存的最优
chrom_best = chrom_best_temp;
end
%%替换掉最劣
[chrom, fitness] = ReplaceWorse(chrom, chrom_best, fitness);
fitness_best(t) = chrom_best(end); %将当前最优存入矩阵当中
fitness_ave(t) = CalAveFitness(fitness); %将当前平均适应度存入矩阵当中
end
%% 作图
figure(1)
plot( 1:iter, fitness_best, 'b')
grid on
legend( '迭代优化结果')
%e=PlotModel(chrom_best);
figure(2)
t=1:24;
Pwind=[24.6,22.1,17.5,13.5,10.1,8.5,13.9,23.5,25.8,29.4,35.1,38.9,36.9,32.5,30.3,25,23.2,25.1,27.8,32.3,35.3,35.5,25,10.8,];
%原电网24小时负荷
Pload=[55,50,53.1,49.4,54,49.4,45.6,34.8,30.1,25.2,21.8,10,10.9,11.2,6.3,5.9,5,5.6,18.6,35,36.2,37.1,40.2,25.3];
plot(t,Pwind,'-')
hold on
plot(t,Pload,'-o')
hold on
plot(t,chrom_best(2:25),'-.')
legend( '风电出力','电网负荷','蓄电池出力')
%% 输出结果
disp(['最优染色体为', num2str(chrom_best(1:end-1))])
disp(['最优适应度为', num2str(chrom_best(end))])
遗传算法求解综合能源容量配置优化
版权申诉
5星 · 超过95%的资源 46 浏览量
2022-04-28
22:44:29
上传
评论 6
收藏 11KB ZIP 举报
御风侠
- 粉丝: 12
- 资源: 37
最新资源
- 计算机二级 开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- Python 编程示例开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- Java学生管理系统数列开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- dysbb_121970.apk
- 斐波那契数列开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- C语言系统化精讲 重塑编程思想 打造坚实的开发基础 – 带源码课件
- 端午节龙舟赛开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
- 毕业设计:Python基于知识图谱的医疗问答系统(源码 + 数据库 + 使用文档).zip
- 202312(第15届)蓝桥杯Scratch图形化编程青少组(选拔赛-初/中级)第2题真题-转动的风车素材和程序
- 投票系统开发案列优质学习资料资源工具与案列应用场景开发文档教程资料.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈