首页 > 其他分享 >基于二进制编码遗传优化的混合发电系统配置优化问题求解

基于二进制编码遗传优化的混合发电系统配置优化问题求解

时间:2023-02-20 23:34:42浏览次数:58  
标签:end TempE 二进制 优化 y1 fi 系统配置 CodeL Size

up目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

首先,传统的遗传优化算法,其标准的优化过程如下所示:

步骤一:根据所需要处理的问题特点,选择问题解对应的编码,并给出一个初始群体,该初始群体包括N各染色体。

步骤二:计算遗传算法中群体的每一个染色体的适应函数值。

步骤三:当遗传算法的某一次迭代结果符合停止迭代条件,则算法停止迭代,如果不满足停止迭代条件,则以一个随机的概率分布值,从旧的种群中随机的选择N个染色体组成一个新的种群进行下一次的迭代。

步骤四:通过交叉得到N个染色体的交叉集合。

步骤五:设置一个较小的变异概率,使染色体中的某些基因进行变异,获得新的种群,并重复步骤二的计算过程。

 

 

二、核心程序

%***************遗传算法二进制编码求解混合发电系统配置优化问题
function [Apv,Aw,Cp,CT,LPSP,Pdump,Pdeficit,SOC,Iteration,BestJ,Bfi]=GASolveHybirdSystemSize(WindDataPV,SolarDataPVR,LoadDataPV,Apv_max,Aw_max,Cb_max)

%**************遗传参数设置
Size=100;%种群大小
G=100;%迭代代数
CodeL=10;%编码长度

%**************问题解约束空间
u1max=Apv_max;
u1min=0;
u2max=Aw_max;
u2min=0;
u3max=Cb_max;
u3min=0;

%**************初始化编码
E=round(rand(Size,3*CodeL));

%**************GA主程序
for k=1:1:G
Iteration(k)=k;

for s=1:1:Size
m=E(s,:);
y1=0;y2=0;y3=0;

%*******************解码
m1=m(1:1:CodeL);
for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1);
end
x1=(u1max-u1min)*y1/1023+u1min;
m2=m(CodeL+1:1:2*CodeL);
for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1);
end
x2=(u2max-u2min)*y2/1023+u2min;

m3=m(2*CodeL+1:1:3*CodeL);
for i=1:1:CodeL
y3=y3+m3(i)*2^(i-1);
end
x3=(u3max-u3min)*y3/1023+u3min;

%******************适应度函数
[F(s),~,~,~,~,~]=GAFitnessFunction(x1,x2,x3,WindDataPV,SolarDataPVR,LoadDataPV);

end

Ji=1./F;
%*****************第一步:评估适应度
BestJ(k)=min(Ji);
fi=F; %适应度函数
[Oderfi,Indexfi]=sort(fi); %按照适应度大小从小到大排序
Bestfi=Oderfi(Size); %选取最佳适应度
BestS=E(Indexfi(Size),:); %最佳基因序列
Bfi(k)=Bestfi; %记录最佳适应度值

%*****************第二步:选择和复制操作
fi_sum=sum(fi);
fi_Size=(Oderfi/fi_sum)*Size;
fi_S=floor(fi_Size); %选择适应度较好的基因个体

kk=1;
for i=1:1:Size
for j=1:1:fi_S(i) %选择和复制操作
TempE(kk,:)=E(Indexfi(i),:);
kk=kk+1;
end
end

%*****************第三步:交叉操作
pc=0.60;%交叉概率
n=ceil(30*rand);
for i=1:2:(Size-1)
temp=rand;
if pc>temp %交叉条件
for j=n:1:30
TempE(i,j)=E(i+1,j);
TempE(i+1,j)=E(i,j);
end
end
end
TempE(Size,:)=BestS;
E=TempE;

%*****************第三步:变异操作
pm=0.1; %变异概率
for i=1:1:Size
for j=1:1:2*CodeL
temp=rand;
if pm>temp %变异条件
if TempE(i,j)==0
TempE(i,j)=1;
else
TempE(i,j)=0;
end
end
end
end

%保证第30个基因个体是最佳基因序列
TempE(Size,:)=BestS;
E=TempE;
end

%**********************解码最佳基因序列对应的各个参数优化值
y1=0;y2=0;y3=0;
m1=BestS(1:1:CodeL);
for i=1:1:CodeL
y1=y1+m1(i)*2^(i-1);
end
m2=BestS(CodeL+1:1:2*CodeL);
for i=1:1:CodeL
y2=y2+m2(i)*2^(i-1);
end
m3=BestS(2*CodeL+1:1:3*CodeL);
for i=1:1:CodeL
y3=y3+m3(i)*2^(i-1);
end
Apv=(u1max-u1min)*y1/1023+u1min
Aw=(u2max-u2min)*y2/1023+u2min;
Cp=(u3max-u3min)*y3/1023+u3min;

%**********************混合发电系统最佳配置的性能参数输出
[~,LPSP,Pdump,Pdeficit,SOC,CT]=GAFitnessFunction(x1,x2,x3,WindDataPV,SolarDataPVR,LoadDataPV);
up103

三、测试结果

 

 

 

 

 

 

 

 

 

 

 

 

 

 

标签:end,TempE,二进制,优化,y1,fi,系统配置,CodeL,Size
From: https://www.cnblogs.com/matlabfpga/p/17139406.html

相关文章

  • K8S二进制安装
    K8S二进制安装192.168.111.20master01192.168.111.21master02192.168.111.22node01192.168.111.23node02192.168.111.20节点1192.168.111.22节点2192.168.111.23节点31......
  • m基于PSO粒子群优化的柔性制造系统AGV调度模型matlab仿真
    1.算法描述在PSO中,群中的每个粒子表示为向量。在投资组合优化的背景下,这是一个权重向量,表示每个资产的分配资本。矢量转换为多维搜索空间中的位置。每个粒子也会记住它最好......
  • m基于GA遗传优化的AGV栅格地图路径规划和避障matlab仿真
    1.算法描述        遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些......
  • SQL优化1
    1、基本写法优化;1、少使用select*,尽量使用具体字段;2、对于条件来说等号之类两边的字段类型要一致,字符串不加单引号索引会失效;3、尽量少使用OrderBy排序,对于需要多个......
  • K8S多节点二进制部署
    一、多Maser集群架构的了解Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效......
  • 编写高效的Java代码:常用的优化技巧【一】
    1.代码结构优化代码结构优化是提高Java程序性能的一种重要方式。代码结构的优化包括优化算法、数据结构和设计模式等。以下是一些优化技巧。1.1优化算法和数据结构优化算......
  • k8s二进制高可用集群部署
    基于k8sV1.261.操作系统初始化2.etcd集群部署3.服务端部署4.节点部署 ......
  • 联邦学习论文阅读笔记10 面向联邦学习激励优化的演化博弈模型_孙跃杰
    面对的问题:参与者虚报成本导致激励分配不匹配提出了:质量评估方法、基于信誉度的激励分配方法、计算了演化博弈模型达到均衡的解。本文模型: 质量评估:不是参与者绝对......
  • k8s服务端二进制部署
    二进制下载地址压缩包下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG注:打开链接你会发现里面有很多包,下载一个Server包就够了,里面包含了S......
  • 位运算与二进制表示集合
    位运算与二进制表示集合位运算运算符运算运算符数学符号表示解释与&&、\(and\)只有两个对应位都为\(1\)时才为\(1\)或\(|\)\(|\)、\(or\)只要两......