../../_images/serie.png

Tutorial sobre Séries Temporais

Os procedimentos a seguir detalham o processo de modelagem de séries temporais e como estas são aplicadas no programa Anatem.

Vamos explorar dois casos de exemplo. No primeiro caso, denominado 29_SERIET, apresentamos três tipos de séries temporais onde o usuário é responsável por inserir os dados manualmente. Estes tipos incluem a Série Temporal com Anualidade Presumida, a Série Temporal Regular e a Série Constante. No segundo exemplo, chamado 30_SERIET_SUISHI, demonstramos como utilizar séries temporais que são importadas a partir de simulações realizadas com o SUISHI.

Séries Temporais Convencionais

A utilização de séries temporais no Anatem requer a execução de procedimentos específicos. São necessárias as seguintes etapas para a implementação de uma série temporal:

  1. Criação das Séries Temporais: Isso é feito através do código DSTR, que estabelece o tipo de série temporal a ser utilizada.

  2. Estabelecimento da Estampa de Tempo: O código TIME é utilizado para definir o momento específico que será analisado.

  3. Importação das Séries nos Controladores CDU: As séries temporais são integradas aos controladores CDU relevantes utilizando o bloco SERIET.

Criação das Séries Temporais

Para definir uma série temporal no Anatem, o código DSTR deve ser utilizado em conjunto com a opção de modelo apropriada:

No caso das Série Temporal com Anualidade Presumida e Série Temporal Regular, o preenchimento dos dados ocorre em duas fases. A primeira fase envolve o fornecimento de informações de identificação da série, como número e nome, além de parâmetros para a correção linear dos valores da série (y = ax+b), conforme detalhado na tabela subsequente.

id

Identificação numérica da série temporal

nome da série

Nome da série a ser apresentado em relatórios

a

Coeficiente angular para correção (default igual a 1.0)

b

Coeficiente linear para correção (default igual a 0.0)

f

Ativação (“S”) da correção linear y=ax+b ou não (“N”). O valor default é “N”

Para as Série Temporal com Anualidade Presumida e Série Temporal Regular, a inserção de dados segue um formato específico após a definição inicial. A segunda régua de preenchimento é utilizada para inserir uma quantidade variável de valores conforme a necessidade.

No caso da Série Temporal com Anualidade Presumida, os valores são associados a uma estampa de tempo parcial, excluindo a informação do Ano. Isso ocorre porque, nesse tipo específico de série, o Anatem opera sob a premissa de que os valores fornecidos se repetem anualmente. Essa série funciona como uma lista circular, o que significa que se o timestamp da simulação ultrapassar o último ponto fornecido, o Anatem realizará uma interpolação com o primeiro ponto da série, aplicando a ponderação apropriada. A inserção dos dados para essa série é orientada pela seguinte tabela:

MM

Identificação do mês do timestamp do valor

DD

Identificação do dia do timestamp do valor

HH

Identificação da hora a do timestamp do valor

valor

Valor numérico

No final da inserção dos pontos da série temporal, é necessário indicar o término da entrada de dados utilizando o identificador FIMSTR. Este passo sinaliza o fim do conjunto de dados atual e permite o início da entrada de uma nova série temporal.

A seguir, um exemplo de preenchimento da Série Temporal com Anualidade Presumida, incluindo correções lineares nos seus valores.

