[Solución de optimización] Resolución del modelo de reconstrucción de la red de distribución multiobjetivo basado en un algoritmo genético [incluido el código fuente de Matlab, período 622]

1. Introducción

1 La representación matemática de la información de la falla.
En la figura anterior, K representa el disyuntor, y cada disyuntor tiene un dispositivo FTU, que puede retroalimentar si el interruptor del disyuntor tiene sobrecorriente. Se utiliza para indicar la falla cargada información, que refleja la ubicación de cada interruptor de sección. Si la corriente de falla fluye, la corriente de falla es 1, de lo contrario es 0). Es decir:
Inserte la descripción de la imagen aquí
debido a que la información cargada por la FTU se puede dividir en dos tipos: información defectuosa e información no defectuosa, para el intervalo segmentado, solo puede ser defectuosa y no defectuosa, por lo que podemos usar reglas de codificación binaria para la distribución. red El problema de localización de fallas se modela matemáticamente. Como ejemplo de la red de distribución radial que se muestra en la figura anterior, el sistema tiene interruptores de 12 segmentos. Podemos usar una cadena de códigos binarios de 12 bits para representar la información de carga de la FTU, como la entrada del programa, 1 representa el interruptor correspondiente tiene información de sobrecorriente, 0 significa que el interruptor correspondiente no tiene información de sobrecorriente. Al mismo tiempo, se utiliza otra cadena de código binario de 12 bits como salida del programa, lo que significa que hay una falla en la sección del alimentador correspondiente, lo que significa que no hay falla.

El algoritmo genético parte de una población que representa el posible conjunto de solución potencial del problema, y ​​una población está compuesta por un cierto número de individuos codificados por genes. Cada individuo es en realidad una entidad con características cromosómicas.

Como principal portador de material genético, el cromosoma es una colección de múltiples genes. Su desempeño interno (es decir, el genotipo) es una cierta combinación de genes, que determina el desempeño externo de la forma de un individuo. Por ejemplo, las características del cabello negro están controladas por el cromosoma Determinado por una cierta combinación de genes para una característica. Por tanto, es necesario realizar el mapeo de fenotipo a genotipo, es decir, trabajo de codificación. Dado que el trabajo de imitar la codificación genética es muy complicado, a menudo lo simplificamos, como la codificación binaria.

Después de la generación de la población de primera generación, de acuerdo con el principio de supervivencia del más apto y supervivencia del más apto, las generaciones evolucionan para producir mejores y mejores soluciones aproximadas. En cada generación, la selección se hace de acuerdo con la aptitud del individuo. en el dominio del problema, los individuos, y combinan el cruce y la mutación con la ayuda de operadores genéticos de la genética natural para producir una población que representa un nuevo conjunto de soluciones.

Este proceso hará que la población descendiente de la población como evolución natural esté más adaptada al medio ambiente que la generación anterior El individuo óptimo en la población de última generación puede ser decodificado y utilizado como la solución óptima aproximada al problema.
2 Diagrama del proceso del algoritmo genético
Inserte la descripción de la imagen aquí
3 Construcción de la función de evaluación de la ubicación de la falla de la red de distribución
Basado en el principio de que la información correspondiente al estado real de cada sección de alimentación que se obtenga debe ser la menor desviación de la información real de la falla, Se construye la siguiente función de evaluación:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
4 Encuentra la función esperada
para diferentes En la red, la expresión de la función esperada es diferente, lo que no se puede expresar en un formato unificado. Simplemente tome el ejemplo de cálculo anterior como ejemplo para ilustrar cómo obtener la función de expectativa.

En una red de distribución radial, una falla en cualquier sección causará inevitablemente que una sobrecorriente de falla fluya a través de su interruptor aguas arriba. Este es el principio de obtención de la función de expectativa. Suponiendo que hay una falla en la sección 6 del alimentador en la Figura 1, entonces los interruptores de sección K1, K2, K3 y K6 tendrán sobrecorriente. Si ocurre una falla en la sección 11 del alimentador, entonces K1, K2, K3, K6 , y K10 estarán todos Hay sobrecorriente. Por analogía, podemos obtener la función esperada de cada interruptor de segmento:
Inserte la descripción de la imagen aquí

En segundo lugar, el código fuente

 
%采用改进遗传算法,基于环网的编码,便于产生可行解(满足配网辐射状的约束)
%用于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 j==n
          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
 

Tres, resultados en ejecución

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Cuatro, comentarios

Código completo o escritura para agregar QQ2449341593 revisión anterior
>>>>>>
[Programación del taller] basado en el enjambre de partículas de Matlab [incluido el código fuente 013 de Matlab]
[Programación de la tienda] basado en el algoritmo genético de Matlab para resolver el modelo de programación de la tienda con GUI [incluido Código fuente de Matlab 049]
[Programación del taller] basado en el algoritmo genético de matlab para resolver la programación del taller [incluido el código fuente 070 de Matlab]
[Programación del taller] basado en matlab nsgaII para resolver la programación del taller [incluido el código fuente 071 de Matlab]
[Programación del taller] basado en algoritmo de salto mejorado de matlab Solución del problema de programación del taller [incluido el código fuente 073 de Matlab]
[Programación del taller] Matlab para resolver el problema de programación del taller del flujo de reemplazo [incluido el código fuente 176 de Matlab]
[Programación del taller] Basado en Matlab PSO para resolver el problema de programación del taller 6X6 [incluido el código fuente 411 de Matlab]
[Programación del taller] programación de producción basada en el enjambre de partículas de Matlab [incluido el código fuente 412 de Matlab]
[Programación del taller] basada en el algoritmo genético de matlab Programación de flujo de flujo multiobjetivo [incluido el código fuente 443 de Matlab]
[Optimización] basado en microrred de enjambre de partículas de Matlab Optimización del objetivo [Contiene el código fuente de Matlab período 444]
[Solución de optimización] Basado en el algoritmo de libélula de Matlab para resolver problemas de optimización multiobjetivo [Contiene el código fuente de Matlab período 477]
[Algoritmo de optimización] Algoritmo de depredadores marinos (MPA) [Contiene el código fuente 478 de Matlab]
[Algoritmo de optimización】 Algoritmo de simulación de agujero negro (MVO) [Incluir código fuente Matlab 479]
[Algoritmo de optimización] Algoritmo de polinización de flores mejorado basado en estrategia de mutación [Incluir código fuente Matlab 480]
[Solución de optimización] Basado en el algoritmo de enjambre de partículas de Matlab para resolver el despacho económico de energía hidro-térmica [incluido el código fuente de Matlab período 500]
[Solución de optimización] Basado en el algoritmo de búsqueda de gorriones Optimización de la cobertura de la red de sensores inalámbricos 3D (WSN) [incluido el código fuente de Matlab 599 período]

Supongo que te gusta

Origin blog.csdn.net/TIQCmatlab/article/details/115190455
Recomendado
Clasificación