• No se han encontrado resultados

Resolução do problema do escalonamento da produção de energia eléctrica usando programação lógica por restrições

N/A
N/A
Protected

Academic year: 2021

Share "Resolução do problema do escalonamento da produção de energia eléctrica usando programação lógica por restrições"

Copied!
95
0
0

Texto completo

(1)

Instituto Superior de Engenharia do Porto

Mestrado em Engenharia Electrotécnica

Sistemas Eléctricos de Energia

Departamento de Engenharia Electrotécnica

Resolução do Problema do Escalonamento da

Produção de Energia Eléctrica usando

Programação Lógica por Restrições

Rui Pedro Teixeira Malheiro

Dissertação submetida para satisfação dos requisitos do grau de mestre em

Engenharia Electrotécnica – Sistemas Eléctricos de Energia

Dissertação realizada sob a orientação do Professor Doutor

Nuno Filipe da Fonseca Bastos Gomes do Instituto Superior de Engenharia do Porto

(2)
(3)

iii

Resumo

A operação dos Mercados de Energia Eléctrica passa, actualmente, por uma profunda reestruturação, com o principal foco nas transacções do sistema de transmissão entre os diferentes agentes. Tendo isso em conta, o serviço de transmissão neste novo esquema de funcionamento do Mercado de Energia Eléctrica deve ser provido de máxima eficiência económica, atendendo sempre às restrições de segurança do sistema. Com esta reorganização do sector eléctrico da última década surgiu também a necessidade de rever os modelos tradicionais de optimização económica do Sistema Eléctrico de Energia, como por exemplo o despacho e pré-despacho (unit commitment).

A reestruturação e liberalização dos mercados de energia eléctrica trouxeram novas restrições a alguns dos problemas tradicionais associados aos Sistemas Eléctricos de Energia. Um desses problemas é o Escalonamento da Produção de Energia Eléctrica, que no contexto actual, implica quase sempre negociação entre os diferentes agentes do mercado e consequentemente reescalonamento. A maioria dos métodos usados para a resolução do problema não permitem reformular o pré-despacho, algo para que a Programação Lógica por Restrições é extremamente adequada.

O trabalho desenvolvido nesta dissertação visa criar uma aplicação computacional com base na Programação Lógica por Restrições, através da plataforma ECLiPSe, para resolver o problema do Escalonamento da Produção de Energia Eléctrica dos grupos térmicos, demonstrando assim a versatilidade e flexibilidade deste tipo de programação aplicada a problema combinatoriais deste género.

(4)
(5)

v

Abstract

The operation of the Electricity Markets is currently going through a major restructuration, with its primary focus over the transactions within the transmission system between the different agents. Taking this into account, the transmission service in this new scheme of operation of the Electricity Market should be provided with maximum economic efficiency, always considering the restrictions of system security. With this reorganization of the electricity sector over the last decade, it has also appeared a need to review the traditional models of the economic optimization of the Electrical Power Systems, especially within the dispatch and pre-dispatch (unit commitment).

The restructuration and the liberalization of electricity markets brought new restrictions to some of the traditional problems associated with the Electrical Power Systems. One of these problems is Scheduling the Production of Electricity, which within the present context, almost always involves negotiation between the different market agents and hence the rescheduling. Most of the methods used to solve the problem do not allow the reformulation of the pre-dispatch, which for the Constraint Logic Programming is adequated.

The work developed in this dissertation aims to create a computer application based on the Constraint Logic Programming, through the ECLiPSe platform, to solve the problem of the Scheduling of the Production of Electricity of the thermal groups, thus demonstrating the versatility and flexibility of this type of programming applied to combinational problems of this kind.

(6)
(7)

vii

Agradecimentos

É com enorme prazer que manifesto publicamente a minha gratidão pela ajuda e apoio, de forma directa ou indirecta, que me foi dada e que foi primordial para a execução deste trabalho.

Gostaria de fazer um agradecimento especial ao Professor Doutor Nuno Filipe da Fonseca Bastos Gomes, responsável pela orientação desta dissertação, que me ajudou bastante e que se disponibilizou sempre a indicar-me o caminho certo.

Agradeço do fundo do meu coração à minha família por todo o apoio, suporte e por tudo o que me deram que me possibilitou concluir este trabalho. Para os meus pais, para a minha avó e para o meu irmão o meu mais sincero obrigado por me ajudarem de forma incondicional a trilhar este caminho. O vosso apoio teve um papel bastante importante na conclusão deste trabalho.

Á minha namorada e companheira de vida Ana quero dedicar esta dissertação com todo o amor e carinho que sinto por ela e que ela sabe que sinto. Sem a sua ajuda nunca teria conseguido chegar onde cheguei, ser o que sou e neste caso concluir esta dissertação. Pelo seu apoio incontestável, por tudo o que representa para mim e pelo que teve que aturar durante este tempo todo, o meu mais profundo e sincero obrigado.

A todos os meus verdadeiros amigos, que estiveram lá quando foi preciso, que sempre me motivaram e apoiaram, e que tiveram uma influencia bastante especial para a conclusão deste trabalho. O meu mais sincero obrigado e vocês sabem quem são.

(8)
(9)

ix

(10)

Índice

1

Introdução

1

1.1 Introdução ... 2

1.2 Objectivos do Trabalho ... 3

1.3 Organização da Dissertação ... 4

2

O Problema do Escalonamento da Produção da Energia Eléctrica

7

2.1 Abordagem Conceptual ... 8

2.2 Características Gerais do Problema... 9

2.2.1 Os Custos ... 11

2.2.2 As Restrições ... 13

2.3 Formalização do Problema ... 16

3 Programação Lógica por Restrições

21

3.1 Introdução ... 22

3.2 Conceitos Gerais sobre Restrições ... 23

3.2.1 Programação com Restrições ... 24

3.2.2 Programação Lógica e Programação com Restrições ... 25

3.2.3 Algumas Definições ... 26

3.2.4 Domínios Computacionais da Programação com Restrições ... 27

3.2.5 Meta-Interpretadores de Restrições ... 28

3.3 Problemas de Satisfação de Restrições ... 29

3.3.1 Técnicas de Consistência e Propagação de Restrições... 30

(11)

xi

3.4 Programação Lógica por Restrições com Domínios Finitos ... 35

3.4.1 Domínio Finitos ... 35

3.4.2 Restrições ... 36

3.4.3 Pesquisa e Optimização ... 42

4 Resolução do Problema do EPEE utilizando PLR

através do ECLiPSe

47

4.1 Introdução ... 48

4.2 O Modelo de Programação Implementado ... 49

4.2.1 Levantamento de variáveis e domínios ... 49

4.2.2 Implementação das Restrições ... 50

4.2.2.1O significado das Restrições ... 51

4.2.3 Aplicação da Função de Optimização ... 52

4.2.4 Pesquisa e Optimização ... 54

5 Resolução de Problemas Práticos

59

5.1 Introdução ... 60

5.2 Métodos de Pesquisa ... 61

5.3 Exemplo Prático de EPEE de 4 unidades ... 61

5.3.1 Resultados aplicando Branch & Bound normal ... 62

5.3.2 Resultados aplicando Branch & Bound dichotomic ... 62

5.4 Exemplo Prático de EPEE de 38 unidades ... 63

5.4.1 Resultados aplicando Branch & Bound normal ... 64

5.4.2 Resultados aplicando Branch & Bound dichotomic ... 64

6 Conclusão

67

6.1 Conclusão... 68

6.2 Trabalho Futuro ... 69

Referências

71

(12)

Lista de Figuras

