【多目标优化求解】基于matlab遗传算法求解多目标配电网重构模型【含Matlab源码 970期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、简介

1 故障信息的数学表示
在上图中K表示断路器,每一个断路器上均有一个FTU装置,可以反馈断路器开关是否过流,用表示上传的故障信息,反映的是各分段开关处是否流过故障电流有故障电流为1,否则为0)。即:
在这里插入图片描述
因为FTU上传的信息可分为有故障信息及无故障信息两类,对于分段区间来讲也只能是有故障及无故障两种情况,所以我们可以用二进制编码规则对配电网故障定位问题进行数学建模。以上图所示辐射状配电网为例,系统拥有12个分段开关,我们可以用一串12位的二进制代码表示FTU的上传信息,作为程序的输入,1代表对应的开关有过流信息,0代表对应的开关无过流信息。同时用另一串12位的二进制代码作为程序的输出,代表对应馈线区间发生故障,代表无故障。
遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。
染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码。
初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。
这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

2 遗传算法过程图解
在这里插入图片描述
3 构造配电网故障定位评价函数
基于待求各馈线区段实际状态下所对应的信息应与实际上传故障信息偏差最小的原则,构造如下评价函数:
在这里插入图片描述
在这里插入图片描述
4 求期望函数
针对不同的网络,期望函数的表达式不同,无法用统一的格式表示出来。仅以上述算例为例来说明如何求取期望函数。
在辐射型配电网中,任何区间发生故障,必将导致其上游开关流过故障过电流。这是求取期望函数的原则。假设图一的馈线区段6处发生故障,那么分段开关K1,K2,K3 ,K6,都将有过电流若馈线区段11处发生故障,则K1,K2,K3 ,K6,K10都将有过电流。由此类推我们可得到各个分段开关的期望函数:
在这里插入图片描述

⛄二、部分源代码

%采用改进遗传算法,基于环网的编码,便于产生可行解(满足配网辐射状的约束)
%用于IEEE33节点配电网故障恢复,适应度是计算网损和操作次数
%选择采用的是轮盘赌方式
%移位操作和变异操作后不会产生不可行解,不需要检验

