• Nenhum resultado encontrado

4 Solução do Problema

4.3 O Gerador de Instâncias

Para testar a dificuldade do PMMMLPOARE e comparar a qualidade das soluções geradas pelas abordagens propostas nas seções anteriores, é necessária uma quantidade de instâncias do problema suficiente para que seja possível fazer conclusões úteis. Infelizmente, a distribuidora local de energia não foi capaz de fornecer esta quantidade de instâncias, logo, um gerador de instâncias artificiais teve de ser criado para a condução dos testes. Este gerador cria instâncias de acordo com a formulação descrita no capítulo 2, com parâmetros que podem ser ajustados para criar instâncias de diferentes tamanhos e características.

O gerador criado recebe como parâmetros: • Y , o número de anos;

• A, o número de ações;

• R, o número de recursos ou orçamentos;

• α, o nível de correlação entre o custo e o lucro das ações.

O algoritmo de geração de instâncias é composto de três partes principais: A geração das ações, a geração dos orçamentos e metas anuais e a geração das dependências entre ações. Ao gerar as ações, o primeiro componente a ser criado é o valor da energia recuperada pela ação (va), seguido dos mercados anual (ua,y) e global (ma). Nesta parte também é criado o

custo da ação em cada orçamento (ca,r), e a curva de redução de perda de energia da ação,

que é simplesmente um vetor representando quanta perda de energia será evitada em cada ano após a ação ser executada. A segunda parte do algoritmo envolve a criação das metas anuais de redução de perdas (gy) e o orçamento anual para cada recurso (oy,r). A última parte gera

no algoritmo 4.3.

Algoritmo 4.3: Gerador de Instâncias

Entrada: Y , A, R, α Saída: Instância gerada

1 início 2 r← 0.10 3 para a = 1 a A faça: 4 va← RealAleatorio(1.0, 2.0) 5 para y = 1 a Y faça: 6 ua,y← InteiroAleatorio(0, 50) 7 fim 8 ma← 0.9 ∗ Soma(ua) 9 para r = 1 a R faça: 10 ca,r← RealAleatorio(1.0, 100.0) 11 fim 12 para y = 1 a Y faça: 13 Wy← RealAleatorio(0.0, 1.0) 14 fim 15 para y = 1 a Y faça: 16 Wy← Wy/Soma(Wy) 17 fim 18 para y = 1 a Y faça:

19 ea,y← ((1 − α) × ((2 × Soma(ca) + 10)/va) + (α × RealAleatorio(1.0, 100.0) ×

R)) ×Wy× (1 + r)y

20 fim

21 fim

22 para y = 1 a Y faça: 23 aux← 0.5 ∗ Soma(ey)/Y

24 gy← RealAleatorio(0.95 ∗ aux, 1.05 ∗ aux)

25 para r = 1 a R faça:

26 aux← 0.5 ∗ Soma(cy,r)/Y

27 oy,r← RealAleatorio(0.95 ∗ aux, 1.05 ∗ aux)

28 fim

29 fim

30 para i = 1 a A/10 faça: 31 GeraDependencia()

32 fim

33 fim

As linhas 3 a 21 mostram a criação das A ações. O valor da energia gerada é criado na linha 4 como um valor real entre 1 e 2. O mercado anual da ação é gerado na linha 6 como um inteiro aleatório entre 0 e 50 e o mercado global é criado na linha 8, como 90% da soma dos mercados anuais. O mercado global é criado um pouco abaixo da soma dos mercados anuais, pois se fosse igual ou maior a restrição de mercado global seria inútil, já que nunca seria atingida. Na linha 10, são criados os custos da ação em cada recurso. As linhas 12 a 17 constróem um vetor aleatório de tamanho Y onde a soma de todos os componentes é 1. Este

vetor é utilizado para criar a curva de redução de perdas na linha 19.

O total de perdas evitadas pela ação é criado em função de dois componentes: a soma dos custos da ação acrescida de um valor fixo e um número aleatório. O parâmetro de correlaçãoα

é utilizado para dosar quando de cada componente será utilizado na criação da curva. Quando for 0, somente o primeiro componente é utilizado, o que significa que a quantidade de energia recuperada, e consequentemente o lucro da ação, é fortemente correlacionada ao custo total da ação, ou seja, ações que consomem mais recursos recuperam mais energia. No outro extremo, quando o valor do parâmetro de correlação for 1, somente a segunda componente, aleatória, é utilizada, então o lucro da ação não tem relação com o custo da mesma. A influência e o significado desse fator de correlação são melhores explicados na seção 4.3.1. O total de perdas evitadas é então dividido pelos anos da ação, para gerar a Curva de Redução de Perdas, utilizando o vetor normalizado criado anteriormente.

Nas linhas 22 a 29, a meta de redução e orçamentos para cada recurso são criados, para cada ano. As metas anuais foram criadas como a metade da soma do total de energia recuperada por todas as ações, dividido pelo total de anos(±5%). Essa abordagem foi escolhida para garantir que as soluções não teriam poucas ações, nem seriam compostas de quase todas as possíveis alocações de ações. Os orçamentos foram criados de forma análoga, mas um orçamento por recurso por ano é criado.

A linha 31 cria dependências entre as ações. Para cada execução do loop, a função Gera- Dependencia()escolhe duas ações e gera uma dependência entre elas, tomando cuidado para evitar dependências cíclicas, pois nesse caso as ações envolvidas nunca satisfariam a restrição de dependência, e nunca seriam escolhidas.

4.3.1 O Fator de Correlação entre os Itens de uma Instância

Segundo [PISINGER 2005], um dos fatores que influencia fortemente a dificuldade do Pro- blema da Mochila tradicional é o nível de correlação existente entre o lucro e o custo dos itens da instância do problema. Aparentemente, quanto maior o nível de correlação, mais difícil o problema é para os algoritmos exatos. Baseado no nível de correlação, [PISINGER2005] sugere então alguns tipos de instâncias que podem refletir características interessantes, entre elas:

• Não correlacionadas: são as instâncias onde o lucro e custo dos itens não possuem ne- nhuma correlação. Este tipo de instância é geralmente fácil de resolver, e ilustra os casos reais onde é razoável assumir que o lucro de um item não depende de nenhuma maneira de seu custo.

• Fracamente correlacionadas: são as instâncias onde o lucro de um item é diretamente proporcional ao custo do mesmo, acrescido de um valor fixo e um pequeno valor aleatório. Este tipo de instância é, talvez, o mais parecido com instâncias encontradas em problemas reais, onde o retorno de um investimento é geralmente proporcional ao seu custo, com pequenas variações.

• Fortemente correlacionadas: são as instâncias onde o lucro de um item é diretamente proporcional ao custo do mesmo, acrescido de um valor fixo. Esse tipo de instância é, em geral, um dos mais difíceis de resolver.

A figura 4.4 ilustra cada um destes tipos. Nela, cada gráfico representa uma instância do problema de um dos tipos citados acima, sendo cada ponto do gráfico um item da instância. O eixo pjrepresenta o lucro do item e o eixo wj representa o custo do item.

(a) Sem correlação

(b) Fraca correlação (c) Forte correlação

Documentos relacionados