2.1 Diagrama de cargas da REN ... 9

2.2 Energia Emitida por central em 2009 ... 11

2.3 Função custo de funcionamento ... 12

2.4 Custos de arranque de centrais com turbina a vapor ... 12

3.1 O grafo possui todos os arcos consistentes, mas não existe nenhuma solução que satisfaça todas as restrições ... 31

3.2 Custos de arranque de centrais com turbina a vapor ... 32

3.3 Efeito da ordem de selecção das variáveis ... 34

3.4 Efeito da ordem de selecção de valores ... 35

5.1 Diagrama de cargas para o sistema de 38 unidades ... 63

(13)

xiii

Lista de Tabelas

3.1 Diferentes formas de representação de domínios finitos ... 36

3.2 As diferentes conectivas lógicas que permitem formar restrições compostas .. 37

3.3 Substituição das conectivas lógicas com o operador de cardinalidade ... 38

5.1 Resumo com os resultados dos problemas práticos ... 65

A.1 Procura de energia das cargas ao longo das 8 horas ... 76

A.2 Características de geração de energia das 4 unidades ... 76

A.3 Resultados do exemplo de 4 unidades, estados finais dos geradores ... 77

A.4 Resultados do exemplo de 4 unidades, potências finais dos geradores ... 77

(14)
(15)

xv

Lista de Abreviaturas

EPEE Escalonamento da Produção de Energia Eléctrica

PLR Programação Lógica por Restrições

MEE Mercado de Energia Eléctrica

SEE Sistema Eléctrico de Energia

SE Sistema de Energia

FCT Função Custo Total

PR Programação com Restrições

IA Inteligência Artificial

PSR Problemas de Satisfação de Restrições

(16)
(17)

1

1

Introdução

1.1 Introdução ... 2 1.2 Objectivos do Trabalho ... 3 1.3 Organização da Dissertação ... 4

(18)

1.1

Introdução

O Escalonamento da Produção de Energia Eléctrica (EPEE) é um dos mais importantes problemas combinatoriais s a ocorrer numa base diária a uma escala planetária. A procura por energia e a sua produção têm caminhado com ritmos semelhantes, o crescente número da população mundial obriga a uma constante evolução tanto na capacidade de produção energética, como na oferta dessa mesma energia. Este facto originou a reestruturação do Mercado de Energia Eléctrica (MEE) com vista à sua liberalização, passando assim a existir livre concorrência para o fornecimento energia eléctrica.

A profunda reestruturação do sector eléctrico a nível mundial começou a fazer-se notar a partir de 1990, tendo como ideia chave a liberalização dos fazer-segmentos potencialmente competitivos e a regulação dos segmentos considerados como monopólios naturais. Portugal começou por volta de 1995 a reestruturação do seu sector eléctrico, com a aplicação de legislação específica que pretendia separar o sistema regulado (SEP) do sistema liberalizado (SENV). Contudo só em 2007 teve lugar a aparição do MIBEL (Mercado Ibérico de Electricidade), integrando desta forma o mercado português e o mercado espanhol, que por seu lado já tinha sido liberalizado em 1998.

A reestruturação do MEE está a exigir às empresas que apresentem soluções dinâmicas e flexíveis, confrontando-as todos os dias com novos desafios. Com a intensificação da competição global, é obrigatório reduzir custos e aproveitar as oportunidades mal surjam. Com as constantes mudanças de legislações e de tecnologias inovadoras criam-se problemas que fazem com que um bom planeamento seja uma vantagem competitiva crucial. Não será obviamente com o tradicional planeamento manual que estes desafios serão ultrapassados, o mercado precisa de ferramentas flexíveis e readaptáveis, de entre as quais a Programação Lógica por Restrições (PLR) se destaca. Sendo um paradigma de programação que disponibiliza ferramentas que permitem desenvolver aplicações capazes de se adaptar rapidamente a qualquer tipo de problema, apenas com a redefinição das restrições a aplicar.

(19)

3

As empresas produtoras de electricidade e a(s) empresa(s) que gerem o Sistema Eléctrico de Energia (SEE) têm a responsabilidade de decidir qual a melhor forma de satisfazer as variações na procura de electricidade, que podem ser de ciclo diário ou ciclo semanal. O problema da optimização a curto prazo resume-se a definir um plano para produção de energia eléctrica minimizando os custos associados, como por exemplo o custo de combustível, satisfazendo sempre as inúmeras restrições do sistema.

Existem dois problemas de optimização de curto prazo, o pré-despacho (unit commitment) e o despacho económico. O pré-despacho é o processo de decisão de quais as unidades geradoras de energia eléctrica, que produzem, quando produzem, e quanto produzem. Ou seja, é quando se decide quais os grupos geradores que deverão arrancar, ou desligar, mediante todas as restrições técnicas que o sistema assim obriga. O despacho económico é o processo de decisão sobre a quantidade de energia a ser produzida por cada unidade em cada período de tempo, de forma a minimizar uma determinada função de custo.

O pré-despacho é um problema de optimização bastante complexo visto possuir um número astronómico de combinações possíveis entre todos os estados de unidades geradoras (ligadas/desligadas) durante todo o período do seu estudo. Como o objectivo da presente dissertação é a resolução do problema do EPEE, o desenvolvimento da aplicação informática, que serve de suporte a esta dissertação, versará simultaneamente sobre o pré-despacho e o despacho económico relativamente aos grupos térmicos.

1.2

Objectivos do Trabalho

O problema do Escalonamento da Produção da Energia Eléctrica (EPEE) apesar de ser bastante complexo obedece sempre a um número de restrições. A existência destas restrições torna a aplicação da Programação Lógica por Restrições (PLR) a este problema adequada.

(20)

Com o intuito de resolver o problema do EPEE nos grupos térmicos esta dissertação tem como principais objectivos:

Criação de uma aplicação computacional em PLR na plataforma ECLiPSe que dê resposta a esse problema;

Demonstração da grande flexibilidade e aplicabilidade da Programação Lógica por Restrições a este tipo de problemas;

Comparação entre a solução encontrada e soluções já existentes para o mesmo tipo de problema e se possível melhoria a nível de resultados; Comprovação das melhores soluções aplicando a PLR a este tipo de

problema, face a soluções já existentes.

1.3

Organização da Dissertação

A organização desta dissertação está dividida em seis capítulos. O presente capítulo consiste numa breve introdução ao tema da dissertação, no qual se apresenta o seu âmbito, enquadramento e uma descrição sucinta do problema sobre o qual esta incide. Refere-se ainda de modo genérico o trabalho realizado ao longo do desenvolvimento desta dissertação.

O segundo capítulo é dedicado à apresentação do Problema do Escalonamento da Produção da Energia Eléctrica. É efectuada uma abordagem à contextualização do problema e realçada a importância que este problema tem diariamente. É explicada toda a mecânica do problema abordando os seus temas mais importantes, como é o caso dos custos, das restrições e das variáveis associadas. Neste capítulo encontramos ainda uma explicação detalhada das restrições a serem aplicadas no problema, e no final apresenta-se a formalização do problema onde estão também todas as nomenclaturas utilizadas neste problema.

Durante o terceiro capítulo a PLR é tratada com algum detalhe. Neste capítulo pode-se encontrar uma breve introdução aos fundamentos da PLR e aos aspectos relacionados com o desenvolvimento de aplicações recorrendo à tecnologia das restrições com domínios finitos. Os conceitos gerais relacionados com esta

(21)