DSTR MD01
(id) (Nome da serie ) (    a    ) (    b    ) f
(10   Teste_serie_11          10          2   S    como f=S => y = 10*valor(T) + 2
  10   Teste_serie_10          10          2         como f=N => y = valor(T)
(10   Teste_serie_11          10           0       como f=N => y = valor(T)
(10   Teste_serie_11           0          10  S    como f=S => y = 10
(M DD HH (     valor      )
(01 01 00               1
02 01 00              200
03 01 00              300
04 01 00               400.
05 01 00               500.
06 01 00               600.
07 01 00               700.
08 01 00               800.
09 01 00               900.
10 01 00              1000.
11 01 00              1100.
12 01 00              1200.
FIMSTR
(id) (Nome da serie ) (    a    ) (    b    ) f
11   Teste_serie_11           2         10    S    como f=S => y = 2*valor(T)+10
(M DD HH (     valor      )
(01 01 00               1
02 01 00              200
03 01 00              300
04 01 00               400.
05 01 00               500.
06 01 00               600.
07 01 00               700.
08 01 00               800.
09 01 00               900.
10 01 00              1000.
11 01 00              1100.
12 01 00              1200.
FIMSTR
999999

Em relação à Série Temporal Regular, a estampa de tempo requerida inclui a informação até o Ano. Neste modelo de série, se o timestamp especificado na simulação estiver fora do intervalo dos dados fornecidos, o Anatem não realizará uma extrapolação dos valores. Em vez disso, um erro será gerado. Para contornar esta situação, é possível utilizar o parâmetro P2 do bloco SERIET, permitindo a definição de séries temporais substitutivas para esses casos. A inserção de dados é orientada pela seguinte tabela:

YYYY

Identificação do ano do timestamp do valor

MM

Identificação do mês do timestamp do valor

DD

Identificação do dia do timestamp do valor

HH

Identificação da hora a do timestamp do valor

valor

Valor numérico

A Série Temporal Regular também apresenta uma entrada variável de valores e requer o emprego do identificador FIMSTR. O exemplo a seguir ilustra a entrada de dados desta série:

Listagem 165 Definindo a Série Temporal Regular
DSTR MD02
(id) (Nome da serie ) (    a    ) (    b    ) f
  20 Teste_serie_20          10          2
(YYY MM DD HH (     valor      )
2021 01 01 00              11.00
2021 06 01 00              12.00
2021 12 02 11              20.00
FIMSTR
(id) (Nome da serie ) (    a    ) (    b    ) f
  21   Teste_serie_21          10          2
(YYY MM DD HH (     valor      )
2020 01 01 00              21.00
2020 06 01 00              22.00
2020 12 02 11              30.00
FIMSTR
(id) (Nome da serie ) (    a    ) (    b    ) f
  22   Teste_serie_22          2           10 S
(YYY MM DD HH (     valor      )
2021 01 01 00              11.00
2021 06 01 00              12.00
2021 12 02 11              20.00
FIMSTR
999999

A Série Constante, apesar de nomeada como série temporal, é na verdade um recurso que representa um valor constante, que não varia com a passagem do tempo. Este recurso é especialmente útil para análises em que se deseja avaliar o impacto de um valor fixo e específico em uma simulação, sem a necessidade de ajustar controles adicionais. O usuário pode simplesmente substituir uma série temporal variável por esta série de valor constante para realizar suas avaliações. Esse recurso oferece uma maneira prática e direta de explorar diferentes cenários, sendo sua régua de preenchimento a seguinte:

id

Identificação numérica da série temporal

nome da série

Nome da série a ser apresentado em relatórios

b

Coeficiente linear para correção

Em função desta série não apresentar valores temporais, o identificador FIMSTR não deve ser utilizado a cada nova série definida. O exemplo a seguir ilustra o preenchimento deste tipo de série:

Listagem 166 Definindo a Série Constante
DSTR MD03
(id) (Nome da serie ) (    b    )
  31 Teste_serie_31         1e13        f=b, pra qualquer que seja t
  32 Teste_serie_32            2
  33 Teste_serie_33            3
999999

Estabelecimento da Estampa de Tempo

A estampa de tempo, ou timestamp, em um caso, representa um momento específico no tempo referente ao cenário em análise. Ela é definida com precisão, incluindo até mesmo segundos e suas frações, dentro de um calendário completo. Para registrar um timestamp em um caso, utiliza-se o código TIME, que é aplicável tanto no Anarede quanto no Anatem.

Quando o código TIME é utilizado no Anarede, a informação do timestamp é armazenada no arquivo histórico e posteriormente lida automaticamente pelo Anatem durante o processo de reestabelecimento do caso. Além disso, há a opção de modificar o timestamp diretamente no Anatem, empregando o mesmo código. Neste caso, o valor inserido no Anatem prevalecerá sobre o lido do arquivo histórico do Anarede.

Uma característica distintiva do código TIME é sua flexibilidade na entrada de dados. Diferentemente de outras entradas de dados, ele aceita múltiplos formatos para facilitar o uso pelo usuário, conforme descrito na lista a seguir:

Formato

Descrição

EPOCH

Número inteiro no formato EPOCH (número de segundos passados desde 1/1/1970 00:00, GMT +00:00)

YYYY/MM/DD hh:mm:ss UTC shh:mm

Formato completo. UTC pode ser substituído por GMT.

YYYY/MM/DD hh:mm UTC shh:mm

Formato sem informação de segundos. Nesse caso, ss é presumido como 00.

YYYY/MM/DD

Formato sem informação de horas e minutos. Nesse caso, hh é presumido como 12 e mm é presumido como 00. GMT é presumido como sendo o do relógio local do usuário.

YYYY/MM

Formato sem informação de dias. Nesse caso, DD é presumido como 1.

O usuário tem a liberdade de escolher entre barras ou hífens para separar os elementos de Ano, Mês e Dia na estampa de tempo, além de poder optar pela representação do marcador de fuso horário em UTC ou GMT. É importante que a escolha de formato para a entrada de dados reflita a precisão necessária para a informação em questão. Por exemplo, para um registro de caso oriundo da operação real, como os dados provenientes da plataforma SAGE, seria apropriado utilizar a estampa de tempo com toda a sua precisão. Por outro lado, para um estudo prospectivo de alguns meses ou anos no futuro, pode ser suficiente fornecer apenas o Ano e o Mês. O exemplo a seguir demonstra como realizar o preenchimento em um caso histórico onde a precisão completa da estampa de tempo é relevante:

Listagem 167 Definindo o timestamp
TIME
( Formato EPOCH
1630587807
(
TIME
(YYY/MM/DD hh:mm UTC -HH:MM. Veja o manual para mais formatos)
2021/09/16 12:00 UTC -03:00

Importação das Séries nos Controladores CDU

No Anatem, a importação de séries temporais é realizada através do bloco Bloco SERIET, que opera dentro do contexto de Controladores Definidos pelo Usuário. Para efetuar essa importação, é essencial fornecer no bloco Bloco SERIET os identificadores das séries temporais. Este procedimento é similar à especificação de um local remoto em blocos IMPORT.

No contexto do bloco Bloco SERIET, é permitido informar até dois parâmetros de identificação, além de um parâmetro de valor default. Esta configuração possibilita ao usuário uma flexibilidade considerável na definição das séries temporais a serem utilizadas, conforme demonstrado na seguinte descrição:

P1

Número de identificação da série temporal a ser extraído o valor de saída

P2

Número de identificação da série temporal a ser extraído o valor de saída no caso da série em P1 não apresentar valor viável

P3

Valor default para a variável de saída, caso a série referente ao campo P2 não seja viável

No Anatem, o funcionamento do bloco SERIET segue uma lógica específica para a consulta de valores nas séries temporais. A série associada ao parâmetro P2 é acessada apenas se a série em P1 não fornecer um valor viável. Isso ocorre, por exemplo, quando os dados da série em P1 não cobrem a estampa de tempo especificada pelo código TIME e o modelo não está configurado para extrapolar valores.

Se a estampa de tempo especificada em TIME estiver dentro do intervalo da série temporal definida em P1, o valor de saída do bloco Vsai será o resultado de uma interpolação entre os dois pontos mais próximos encontrados na série.

Na eventualidade de nenhuma das séries em P1 ou P2 fornecer um valor viável, o Anatem recorrerá ao valor especificado em P3, desde que este tenha sido definido.

É importante ressaltar que o bloco SERIET, embora semelhante aos blocos ENTRAD e IMPORT por ser um bloco de interface, difere em certos aspectos. Assim como o bloco IMPORT, ele não é sujeito à inicialização automática nem ao comando Definição de Valor Inicial de Variáveis (DEFVAL). Contudo, assim como o bloco ENTRAD, o SERIET pode ser afetado por eventos como TCDU e RCDU. A menos que eventos sejam aplicados, o valor de saída do bloco SERIET permanecerá constante ao longo de toda a simulação, tal qual um bloco ENTRAD e diferentemente de um bloco IMPORT.

A seguir, um trecho de código Anatem ilustra a utilização desse bloco em um CDU, considerando as séries definidas previamente:

Listagem 168 Definindo o Bloco SERIET
DCDU
(ncdu) ( nome cdu )
2      TESTE
(EFPAR (nome) (     valor      )
DEFPAR  #T1             3.1
( Bloco SERIET tenta achar o valor na serie em P1, depois tenta em P2, depois usa o valor
( default em P3
( Para efeitos de OTMX e de eventos, SERIET se comporta como ENTRAD.
(nb)i(tipo)o(stip)s(vent) (vsai) ( p1 )( p2 )( p3 )( p4 ) (vmin) (vmax)
   1 SERIET                X1      20   10   #T1                          Sinal definido em 20
   2 SAIDA          X1
  11 SERIET                X2      100  200   #T1                         P1 e P2 inexistentes, irá usar P3
  12 SAIDA          X2
  21 SERIET                X3      21  10    #T1                          Serie 21 fora do timestamp, usará 10
  22 SAIDA          X3
  31 SERIET                X4      11        #T1                          Usará a transformação y=2x+10 na série MD01
  32 SAIDA          X4
  41 SERIET                X5      22        #T1                          Usará a transformação y=2x+10 na série MD02
  42 SAIDA          X5
  51 SERIET                X6      31        #T1                          Usará a série MD03
  52 SAIDA          X6
FIMCDU
999999

Séries Temporais oriundas do SUISHI

Para a utilização da Série de Queda d’Água oriunda do SUISHI, alguns passos adicionais em relação ao procedimento anterior devem ser tomados, como na relação a seguir:

  1. Definição da pasta contendo os arquivos USIHID: Isso é feito através do código DARQ, tipo SUISHI que estabelece o tipo de série temporal a ser utilizada.

  2. Associação dos arquivos USIHID à estrutura de Série Temporal: Para realizar esta associação, deve-se utilizar o código DSTR MD04.

  3. Definição do cenário de análise: Como a simulação hidrotérmica do SUISHI é oriunda de um processo estocástico e o Anatem é um simulador determinístico, requer escolher um cenário para análise. Isto é feito por meio do código DSTO.

Definição da pasta contendo os arquivos USIHID

A simulação hidrotérmica realizada pelo SUISHI gera diversos tipos de arquivos, dos quais o Anatem utiliza especificamente os do tipo USIHID. Estes arquivos, que são gerados individualmente para cada usina hidroelétrica na simulação do SUISHI, contêm parâmetros detalhados dessas usinas. O Anatem, por sua vez, foca nas informações das colunas Ano, Mês, Série, Patamar e Queda para construir suas análises.

As colunas Ano, Mês e Queda são empregadas para formar uma série temporal, seguindo a lógica de uma Série Temporal Regular. Devido à natureza estocástica do SUISHI, os dados de queda d’água resultam em diferentes cenários dentro dessas séries temporais. Já as colunas Série e Patamar têm a função de identificar os diversos cenários de simulação presentes.

Para integrar a pasta de dados contendo os arquivos USIHID no Anatem, utiliza-se o código DARQ, selecionando o tipo SUISHI. É importante notar que, diferentemente de outros tipos no código DARQ, este se refere a uma pasta inteira. Portanto, o identificador do caminho deve terminar com uma barra (“/”) ou contra-barra (“").

Segue um exemplo de como associar os arquivos USIHID ao Anatem:

Listagem 169 Declaração de arquivo de entrada USIHID oriundos do SUISHI
DARQ
(Tipo) (C) ( Arquivo
OUT        exemplo.out
LOG        exemplo.log
PLT        exemplo.plt
SAV    2   exemplo.sav
BLT        exemplo.blt
SUISHI     suishi_output/
999999

Associação dos arquivos USIHID à estrutura de Série Temporal

Após definir a pasta-fonte para os arquivos USIHID no Anatem, o próximo passo é associar o identificador das usinas na base do SUISHI com um novo identificador de séries a ser usado no Anatem. Para esta finalidade, emprega-se o código DSTR MD04.

Este código específico apresenta uma régua única de preenchimento, eliminando a necessidade do identificador FIMSTR. A configuração para a entrada de dados nesse código segue a estrutura detalhada na tabela a seguir:

id

Identificação numérica da série temporal

nome da série

Nome da série a ser apresentado em relatórios

id2

Identificação numérica na base USIHID da série temporal

a

Coeficiente angular para correção (default igual a 1.0)

b

Coeficiente linear para correção (default igual a 0.0)

f

Ativação (“S”) da correção linear y=ax+b ou não (“N”). O valor default é “N”

Assim como outras séries temporais, a Série de Queda d’Água oriunda do SUISHI oferece a funcionalidade de correção linear dos valores. Esta característica é especialmente útil para ajustes, como a conversão de alturas brutas para líquidas ou a transformação dos valores para base por unidade (pu).

A seguir, apresenta-se um exemplo prático de como preencher o código DSTR MD04, estabelecendo a ligação com arquivos USIHID específicos:

Listagem 170 Associação de arquivo de entrada USIHID oriundos do SUISHI na estrutura de série temporal
DSTR MD04
(id) (Nome da serie ) id2 (    a    ) (    b    ) f
  40  FUNIL-GRANDE      4
  41  ITAIPU           66
  42  EMBORCACAO       24
999999

Definição do cenário de análise

Após a vinculação das séries temporais do SUISHI ao Anatem, é importante definir qual cenário, dentro do processo estocástico originário, será avaliado. Para esta finalidade, utiliza-se o código DSTO. Este código permite a seleção específica de grandezas e cenários, com base nos seguintes parâmetros:

Tipo

Tipo de grandeza a ser selecionada pelo código

valor1

Primeiro parâmetro para da seleção da grandeza

valor2

Segundo parâmetro para da seleção da grandeza

No contexto específico de análise da previsão da altura de queda d’água proveniente do SUISHI, a configuração para o tipo da grandeza deve ser definida como HIDRO. Nesta configuração, os parâmetros valor1 e valor2 são interpretados da seguinte forma:

valor1

Número de identificação da série, correspondente à coluna SERIE do arquivo USIHID.csv

valor2

Número de identificação da série, correspondente à coluna PATAMAR do arquivo USIHID.csv

Desta forma, o conjunto de séries alternativas do processo estocástico do SUISHI é reduzido a um cenário específico e a simulação é realizada de forma determinística, tal qual a natureza originária do Anatem.

Essa estrutura permite a seleção precisa do cenário específico e das condições de operação hidroelétrica que serão analisadas no Anatem. Para demonstrar a aplicação prática do código DSTO no Anatem, apresenta-se um exemplo específico a seguir:

Listagem 171 Exemplo da aplicação do código DSTO para selecionar a SERIE 1984 do PATAMAR 1
DSTO
(Tipo) (     valor1     ) (     valor2     )
HIDRO                1984                 1
999999