• Nenhum resultado encontrado

Esta seção apresenta uma heurística para operar em conjunto com a formulação matemática do PAOE com ilhamento imprevisto apresentada na seção 4.2. O objetivo da heurística é realizar o cálculo de fluxo de potência, simulação de contingências e detecção de ilhamento, prioridades e corte de carga e cálculo dos custos. Os algoritmos foram implementados no GNU Octave. A heurística fornecerá os dados das ilhas (número de ilhas, hora de incidência, custos por hora) para a abordagem matemática de agendamento. A heurística começa com uma função chamada heuristica(), que recebe os seguintes parâmetros de entrada:

• Número de equipes; • id das equipes;

60

• tempo de deslocamento padrão;

• dados de ordem (ponto de partida e demais ilhas, horário de ocorrência e tempos de serviço);

• custos para cada tipo de consumidor (Residencial, comercial e industrial) relacionados à tarifa de energia (TUSD e TE) para horários de fora ponta, de ponta e intermediário; e grupo de importância;

• limite de interrupção estabelecido (DICp);

• horários dos postos tarifários (P, FP e I) para cada grupo de consumidor (B1 e A4 verde)

• modelo da rede elétrica, com dados de barramentos (id, tipo (Vθ, PV, PQ;), potências ativa e reativa da carga e limites de tensão), linha (ramo (de barra, para barra) e impedância) e geração (barra, potência ativa e reativa e limites de geração);

• número de consumidores por barra;

• tipo de consumidor por barra (Residencial =1, comercial = 2 e industrial =3); • curva diária de carga característica (para consumidores residenciais, comerciais

e industriais) normalizada;

• barras com gerações, com tipo de geração (SE = 0, FV = 1, EOL = 2 e diesel = 3);

• curva diária de geração para cada tipo de GD; • novas barras Vθ (uma para cada ilha);

• contingêncas (id do branch de cada contingência de linha);

Para cada ilha e hora, a função heuristica() chama a função aplicaMudancas(), responsável por aplicar as contingências definidas e alterar os parâmetros de geração e carga de acordo com as respectivas curvas diárias normalizadas e locais (barras). Esta função também é responsável por identificar as barras pertencentes à cada ilha, formadas pelas contingências.

Após definir o cenário, a função heuristica() invoca agora a função prioridades(), que atribui um custo à cada barra, pertencente a uma ilha e equipe, para cada hora aplicando a equação 3.4. Este custo é definido pela variável CCjql na Eq. 4.1. A função

realiza os cálculos dos custos considerando a potência do consumidor, o número de consumidores, o tipo de consumidor da barra (residencial, comercial ou industrial), o

61

horário (P, FP ou I), o respectivo grupo do consumidor (B1 ou A4) e também realiza o cálculo do DIC, verificando ainda se os consumidores da ilha ultrapassaram o limite de interrupção estabelecido (DICp). Por fim, a função retorna um vetor com os custos de cada barra (p) e um vetor com as barras na sequência de menor para maior prioridade (e.g., PRIORIDADE(ilha) = [11 12 14 13 15]), para uma determinada hora e ilha.

Com a composição das ilhas, gerações e cargas, obtidas pela função

aplicaMudancas(), e agora com as prioridades de cada barra, obtidas pela função prioridades(), para uma específica ilha, equipe e hora, a função heuristica() pode agora invocar a função corteDeCarga(), responsável por executar o fluxo de potência e aplicar o algoritmo de corte de carga, apresentado na seção 4.3.1. O algoritmo verifica para cada ilha (e para cada hora do dia, considerando as curvas de geração e carga) o balanço entre potência gerada pelas GDs e consumida (carga + perdas) e, se a geração for é suficiente, realiza os cortes das cargas de menor prioridade, até que a geração consiga suprir a demanda. A função retorna um vetor com as barras cortadas e a sequência em

que foram realizados os cortes de acordo com as prioridades. Como o estudo é

conduzido em um sistema de distribuição, um modelo de fluxo de potência não-linear representa melhor o comportamento do sistema (ZHU, 2015b), portanto, o método Newton-Raphson é utilizado na função corteDeCarga().

Por fim, o vetor com as cargas cortadas retornado pela função corteDeCarga() é utilizado pela função heuristica() para, juntamente com os custos de cada barra retornado pela função prioridades(), calcular os respectivos custos de cada carga cortada. Estes custos, estratificados por hora, ilha e barra, serão lidos pela função criainstanciasched(), a qual formatará os dados em um formato compatível para ser lido pelo modelo matemático implementado no ZIMPL e o agendamento resolvido pelo CPLEX. A implementação matemática será melhor detalhada na seção 4.4.

A interação entre a heurística e o modelo matemático funciona da seguinte forma: A heurística realiza o cálculo dos custos de cada barra e ilha sem considerar o atendimento por equipes para as 24 horas do dia. Esta instância criada com a evolução dos custos ao longo do tempo é então lida pelo modelo matemático implementado no ZIMPL, o qual gera um modelo matemático com equações lineares interpretáveis pelo solver CPLEX. O CPLEX realiza então a otimização da FO do agendamento apresentada na Eq. 4.1 e retorna o valor da FO e a a sequência do agendamento a ser realizado, com os tempos de finalização de cada ordem (tjq). Esta saída é novamente inserida na heurística de modo

a obter de maneira mais precisa os custos (considerando agora fração de hora para a finalização), assim como os gráficos desejados.

62

4.3.1 Algoritmo de corte de carga

Para definir onde cortar, l = 5 no exemplo da Fig. 4.1, serão calculados os custos de cada carga (l) de cada ilha (j) para cada hora (h), obtidos pela Eq. 3.4. Feito isso, se obterá (para cada ilha j e hora h) um conjunto de consumidores ordenado segundo a prioridade de cada um, de forma que as cargas prioritárias receberão um índice mais alto (p3 > p2 > p1 e assim sucessivamente). A Eq. 4.16 apresenta a definição do conjunto de consumidores (ou, cargas) em função das ilhas, prioridade e hora. A função I(l) = j apresenta os consumidores l pertencentes à ilha j, a função P (l, h) = p apresenta os consumidores l com prioridade p para a hora h.

Ljph= {l ∈ L|I(l) = j ∧ P (l, h) = p, }, ∀j ∈ Oe, ∀p ∈ {1, 2, ..., n}, ∀h ∈ H (4.16)

Para determinar quando e quanto de carga cortar, a abordagem apresentada faz uso de um algoritmo de corte de carga (Algoritmo 1) que, juntamente com um fluxo de potência não-linear Newton-Raphson, realiza os cortes de carga dos sistemas ilhados.

O algoritmo de corte de carga irá verificar o balanço entre potência gerada (P G) e demanda (P L), rodando um cálculo de fluxo de potência não-linear. Caso P G < P L, o algoritmo deverá realizar o corte, se disponível, da carga de menor prioridade, abrindo a chave deste consumidor (Sl). O momento que este consumidor é interrompido (Tl) deverá

então ser registrado para verificar o seu custo associado, calculado pela heurística e

utilizado na Eq. 4.1. O momento exato de interrupção de cada consumidor (Tl) é obtido

pelo Algoritmo 1.

Onde: S(Ljph) é a chave do consumidor com prioridade p para a hora h, da ordem

j; TLjph é o momento de interrupção do consumidor com prioridade p para a hora h, da

ordem j; e n é o número de consumidores da ilha em análise.

Documentos relacionados