5 tecnologia são aí introduzidos. Segue-se a caracterização dos problemas de satisfação de restrições, como ponto de partida para a descrição do paradigma da PLR com domínios finitos. Como suporte para os assuntos tratados nos capítulos seguintes, a descrição da PLR com domínios finitos inclui a especificação formal de uma linguagem genérica que permite especificar os problemas segundo o paradigma da PLR.

O quarto capítulo descreve-se a implementação do problema com recurso à plataforma ECLiPSe. É realizada uma introdução à plataforma onde se pode apreender as suas funcionalidades. De seguida é descrito todo o modelo de programação implementado para dar resposta ao problema do EPEE, onde se destacam o levantamento de variáveis e domínios, a implementação das restrições, a aplicação da função de optimização e a abordagem à pesquisa e optimização das soluções.

No quinto capítulo apresentam-se os diversos resultados da resolução dos casos práticos de 4 e 38 unidades de produção de energia eléctrica através da aplicação desenvolvida. Efectuam-se também análises aos valores encontrados e tecem-se considerações sobre as estratégias de optimização.

Por último, no sexto capítulo, resumem-se as principais conclusões da presente dissertação, salientando os tópicos mais importantes a reter. Termina-se com perspectivas de desenvolvimentos futuros na continuidade deste trabalho.

(22)
(23)

7

2

O Problema do Escalonamento da

Produção da Energia Eléctrica

2.1 Abordagem Conceptual ... 8

2.2 Características Gerais do Problema... 9

2.2.1 Os Custos ... 11 2.2.2 As Restrições ... 13

(24)

2.1

Abordagem Conceptual

O Problema do Escalonamento da Produção de Energia Eléctrica (EPEE) considerado nesta tese é um problema de optimização combinatorial. O seu principal objectivo é o de minimizar o custo total da produção de electricidade, satisfazendo sempre a procura de energia do sistema, através do escalonamento dos grupos geradores sujeitos a várias restrições. Estes grupos são escalonados dentro do Sistema de Energia Eléctrica ao longo de um determinado horizonte temporal , durante o qual estas unidades podem assumir o estado de ligadas (1) ou desligadas (0) em cada período unitário de tempo. Os métodos tradicionais de resolução do problema do EPEE são: Listas de Prioridades, Relaxamento de Lagrange, redes neuronais, programação dinâmica, algoritmos genéricos, ect. [26].

Neste trabalho o custo de produção podem dividir-se em duas categorias: custos de combustível e custos de transição. Os custos de combustível dependem não só da quantidade de energia a ser gerada pelas unidades mas também dos estados dessas mesmas unidades em determinada hora. Os custos de transição surgem quando os estados das unidades se alteram. Estes custos dependem do tempo que certa unidade esteve ligada ou desligada dividindo-se em custos de arranque ou de paragem [26].

De todas as restrições que estão implícitas no problema do EPEE, as restrições da procura são as mais comuns e as mais importantes. As restrições de procura (ou demanda) devem garantir que a energia total fornecida pelo sistema a qualquer hora terá que ser superior à demanda total das cargas. As restrições de produção de energia definem assim os limites superiores e inferiores de produção de energia de cada unidade. Estas restrições estão directamente relacionadas com a capacidade de produção de cada grupo gerador. Outras restrições comuns neste tipo de problema garantem o tempo mínimo de arranque e de paragem, a reserva girante, grupos obrigatórios, restrições de pessoal, ect. [26].

(25)

9

2.2

Características Gerais do Problema

O conjunto de decisões que leva à atribuição de uma certa carga a cada uma das unidades de produção do SEE começa pela definição das unidades que, num determinado período, estarão em funcionamento. Esta fase é necessária visto que cada grupo gerador, mesmo na potência mínima, fica com um custo associado que é constante e não desprezável, não sendo económico manter em funcionamento um número excessivo de unidades [29].

A conhecida variação diária do diagrama de cargas obriga à necessidade de ir ligando e desligando grupos ao longo do dia, o que envolve custos associados à ligação e ao corte, existindo também diversas restrições técnicas que limitam as opções de quem toma as decisões (tempos de arranque, tempos mínimos de paragem, ect.).

(26)

Trata-se portanto de um problema impossível de ser resolvido no momento, sendo normalmente projectada a sua resolução para a semana seguinte, com intervalos de uma hora. É necessário também prever uma folga, designada por reserva girante, para ter em conta os aumentos inesperados de carga ou simplesmente para garantir o serviço em caso de avaria de alguma unidade.

Todos os aspectos acima referidos têm que ser tidos em conta no problema do escalonamento dos grupos (muitas vezes designado por unit commitment), onde se faz também o pré-despacho, a tal antecipação grosseira da carga a atribuir a cada grupo, tomando em conta os custos de funcionamento associados ao consumo de combustível.

É importante mencionar também a presença dos grupos hídricos no SEE nacional, uma vez que a abordagem que se realiza nesta dissertação corresponde unicamente aos grupos térmicos. A coordenação entre os grupos hídricos e térmicos normalmente funciona realizando um pré-despacho separado para o subsistema hídrico, onde são tidas em conta as previsões de afluências e as restrições próprias dos sistemas hidroeléctricos. São então fixados valores finais para os volumes armazenados nas albufeiras, decorrentes de estudos energéticos a longo prazo. A natureza dinâmica do problema geral de escalonamento, e as relações entre os subsistemas térmico e hídrico, particularmente no que respeita à bombagem, têm levado, no entanto, a uma tentativa de integração em modelos completos (coordenação hidro-térmica) [27].

(27)

11

2.2.1

Os Custos

Os custos associados aos grupos térmicos dependem, obviamente do tipo de máquina primária (turbina a vapor, turbina a gás, grupo diesel) e de outros aspectos, como o processo de geração do vapor (fuel-oil, carvão, nuclear), do reaproveitamento de outras formas de energia ou até mesmo da idade da máquina, o que implica uma análise caso a caso em problemas reais.

Como podemos observar na Figura 2, os grupos térmicos ainda são uma fonte de energia muito considerável no SEE Português.

Figura 2.2 – Energia Emitida por central em 2009 [28]

Observemos então os diferentes custos associados aos grupos térmicos [27]: Custo de Funcionamento: é o custo associado ao consumo de

combustível para a produção de energia, logicamente se a produção de energia aumentar numa unidade, este custo aumentará em igual proporcionalidade, como se demonstra na Figura 3. Pode-se reparar também que a função custo de funcionamento inclui o ponto (0,0), que corresponde ao estado de paragem da unidade, o que torna a função descontínua.

(28)

Figura 2.3 – Função custo de funcionamento

Custo de Arranque: custo independente da potência que possa a vir ser produzida pelos grupos. Este custo está associado ao arranque que pode ser a frio (cooling) ou a quente (banking), e no caso das centrais com turbina a vapor depende do tempo de paragem anterior e do facto de se manterem ou não as caldeiras quentes durante o período de paragem. No caso dos grupos diesel, o arranque pode incluir patamares de aquecimento intermédio ou até mesmo mudança de combustível, daí não ser simples descrever o custo de arranque nestes casos.

Figura 2.4 – Custos de arranque de centrais com turbina a vapor

(29)

13

Custo de Paragem: os custos de paragem estão associados às condições necessárias para um arranque a quente (banquing), estas condições reflectem-se em custos que se denominam de custos de paragem.

2.2.2

As Restrições

A restrição fundamental a considerar neste problema de EPEE é, como habitualmente nos SEE, a satisfação da carga, ou seja, a potência total disponível (soma das potências máximas de todos os grupos escalados) tem que ser superior à carga total prevista, em todos os intervalos de tempo [27]. Como se disse anteriormente, a diferença deverá corresponder à reserva girante definida para cada intervalo, de acordo com um dos princípios seguintes:

- Valor igual a uma percentagem da carga prevista para o intervalo; - Valor igual à potência máxima da maior unidade em funcionamento;

- Reserva que garanta um risco de perda de carga inferior a um certo valor, tendo em conta as probabilidades de avaria dos grupos.

Os grupos térmicos, sobretudo aqueles em que a máquina primária é a turbina a vapor, não podem ser ligados de forma produzirem imediatamente a potência que se pretende, nem podem deslastrar imediatamente a carga que lhes está atribuída.

Há também motivos técnicos que excluem o funcionamento ou paragem durante períodos curtos. De forma abreviada, as restrições associadas são os que se apresentam a seguir:

Tempo de arranque: para cada tipo de grupo, define-se um tempo mínimo de arranque que depende do tempo de paragem anterior e está relacionado com a necessidade de aquecer caldeiras, obter pressões de vapor e outros condicionalismos técnicos. Em consequência, a decisão de utilizar o grupo pode ter de ser tomada muito antes da hora a que a potência respectiva vai ser necessária.

(30)

Tempos mínimos de paragem e de funcionamento: por razões fundamentalmente de ordem técnica, os períodos de paragem e funcionamento não devem ser demasiado 4 reduzidos. Valores mínimos típicos para grupos com turbinas a vapor são 2 a 12 horas para o tempo de paragem e 1 a 8 horas para o tempo de funcionamento. Os restantes tipos de máquinas apresentam tempos mínimos menores.

Limites de produção: valor máximo e mínimo da potência produzida pelo grupo, fixados por razões técnicas e económicas. Por exemplo, nos grupos Diesel, a produção a potências baixas é economicamente inviável, embora fosse possível tecnicamente (usando óleo diesel em vez de fuel-oil). Os valores típicos da potência mínima para grupos com turbina a vapor são 40 a 70% da potência máxima. Estes limites também se utilizam no despacho.

Taxas máximas de tomada e deslastre de carga: não sendo possíveis variações muito rápidas da potência produzida pelos grupos, definem-se taxas máximas de tomada e deslastre de carga (MW/h) que condicionam as alterações de produção em intervalos de tempo sucessivos. No pré-despacho, estes limites têm sobretudo influência nos períodos iniciais e finais de funcionamento.

Finalmente, uma referência a duas restrições um pouco diferentes, mas que também podem ter que ser consideradas:

Restrições sobre Recursos Humanos (materiais): numa central com diversos grupos produtores, podem surgir restrições ao arranque simultâneo de vários grupos por não existir recursos humanos suficientes para efectuar todas as operações necessárias. Esta restrição tem diminuído de importância devido à progressiva automatização do processo de arranque.

(31)

15

Grupos obrigatórios (must-run): por diversas razões, podem existir indicações de que certos grupos têm que estar obrigatoriamente ligados em certos períodos do horizonte de escalonamento. Este tipo de restrições pode aumentar o custo global, mas favorece a rapidez da resolução do problema, por diminuir o número de variáveis inteiras.

Os aspectos focados, nomeadamente a questão dos tempos de arranque, mostram que o pré-despacho tem uma escala temporal completamente diferente da do despacho, possuindo, além disso, muito maior incerteza na definição das cargas e maior complexidade na formulação matemática, dada a presença de variáveis inteiras (ter ou não ligado cada grupo em cada período) e de funções custo não convexas.

(32)

2.3

Formalização do Problema

Considerando as características apresentadas anteriormente podemos definir formalmente o Problema do EPEE. Esta formalização será feita numa linguagem próxima da linguagem matemática e servirá de base ao desenvolvimento do modelo baseado em restrições utilizado nos capítulos seguintes.

Nomenclaturas do Problema

C(U) Função objectivo do custo total

FCi(Pij) Função do custo do combustível da unidade i

Ai, Bi, Ci Coeficientes de custo de combustível constantes da unidade i

Pij Energia produzida pela unidade i no período j

SCi Custo de arranque da unidade i

SDi Custo de paragem da unidade i

Uij Estado ligado/desligado da unidade i à hora j, Uij ∈ {0,1}

U Matriz de decisão dos elementos Uij

N Número de unidades térmicas produtoras

T Número de horas no período de estudo

Dj Demanda do sistema de cargas à hora j

Pimax Capacidade máxima de produção de energia da unidade i

(33)

17

Psrj

Reserva do sistema, que consiste na maior capacidade de produção entre as unidades escaladas à hora j

MDTi Tempo mínimo de paragem da unidade i

MUTi Tempo mínimo de arranque da unidade i

jSi Hora a que cada unidade i arrancou

jDi Hora a que cada unidade i parou

A Função Custo Total (FCT), que será a função objectivo deste problema do EPEE, pode então ser formulada matematicamente através da seguinte expressão:

Função Objectivo

N T

C (U) = ∑ ∑ ( UijFCi (Pij) + SCiUij(1 - Uij-1) + SDi Uij-1(1 - Uij) ) i=1 j=1

Esta função irá reflectir o custo total dos grupos térmico, durante o período de estudo. Efectuando o somatório dos custos de combustível, custos de arranque e de paragen, de todas as unidades e em todos os períodos de tempo, obtém-se o valor monetário pelo qual se irá avaliar a solução.

Função do custo do combustível

A função do custo do combustível é um polinómio de segunda ordem onde se expressam os coeficientes relativos a cada unidade.

(34)

Restrições

Atendendo a toda a envolvente do problema, as restrições que deverão ser tidas em conta para o Problema do Escalonamento da Produção da Energia Eléctrica nos grupos térmicos são as seguintes:

Equilíbrio de Cargas

T

∑ (Uij Pij) = Dj j=1

Limites de produção dos geradores

Pimin ≤Pij ≤PimaxReserva Girante T Dj + Psrj ≤∑ (Uij Pimax) j=1 T ∑ (Uij Pimin)≤ Dj j=1

Tempo Mínimo de Arranque

j-1

Uij = 1 para ∑ Uij < MUTi j=jsi

Tempo Mínimo de Paragem

j-1

Uij = 0 para ∑ (1 - Uij ) < MDTi j=jDi

Existem outras restrições que se utilizam diariamente como a restrição das unidades de produção contínua ou restrições de emissões poluentes, que não irão ser consideradas nesta dissertação. Estas restrições apresentadas é que realmente traduzem o Problema do EPEE do seu ponto de vista eléctrico.

(35)
(36)
(37)

21

3

Programação Lógica por Restrições

3.1 Introdução ... 22

3.2 Conceitos Gerais sobre Restrições ... 23

3.2.1 Programação com Restrições ... 24 3.2.2 Programação Lógica e Programação com Restrições ... 25 3.2.3 Algumas Definições ... 26 3.2.4 Domínios Computacionais da Programação com Restrições ... 27 3.2.5 Meta-Interpretadores de Restrições ... 28

3.3 Problemas de Satisfação de Restrições ... 29

3.3.1 Técnicas de Consistência e Propagação de Restrições... 30 3.3.2 Ordenação de Valores e Variáveis ... 32

3.4 Programação Lógica por Restrições com Domínios Finitos ... 35

3.4.1 Domínio Finitos ... 35 3.4.2 Restrições ... 36 3.4.3 Pesquisa e Optimização ... 42

(38)

3.1

Introdução