clear;
clc;
tic
%基于环网的编码策略,公共支路只需要放在其中1个环网中,开关1不需要编码(始终闭合)
loop1=[2,3,4,5,18,19,20,33];
loop2=[22,23,24,25,26,27,28,37];
loop3=[8,9,10,11,21,35];
loop4=[6,7,15,16,17,29,30,31,32,36];
loop5=[12,13,14,34];
%确定故障支路(以txt文件形式输入)
% txtpath=‘breaker.txt’;%文件路径名
bb=36;
%存放初始开关集
population1=[1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,0];
%种群大小
popsize=50;
%基因块编码长度
%chromlength=5;
%移位概率
pc = 0.6;
%变异概率
pm = 0.001;
%初始种群
pop = initpop(popsize,bb);
%初始化x,y(存放每次迭代下的最优解)
x=zeros(1,50);
y=zeros(50,size(pop,2));
%计算适应度值
fitvalue = cal_fitvalue(pop);
for i = 1:50 %50次迭代
%选择操作
newpop = selection(pop,fitvalue);
%移位操作
newpop = moveposition(newpop,pc,bb);
%变异操作
newpop = mutation(newpop,pm,bb);
%更新种群
pop = newpop;
%计算适应度值,寻找最优解
fitvalue = cal_fitvalue(pop);
[bestindividual,bestfit] = best(pop,fitvalue);
%ws(i)=powerflow(transform(bestindividual)); %记录实际网损
%cz(i)=sum(xor(bestindividual,population1))-1; %记录实际操作次数
x(i)=bestfit;
y(i,:)=bestindividual;
end
[bestfit1,index]=max(x);
%展示初始拓扑
figure
show_tuopu(population1);
saveas(gca,‘tuopu1.jpg’); %将拓扑以图片格式保存输出
%展示最大适应度值对应的配网拓扑
figure
show_tuopu(y(index,:));
saveas(gca,‘tuopu.jpg’); %将拓扑以图片格式保存输出
%输出各迭代次数下的最佳适应度值
x;
bestfit1;
y(index,:);
%输出具体操作开关
[openkg,closekg] = judge_kg(y(index,:),bb); %求出最优拓扑下需要关断和闭合的开关
fid=fopen(‘openkg.txt’,‘wt’); %将计算结果以txt文件的形式输出
fprintf(fid,‘%g\n’,openkg);
fclose(fid);
fid=fopen(‘closekg.txt’,‘wt’); %将计算结果以txt文件的形式输出
fprintf(fid,‘%g\n’,closekg);
fclose(fid);
%输出最佳拓扑对应下的配电网的网速和操作次数
ws = powerflow(transform(y(index,:)))
cz = sum(xor(y(index,:),population1))-1
%result=[ws;cz];
fid=fopen(‘ws.txt’,‘wt’); %将计算结果以txt文件的形式输出
fprintf(fid,‘%g\n’,ws);
fclose(fid);
fid=fopen(‘cz.txt’,‘wt’); %将计算结果以txt文件的形式输出
fprintf(fid,‘%g\n’,cz);
fclose(fid);
%输出潮流计算的节点电压
[node,u,delt]=powerflow_V(transform(y(index,:)));
nodevoltage=[node’,u’,delt’];
fid=fopen(‘nodevoltage.txt’,‘wt’); %将计算结果以txt文件的形式输出
[m,n]=size(nodevoltage);
for i=1:m
for j=1:n
if jn
fprintf(fid,‘%g\n’,nodevoltage(i,j));
else
fprintf(fid,‘%g\t’,nodevoltage(i,j));
end
end
end
fclose(fid);
%输出潮流计算的支路电流
[branch,p,q]=powerflow_S(transform(y(index,:)));
branchflow=[branch’,p’,q’]
fid=fopen(‘branchflow.txt’,‘wt’); %将计算结果以txt文件的形式输出
[m,n]=size(branchflow);
for i=1:m
for j=1:n
if j
n
fprintf(fid,‘%g\n’,branchflow(i,j));
else
fprintf(fid,‘%g\t’,branchflow(i,j));
end
end
end
fclose(fid);
toc

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
MATLAB 遗传算法工具箱及应用·第二版》一书的word转pdf版,为保护版权不对外提供原书的word版。本文件是在原书word版的基础上转换成pdf而成,非扫描版,极致清晰。 作 者:雷英杰 张善文 李续武 周创明 出版社:西安电子科技大学出版社 第一章 遗传算法概述 1 1.1 遗传算法的概念 1 1.2 遗传算法的特点 3 1.2. 1 遗传算法的优点 3 1.2.2 遗传算法的不足之处 4 1.3 遗传算法与传统方法的比较 4 1.4 遗传算法的基本用语 6 1.5 遗传算法的研究方向 7 1.6 基于遗传算法的应用 8 第二章 基本遗传算法及改进 11 2.1 遗传算法的运行过程 11 2.1.1 完整的遗传算法运算流程 11 2.1.2 遗传算法的基本操作 13 2.2 基本遗传算法 14 2.2.1 基本遗传算法的数学模型 14 2.2.2 基本遗传算法的步骤 14 2.2.3 遗传算法的具体例证 16 2.3 改进的遗传算法 22 2.3.1 改进的遗传算法一 23 2.3.2 改进的遗传算法二 24 2.3.3 改进的遗传算法三 25 2.3.4 改进的遗传算法四 28 2.4 多目标优化中的遗传算法 30 2.4.1 多目标优化的概念 30 2.4.2 多目标优化问题的遗传算法 31 第三章 遗传算法的理论基础 34 3.1 模式定理 34 3.2 积木块假设 36 3.3 欺骗问题 37 3.4 遗传算法的未成熟收敛问题及其防止 39 3.4.1 遗传算法的未成熟收敛问题 39 3.4.2 未成熟收敛的防止 40 3.5 性能评估 41 3.6 小生境技术和共享函数 43 第四章 遗传算法的基本原理与方法 45 4.1 编码 45 4.1.1 编码方法 46 4.1.2 编码评估策略 48 4.2 选择 48 4.3 交叉 52 4.4 变异 55 4.5 适应度函数 57 4.5.1 适应度函数的作用 57 4.5.2 适应度函数的设计主要满足的条件 58 4.5.3 适应度函数的种类 58 4.5.4 适应度尺度的变换 59 4.6 控制参数选择 60 4.7 约束条件的处理 61 第五章 遗传算法工具箱函数 62 5.1 工具箱结构 62 5.1.1 种群表示和初始化 63 5.1.2 适应度计算 63 5.1.3 选择函数 63 5.1.4 交叉算子 64 5.1.5 变异算子 64 5.1.6 多子群支持 64 5.2 遗传算法中的通用函数 64 5.2.1 函数 bs2rv 64 5.2.2 函数 crtbase 66 5.2.3 函数 crtbp 66 5.2.4 函数 crtrp 67 5.2.5 函数 migrate 68 5.2.6 函数 mut 69 5.2.7 函数 mutate 71 5.2.8 函数 mutbga 72 5.2.9 函数 ranking 74 5.2.10 函数 recdis 76 5.2.11 函数 recint 77 5.2.12 函数 reclin 78 5.2.13 函数 recmut 79 5.2.14 函数 recombin 81 5.2.15 函数 reins 81 5.2.16 函数 rep 84 5.2.17 函数 rws 84 5.2.18 函数 scaling 85 5.2.19 函数 select 86 5.2.20 函数 sus 88 5.2.21 函数 xovdp 88 5.2.22 函数 xovdprs 89 5.2.23 函数 xovmp 90 5.2.24 函数 xovsh 91 5.2.25 函数 xovshrs 92 5.2.26 函数 xovsp 93 5.2.27 函数 xovsprs 94 第六章 遗传算法工具箱的应用 95 6.1 安装 95 6.2 种群的表示和初始化 95 6.3 目标函数和适应度函数 96 6.4 选择 97 6.5 交叉 99 6.6 变异 101 6.7 重插入 101 6.8 遗传算法的终止 102 6.9 数据结构 102 6.10 多种群支持 104 6.11 示范脚本 105 第七章 遗传算法应用举例 107 7.1 简单一元函数优化实例 107 7.2 多元单峰函数的优化实例 111 7.3 多元多峰函数的优化实例 115 7.4 收获系统最优控制 118 7.5 装载系统的最优问题 122 7.6 离散二次线性系统最优控制问题 125 7.7 目标分配问题 128 7.8 双积分的优化问题 130 7.9 雷达目标识别问题 131 7.10 图像分割问题 134 7.11 一些测试函数对应的优化问题 136 7.11.1 轴并行超球体的最小值问题 136 7.11.2 旋转超球体的最小值问题 137 7.11.3 Rosenbrock’s Valley最小值问题 138 7.11.4 Rastrigin函数的最小值问题 139 7.11.5 Schwefel函数的最小值问题 140 7.11.6 Griewangk函数的最小值问题 141 7.11.7 不同权的总和最小值问题 142 7.12 多目标优化问题 142 第八章 使用MATLAB遗传算法工具 146 8.1 遗传算法与直接搜索工具箱概述 146 8.1.1 工具箱的特点 146 8.1.2 编写待优化函数的M文件 148 8.2 使用遗传算法工具初步 149 8.2.1 遗传算法使用规则 149 8.2.2 遗传算法使用方式 150 8.2.3 举例:Rastrigin函数 151 8.2.4 遗传算法的一些术语 156 8.2.5 遗传算法如何工作 157 8.3 使用遗传算法工具求解问题 160 8.3.1 使用遗传算法工具GUI 160 8.3.2 从命令行使用遗传算法 172 8.3.3 遗传算法举例 177 8.4 遗传算法参数和函数 192 8.4.1 遗传算法参数 192 8.4.2 遗传算法函数 203 8.4.3 标准算法选项 207 第九章 使用MATLAB直接搜索工具 208 9.1 直接搜索工具概述 208 9.2 直接搜索算法 209 9.2.1 何谓直接搜索 209 9.2.2 执行模式搜索 209 9.2.3 寻找函数最小值 210 9.2.4 模式搜索术语 212 9.2.5 模式搜索如何工作 214 9.3 使用直接搜索工具 218 9.3.1 浏览模式搜索工具 218 9.3.2 从命令行运行模式搜索 226 9.3.3 模式搜索举例 229 9.3.4 参数化函数 243 9.4 模式搜索参数和函数 245 9.4.1 模式搜索参数 245 9.4.2 模式搜索函数 253 参考文献 259
MATLAB中,遗传算法(Genetic Algorithm,简称GA)是一种常用的优化算法,用于解决多目标优化问题。GA通过模拟自然界中的进化过程,通过选择、交叉和变异等操作来搜索问题的最优解。在多目标优化问题中,GA通常使用一种称为Pareto优化的方法,该方法通过维护一组非支配解(Pareto Front)来表示解空间中的最优解。 在MATLAB中,你可以使用内置的遗传算法函数ga来求解目标优化问题。该函数需要输入一个目标函数(包多个目标),以及问题的约束条件。你还可以指定其他算法参数,如遗传算法的种群大小、迭代次数等。 下面是一个使用MATLAB中的ga函数求解目标优化问题的示例代码: ```matlab 定义目标函数 function f = multiObjective(x) f(1) = x(1)^2 + x(2)^2; f(2) = (x(1)-1)^2 + (x(2)-1)^2; end % 定义问题的约束条件 function [c, ceq] = constraint(x) c = []; ceq = []; end % 设置算法参数 options = gaoptimset('PopulationSize', 100, 'Generations', 50); % 调用ga函数求解目标优化问题 [x, fval, exitflag, output] = gamultiobj(@multiObjective, numvars, [], [], [], [], lb, ub, @constraint, options); ``` 在上述示例中,multiObjective函数定义了两个目标函数,并在ga函数调用中作为输入。constraint函数定义了问题的约束条件。options变量设置了算法的参数,如种群大小和迭代次数。最后,gamultiobj函数将返回求解得到的最优解x、目标函数值fval,以及其他信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海神之光

有机会获得赠送范围1份代码

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值