A necessidade da implementação de novos métodos de resolução do problema do Escalonamento da Produção da Energia Eléctrica é real. Existe cada vez mais demanda por rapidez e optimização neste problema, que de dia para dia se torna cada vez mais complexo. A entrada nas redes eléctricas das energias renováveis; o constante aumento de grupos produtores de energia eléctrica; a procura cada vez maior de energia; a velocidade a que hoje em dia o mundo gira, sem se quer se ponderar como seria se existisse um blackout de alguns dias, são factores que fazem do EPEE um problema com características únicas e tão importante para cada um de nós. Através desta descrição podemos imaginar o impacto à escala mundial que este problema tem tido com as melhorias sucessivas na sua resolução, tanto a nível de tempos de optimização como a nível da própria solução final. Desta forma torna-se mandatório explorar todos os domínios programacionais, com todas as heurísticas possíveis de forma a se encontrar a melhor resolução possível. Com os constantes avanços a nível da tecnologia informática os métodos descobertos à 10 anos poderão hoje em dia ter futuro devido à elevada capacidade de processamento dos computadores de hoje em dia. Por esse motivo não podemos descurar os estudos realizados em torno de uma ferramenta tão poderosa para a resolução de problemas de escalonamento como é Programação Lógica por Restrições.

Ao longo das últimas duas décadas tem vindo a afirmar-se um novo paradigma da programação com imenso potencial, baseada na programação em lógica e na computação baseada em restrições. Este novo paradigma, conhecido por Programação Lógica por Restrições (PLR), tem vindo a conhecer uma aceitação crescente por parte das comunidades de investigadores e de utilizadores. Proporciona uma forma elegante, abstracta e declarativa para especificar problemas. Os sistemas baseados em restrições apresentam uma forte componente teórica, não deixando de ser apelativos aos sectores que requerem desenvolvimento tecnológico por esse facto [32].

A PLR corporiza um paradigma computacional que combina a natureza declarativa da programação em lógica com a eficiência dos métodos de resolução de problemas que recorrem a restrições. Este paradigma da programação tem-se

(39)

23 mostrado eficaz na resolução de problemas que são intratáveis quando se recorrem a outras técnicas. Entre esses problemas encontram-se diversas classes de problemas de natureza combinatória, tais como os problemas de escalonamento, de planeamento e de atribuição de recursos. É de notar que uma das vantagens mais significativas deste modelo passa por oferecer um menor tempo de desenvolvimento de programas e uma eficiência comparável à das linguagens imperativas [32]. Em [2] afirma-se que a programação com restrições representa a abordagem mais aproximada, alguma vez efectuada, ao santo Graal da programação, em que um utilizador declara o problema e o computador soluciona-o.

Tendo em conta o Problema do EPEE e considerando a abordagem seguida para o solucionar, pretende-se neste capítulo fornecer uma visão global da PLR em termos de metodologia de resolução de problemas, a partir de restrições aplicadas a domínios finitos.

3.2

Conceitos Gerais sobre Restrições

A problemática dos sistemas que têm o seu comportamento condicionado pela existência de restrições surge naturalmente em muitas áreas da actividade humana. São meios naturais de expressão para formalizar as regularidades e dependências que estão na base dos mundos computacionais e físicos, bem como nas suas abstracções matemáticas. Na actividade humana as restrições constituem um ponto-chave do senso comum na condução do raciocínio. Frases como “eu posso estar lá amanhã das quatro às seis horas da tarde” englobam uma restrição típica usada para o planeamento de tempo. Dependendo do domínio do problema, poder-se-ão encontrar outros exemplos de restrições: “a soma dos ângulos de um triângulo é 180 graus”; “a soma das correntes que fluem num nó é igual a zero”; e “uma resistência num circuito eléctrico obedece à lei de Ohm” [32].

Intuitivamente, uma restrição pode ser considerada como uma condicionante num espaço de possibilidades [3]. As restrições matemáticas especificam de uma forma clara e precisa as relações entre diversos parâmetros desconhecidos (variáveis), cada um tomando um dado valor no domínio considerado. As restrições restringem os valores possíveis que as variáveis podem tomar e representam alguma informação

(40)

(parcial) sobre as variáveis em jogo. Estas apresentam algumas propriedades deveras interessantes, e expressas no texto que se segue:

• Como se referiu, as restrições traduzem informação parcial acerca de uma dada questão ou problema, uma vez que de uma restrição, por si só, não é de esperar que se determine o valor das variáveis do problema;

• As restrições são aditivas. A uma restrição r1(e.g. X+Y Z) pode ser adicionada

uma outra restrição r2 (e.g. X+Y Z). A ordem segundo a qual as restrições são

impostas é irrelevante, o que está em jogo é que no final à conjunção dos termos que denotam as restrições seja atribuído o valor verdadeiro;

• As restrições raramente são independentes; ou seja, geralmente partilham variáveis. A colocação das restrições r1e r2resulta na obtenção da restrição X + Y = Z;

• As restrições são ainda não direccionais: Considerando a restrição X + Y = Z, esta pode ser usada para determinar a sua forma equivalente em X (X = Z - Y) ou em

Y (Y = Z - X); e

• Finalmente, as restrições são de natureza declarativa pelo facto de apenas denotarem as relações que devem ser asseguradas entre variáveis sem especificar um procedimento computacional para estabelecer esse relacionamento.

3.2.1

Programação com Restrições

A Programação com Restrições (PR) passa pelo estudo de sistemas computacionais baseados em restrições. O princípio base em que assenta a PR, e a sua utilização na resolução de problemas, passa pela indicação das restrições para o problema em causa e, consequentemente, por se encontrarem as soluções que satisfaçam essas condicionantes. Os primeiros desenvolvimentos que conduziram à PR podem ser encontrados no domínio da inteligência artificial (IA) e remontam aos anos sessenta e setenta [4], [5], [6], [7]. Estes avanços tecnológicos focalizavam-se na representação e manipulação explícita de restrições em sistemas computacionais. No entanto, apenas nas décadas de 80 e 90 se desenvolveu uma crescente

(41)

25 consciencialização de que estas ideias podiam fornecer a base para uma abordagem poderosa à temática da programação, modelação e resolução de problemas [8]. Por outro lado foram desenvolvidos esforços para explorar estes pressupostos e unificá-los numa única estrutura conceptual [9].

Actualmente, nota-se o aparecimento de duas correntes, pese embora o facto de serem complementares, para o tratamento da PR: A satisfação de restrições; A resolução de restrições. Ambas partilham a mesma terminologia, mas possuem origens distintas e socorrem-se de tecnologias diferentes de resolução de problemas. A satisfação de restrições lida com os problemas definidos sobre domínios de valores discretos, do qual fazem parte os domínios finitos, sendo actualmente a mais usada na maioria das aplicações. A resolução de restrições possui todas as propriedades base da PR. No entanto, neste caso as restrições são definidas (na sua maior parte) sobre domínios infinitos, ou mais complexos [32].

3.2.2

Programação Lógica e Programação com

Restrições

A Programação Lógica corporiza um paradigma de programação baseado num subconjunto da lógica de primeira ordem. Os programas em lógica são de natureza declarativa, dado que indicam os relacionamentos lógicos necessários para resolver um dado problema. O sistema subjacente é responsável por efectuar os cálculos lógicos que permitem que a computação ocorra. Um sistema baseado em lógica usa um conjunto de regras fornecidas pelo programador (programa) para responder às perguntas que lhe são endereçadas. Em geral, os programas em lógica podem ser usados para comprovar uma dada afirmação, ou para determinar qual o conjunto de instanciações das variáveis que faz com que a uma dada pergunta seja atribuído o valor de verdade verdadeiro. A propriedade declarativa das linguagens de programação em lógica não só é apelativa para os programadores, como facilita a existência de uma semântica clara e bem definida, com uma base teórica bem fundamentada.

As restrições surgem como a extensão natural à estrutura da programação em lógica, ao partilharem muitas das propriedades acima discutidas. Em [9] mostra-se que o Prolog pode ser visto como um exemplo de um esquema muito particular de PLR. De

(42)

facto, a Programação Lógica é baseada num paradigma computacional de natureza declarativa em que um programa é uma teoria lógica e a cada passo computacional apresenta uma solução para um sistema de equações de termos lógicos por intermédio do algoritmo de unificação. A sua natureza declarativa faz com que a Programação Lógica esteja próxima do princípio base da programação com restrições, em que se declara o que tem de ser satisfeito mas não como. Por outro lado, o processo de pesquisa de soluções em profundidade com retrocesso é em tudo similar aos procedimentos de retrocesso padrão usados para solucionar problemas com restrições. De qualquer modo, interessa fundamentalmente observar que as equações de termos lógicos são restrições de um tipo específico e que o algoritmo de unificação corporiza um tipo especial de procedimentos para a resolução deste tipo de restrições [32].

Em PLR a lógica é usada para especificar um conjunto de possibilidades para resolução do problema que são exploradas por intermédio de um simples método de pesquisa, enquanto que as restrições são usadas para minimizar o espaço de soluções pela eliminação em avanço de vias alternativas para a resolução do problema que no futuro se irão mostrar inconsequentes. O programador de aplicações pode declarar os factores que têm de ser tidos em conta em qualquer solução (as restrições), declarar as possibilidades (o programa em lógica) e usar o sistema para combinar o raciocínio e a pesquisa. As restrições são usadas para restringir e guiar a pesquisa [32].

3.2.3

Algumas Definições

As definições aqui apresentadas não sendo necessariamente definições com carácter universal, servem, contudo, para estabelecer conceitos relacionados com a PR em geral.

• Uma interpretação consiste na atribuição a cada variável presente numa restrição de um valor do seu domínio

(e.g. θ = {X→3, Y→4, Z→2} ⇒ θ (X + 2Y) = (3+2×4)=11);

• Diz-se que uma interpretação satisfaz uma restrição se a essa restrição se puder associar o valor de verdade verdadeiro, ou seja, a restrição é verdadeira nessa interpretação. Uma restrição pode ser satisfeita se existir pelo menos uma

(43)

27 interpretação que a satisfaça (e.g. X ≤ 3 ∧ Y = X+1). Pelo contrário, uma restrição não pode ser satisfeita se não existir pelo menos uma interpretação que a satisfaça (e.g. X ≤ 3 ∧ Y = X+1 ∧ Y ≥ 6 );

• Uma solução para um problema é uma interpretação que satisfaz todas as restrições do problema (e.g. θ (X ≥ 3 ∧ Y = X + 1) = (3 ≥ 3 ∧ 4 = 3 + 1) =

verdadeiro);

• Duas restrições dizem-se equivalentes se estas tiverem o mesmo conjunto de soluções, ou seja, duas restrições podem representar a mesma solução

X > 0 ➳ 0 < X

X = 1 ∧ Y = 2 ➳ Y = 2 ∧ X = 1

X = Y + 1 ∧ Y ≥ 2 ➳ X = Y + 1 ∧ X ≥ 3

• Um conjunto de restrições σ, ou armazém de restrições, implica uma restrição r

se para cada interpretação em que todas as restrições σ são verdadeiras, r é também verdadeira;

• Um conjunto de restrições σ é consistente com uma restrição r se existe pelo menos uma interpretação em que σ é verdadeiro e r também é verdadeira;

• σ contradiz uma restrição r se não existe nenhuma interpretação em que σ é verdadeiro e r é também verdadeira.

3.2.4

Domínios Computacionais da Programação

com Restrições

As linguagens de Programação Lógica tradicionais possuem o seu domínio assente em termos (estruturas) não interpretados baseados em constantes e símbolos funcionais. A linguagem de programação Prolog é um exemplo destas linguagens sendo, ao mesmo tempo, a mais representativa em termos de utilização. O Prolog trata a equação X - 3 = Y +5 considerando que o termo X-3 não igual ao termo Y+5, sendo incapaz de interpretar cada um dos termos. A PLR amplia a Programação Lógica de modo a oferecer um ou mais domínios interpretados de restrições. A PLR é

(44)

parametrizada por um ou mais domínios de discurso, sobre os quais assenta a resolução das restrições. Muitas das linguagens de PLR baseiam-se em diversos domínios, destacando-se o domínio dos booleanos, dos finitos, e dos reais. Outros exemplos incluem listas, conjuntos finitos e árvores [32].

As restrições booleanas são tratadas por meta-interpretadores de restrições especializados, podendo, no entanto, ser tratadas como um caso particular das restrições associadas a domínios finitos para esse problema. Neste último caso as variáveis apenas podem tomar dois valores inteiros: 0 (falso) ou 1 (verdadeiro);

As restrições sobre domínios finitos são utilizadas em muitas áreas do conhecimento. Para satisfação destas restrições usa-se uma combinação de técnicas para a preservação de consistência, propagação de valores e pesquisa com retrocesso. Cada variável possui associado um conjunto finito de valores inteiros, ao qual é dado o nome de domínio da variável. Os valores do domínio que levam a inconsistências são removidos do domínio das variáveis durante a fase de propagação, enquanto que pela pesquisa se tenta instanciar cada variável do problema;

As restrições sobre intervalos reais são o equivalente das consideradas para os domínios finitos, só que aqui trabalha-se com valores reais em vez de valores inteiros. As técnicas de remoção de inconsistências são similares às técnicas usadas para os domínios finitos, ou então são baseadas em técnicas matemáticas de diferenciação automática ou em séries de Taylor;

As restrições lineares denotam restrições construídas a partir de variáveis cujo domínio é dado pelo conjunto dos números reais. Para este tipo de restrições têm sido implementados meta-interpretadores de restrições bastante eficientes que utilizam o algoritmo Simplex como ponto de partida.

3.2.5

Meta-Interpretadores de Restrições

Um dos aspectos que permite distinguir os diferentes meta-interpretadores de restrições relaciona-se com os domínios do conhecimento em que se desenvolvem os processos computacionais e que definem os objectos usados para expressar as

(45)

29 restrições. Outro aspecto deste problema relaciona-se com o volume de restrições a propagar e no esforço computacional colocado na propagação. Este último aspecto permite classificar os meta-interpretadores de restrições em completos e incompletos, cujas características são expressas no texto que se segue.

Os meta-interpretadores de restrições, do tipo completo, podem, a cada passo computacional, esperar pela satisfação de um qualquer conjunto de restrições, o que é uma propriedade muito desejável. Infelizmente, a satisfação de um conjunto de restrições para um dado domínio pode ter um custo excessivo ou pode mesmo não se verificar. Esta característica faz com que os meta-interpretadores do tipo completo sejam quase só usados em domínios bem específicos, sendo as restrições dadas por expressões lineares estruturadas ou em meta-interpretadores específicos. Por outro lado, os meta-interpretadores de restrições do tipo incompleto podem ser definidos para os mais variados domínios do conhecimento, podendo, no entanto, diferir na quantidade de restrições e no esforço computacional dispensado à sua propagação [32].

3.3

Problemas de Satisfação de Restrições

A resolução de problemas em termos do paradigma da PLR com domínios finitos faz uso de uma combinação de técnicas de verificação de consistência e propagação de restrições, ao que se associa um algoritmo de pesquisa com retrocesso. Estas técnicas de consistência e propagação foram inicialmente desenvolvidas para a resolução dos designados Problemas de Satisfação de Restrições (PSR). Um PSR caracteriza-se por possuir um conjunto X = {x1, x2, ... , xn} de variáveis, cada uma com o seu domínio

D = {d1, d2, ... , dn} de valores possíveis e um conjunto R = {r1, r2, ... , rn } de

restrições que condicionam os valores que as variáveis podem tomar em simultâneo. Estas variáveis são normalmente designadas por variáveis de domínio e são representadas pelo par <xi, di >, onde xi é o símbolo que identifica a variável i e di é um conjunto finito designado por domínio de i. Por seu lado, cada restrição é dada pela extensão de um predicado r(x1, x2, ... , xk) em que os k argumentos denotam as

variáveis de domínio envolvidas na restrição [32].

É uma prática comum nos PSR restringir a discussão a restrições binárias com domínios finitos. Pode ser demonstrado que qualquer restrição envolvendo n variáveis,

(46)

n > 2, pode sempre ser representada por um conjunto de restrições binárias [10]. Os domínios das variáveis são usualmente dados por restrições unárias. Um PSR com restrições binárias pode ser representado por um grafo em que cada nó é uma variável e cada restrição é um ramo que liga as variáveis envolvidas [6].

3.3.1

Técnicas de Consistência e Propagação de

Restrições

A resolução de PSR pode ser efectuada de forma simples por via de uma exploração exaustiva do espaço de soluções. Este método corporiza a essência do algoritmo gerar e testar e passa, basicamente, por instanciar as variáveis do problema com valores do seu domínio, seguindo-se então o teste de verificação da consistência das restrições. Sendo um procedimento pouco “inteligente” e ineficiente, não é usado na prática. O algoritmo que implementa uma pesquisa com retrocesso é uma outra forma de efectuar uma busca sistemática [11]. Este opera de uma forma incremental, ao estender, passo a passo, uma solução parcial para uma global, até se obter a solução desejada, (i.e., uma solução parcial é obtida pela atribuição de um valor do domínio a uma variável ainda não instanciada, valor este consistente com os valores já atribuídos a outras variáveis da solução parcial corrente). Embora este método apresente melhor desempenho que o anterior, a complexidade do algoritmo que o corporiza aconselha a que os problemas a que se aplique não sejam de grandes dimensões.

Uma outra abordagem para atacar os PSR passa pela remoção dos valores dos domínios das variáveis de decisão que levam a inconsistências, até se obter uma solução. Estes métodos, conhecidos por técnicas de consistência, são determinísticos, ao contrário dos algoritmos que efectuam busca sistemática. As técnicas de verificação de consistência vão desde a simples consistência de nó, passando pela muito popular consistência de arco, até à mais complexa e computacionalmente pesada consistência de caminho [10], [12]. Estas técnicas são derivadas das teorias sobre grafos, pelo que é normal que um PSR seja muitas vezes transformado num PSR binário.

A técnica de verificação de consistência mais simples é conhecida como consistência de nó. O nó que representa a variável x no grafo de restrições é consistente se para todos os valores do domínio de x, todas as restrições unárias em x são satisfeitas. Se o

(47)

31 domínio D da variável x contém um valor a que não satisfaz a restrição unária em x

então a instanciação de x com a não ocorrerá. Consequentemente, as inconsistências de nó são eliminadas simplesmente pela remoção dos valores do domínio D de cada variável x que não satisfaçam as restrições unárias em x. Se o grafo de restrições é consistente de nó, então as restrições unárias podem ser eliminadas, dado que estão à partida satisfeitas.

Figura 3.1: O grafo possui todos os arcos consistentes, mas não existe nenhuma solução que satisfaça todas as restrições

A consistência de arco denota a técnica de consistência de maior utilização. Um arco (x

i, xj ) é consistente se para todos os valores a do domínio de xi existem valores b no domínio de x

j de forma a que xi=a e xj=b sejam permitidos pela restrição binária entre

x

i e xj. A consistência de arco é direccional, ou seja, o facto de o arco (xi, xj) ser consistente não significa que o arco (x

j, xi) seja também consistente. Existem diversos algoritmos para o tratamento da consistência de arco. Os mais frequentemente utilizados são conhecidos por AC3 e AC4 [10]. Embora tanto as técnicas de consistência como os algoritmos de pesquisa sistemática possam ser usados separadamente para solucionar de forma completa um PSR, em situações práticas utiliza-se uma combinação das duas abordagens. Com a integração de algoritmos de pesquisa sistemática com técnicas de consistência, é possível obter algoritmos de satisfação de restrições mais eficientes. Deste modo o algoritmo de pesquisa com retrocesso é modificado pela introdução de técnicas de verificação de consistência baseadas na consistência de arco conhecidas por verificação para diante, ver à frente e ver atrás1.

(48)

A Figura 3-2 mostra quais as restrições que são verificadas quando estas técnicas de propagação são aplicadas.

Figura 3.2: Comparação das técnicas de propagação

Melhorar a qualidade de propagação de restrições em cada nó resulta numa árvore de pesquisa que contém menos nós, embora à custa dum maior esforço computacional. No extremo, um elevado grau de verificação de consistência de arco e de caminho para um dado problema pode eliminar completamente a necessidade de pesquisa, mas costuma normalmente ser uma técnica muito mais pesada que o retrocesso simples. Deste modo, em situações reais, é frequente usar apenas a técnica de verificação para diante com o retrocesso simples [32].

3.3.2

Ordenação de Valores e Variáveis

A ordem como as variáveis e os valores são considerados para instanciação tem um impacto considerável no desempenho dos algoritmos de pesquisa na PR. A ordenação de variáveis e valores é determinada usualmente por métodos que seguem diversas heurísticas. Estes diferentes métodos de ordenação são agrupados em dois grandes grupos: ordenação estática, em que a ordem da variáveis (ou valores) é especificada antes da pesquisa começar, e não se altera durante o processo de pesquisa;

(49)

33 e ordenação dinâmica, em que a escolha da próxima variável (ou valor) depende em qualquer momento do estado corrente da pesquisa.

A ordenação dinâmica não pode ser usada por todos os algoritmos de pesquisa. O algoritmo de retrocesso simples constitui um exemplo em que esta situação se verifica, e tal deve-se ao facto de não existir informação extra durante a pesquisa que possa ser usada para efectuar uma escolha diferente face à ordem inicial. No entanto, com a verificação para diante, cada estado possui o domínio das variáveis tal como foram truncados pelo conjunto de instanciações nesse estado, e assim é possível basear a escolha da próxima variável nessa informação.

Ordenação de Variáveis

Diversas heurísticas têm sido desenvolvidas para a ordem de selecção de variáveis. A mais comum é baseada no princípio “falhar-primeiro”2. Este princípio pode ser melhor entendido considerando a seguinte expressão “para ter sucesso, tentar primeiro onde é mais provável falhar”. Com isto pretende-se seleccionar em primeiro lugar a variável que possui o menor número de alternativas possíveis. Assim, a ordem de instanciação de variáveis é, em geral, diferente em diferentes ramificações da árvore de pesquisa, sendo determinada dinamicamente. Dado que não se pretende falhar na pesquisa de soluções, o princípio “falhar-primeiro” pode inicialmente parecer paradoxal. No entanto, o que se pretende é que, num dado momento, se a solução parcial não originar uma solução completa, então é melhor obter essa conclusão o mais cedo possível.

A Figura 7 mostra como a ordem de selecção de variáveis modifica a forma duma árvore de pesquisa. Se forem escolhidos em primeiro lugar valores para x

1 e só depois

valores para x

2, então a árvore de pesquisa tem uma dada forma particular. Se pelo

contrário forem escolhidos em primeiro lugar valores para x

2 e só depois para x1, então

obtém-se uma árvore de pesquisa com uma forma diferente. É possível, ainda, verificar se os domínios das variáveis possuem tamanhos diferentes, nesse caso a ordem de selecção de variáveis pode mudar o número de nós internos da árvore,

(50)

embora não o número das folhas. Para minimizar o número de nós, as variáveis que possuem os menores domínios devem ser tentadas em primeiro lugar.

Por vezes, quando as variáveis possuem o mesmo número de valores no seu domínio, é usada uma outra heurística para desempatar. Esta baseia-se também no princípio de lidar em primeiro lugar com os casos mais difíceis ao tratar em primeiro lugar a variável que participa no maior número de restrições [32].

Figura 3.3: Efeito da ordem de selecção das variáveis

Ordenação de Valores

Após a selecção da variável segue-se a escolha de um valor do seu domínio actual para a instanciar. Também a ordem por que é feita esta escolha de valores pode ter um impacto substancial no tempo despendido para encontrar uma solução. Note-se, no entanto, que se todo o espaço de soluções tem de ser explorado então a ordenação de valores é indiferente.

O uso de uma diferente ordenação de valores provoca um rearranjo das ramificações que emanam a partir de cada nó da árvore de pesquisa. Este rearranjo constitui uma vantagem se for possível assegurar que uma dada ramificação permite encontrar uma solução mais rapidamente do que outra. No melhor caso, se o problema possui pelo menos uma solução, e se o valor correcto para cada variável é seleccionado, então a solução é encontrada sem necessidade de retrocesso.

(51)

35 A Figura 3.4 mostra como a ordenação de valores do domínio pode mudar a ordem de visita às folhas relativamente à Figura 3.3.

Figura 3.4: Efeito da ordem de selecção de valores

3.4

Programação Lógica por Restrições com

Domínios Finitos

Os meta-interpretadores de PLR com domínios finitos pertencem à categoria dos meta-interpretadores de restrições incompletos e, deste modo, a enumeração das restrições não é normalmente suficiente para solucionar um problema. Um meta-interpretador de restrições deste tipo necessita de ser combinado com procedimentos que atribuam às variáveis de decisão valores admissíveis. A escolha de um bom procedimento deste tipo possui um enorme impacto no desempenho de um dado programa.

Nesta secção e nas seguintes usar-se-á a abreviatura PLR(DF) para referir genericamente a PLR com domínios finitos. Para além de se descrever as características e as facilidades que se podem encontrar nos meta-interpretadores de PLR(DF), esta secção também define parcialmente uma linguagem formal para a PLR(DF) [32].

3.4.1

Domínio Finitos

Tal como para as técnicas de verificação de consistência, um dos elementos básicos dos meta-interpretadores de PLR(DF) são as variáveis de domínio. Estas têm associado um conjunto finito de valores, normalmente numéricos, designado por domínio finito. Este conjunto finito é definido como um subconjunto dos números inteiros. A definição de uma variável de domínio recorre a uma restrição particular

(52)

usualmente designada por restrição de domínio. Esta consiste numa expressão na forma x D

x em que x é a variável e Dx é o seu domínio. A Tabela 9 mostra três formas possíveis para a especificação de domínios finitos.

Tabela 3.1: Diferentes formas de representação de domínios finitos.

3.4.2

Restrições

Para além da restrição de domínio, os meta-interpretadores PLR(DF) fornecem, em geral, diversos tipos de restrições. Estas podem agrupar-se em duas classes: as aritméticas e as simbólicas. Relativamente à classe das restrições simbólicas, encontram-se ainda as restrições baseadas em métodos sintácticos e as restrições baseadas em métodos semânticos. As primeiras são geralmente independentes do domínio enquanto que as outras não.

Restrições Aritméticas

As restrições aritméticas usam normalmente, e dependendo da implementação, métodos de propagação semelhantes ao ver à frente parcial. Em geral, estas restrições tratam termos lineares sob domínios finitos. Estes termos lineares possuem normalmente a forma t = a0 + a1 x1 + a2 x2 + ... + an xn .

Restrições Aritméticas Básicas

As restrições aritméticas básicas surgem sob forma de equações (t

1=t2), de

inequações (t

1<t2, t1>t2, t1≤t2 ou t1≥t2) ou sob a forma de desigualdades (t1≠t2). Os

termos t

1 e t2 são termos lineares de variáveis de domínio finito. Certos

meta-interpretadores de PLR(DF) permitem que as restrições possuam termos não lineares de um tipo particular. Estes termos não lineares apenas consideram produtos entre

(53)

37 duas variáveis e têm a forma t = a0 + a1 x1 y1+ a2 x2 x2+ ... + an xn yn. No entanto, o produto entre três ou mais variáveis pode sempre ser convertido em produtos entre duas variáveis recorrendo a variáveis auxiliares. Por exemplo, o produto t = xyz pode ser substituído por xa = t a = yz.

Conectivas Lógicas

Num linguagem de PLR(DF) típica, é usual encontrar um conjunto de conectivas lógicas que permitem combinar restrições aritméticas básicas de modo a especificar relações mais complexas. A Tabela 3-2 mostra um conjunto de cinco conectivas lógicas. De referir que r, r

1 e r2 são normalmente restrições aritméticas básicas.

Tabela 3.2: As diferentes conectivas lógicas que permitem formar restrições compostas.

Cardinalidade

O raciocínio do operador de cardinalidade tem mostrado ser capaz de substituir as conectivas lógicas, constituindo uma primitiva bastante poderosa [13]. A forma básica deste operador é #(l, L, u), onde L=[r

1, …, rk] é uma lista de restrições, l é limite inferior do número de restrições de L que têm de ser satisfeitas, e u é o limite superior do número de restrições de L que têm de ser satisfeitas.

Quando o operador não está disponível, é possível defini-lo considerando a conjunção de restrições (3-1) onde

representa conjunção de todos i.

Referencias

Documento similar

E) 5.ª fase: Reafirmação do sistema jurisdicional misto, porém com acen- tuada tendência para o predomínio da jurisdição constitucional concentra- da e a redução da aplicação

O meu percurso profissional até à atualidade – pois trabalho na área da programação e estratégia culturais – levaram-me a precisar que o meu enfoque

Não só, mas também no Estado de Goiás a intervenção no âmbito dos processos judiciais de curatela tem vindo a ganhar preponderância (principalmente a partir de 2015), como área de

Através da figura 9 é possível visualizar a comunicação do sistema e-LAFAC com as estações rádio base móveis e fixas, para a coleta dos dados e posterior armazenamento. no banco

Ela é responsável por 71% (228h) do trabalho no beneficiamento (320h), enquanto a contribuição dos demais se restringe especificamente no trabalho de produção da pamonha para

Na hipótese de o princípio da especialidade do fim constituir tão-somente uma manifestação da necessidade de respeito pelo fim das organizações, e não uma consequência

Além disso, ao longo da história, através da voz do narrador, vai emergindo a visão crítica e demolidora de Alexandre Herculano face às condutas da nobreza e do clero,

O discurso do rio Capibaribe traduz toda uma dialética em tono da criação literária uma vez que na semântica fundamental do seu discurso , partindo do mais concreto para