Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A...

31
Programação Linear

Transcript of Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A...

Page 1: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Programação

Linear

Page 2: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da

Universidade de Coimbra Departamento de Matemática

Trabalho realizado no âmbito da disciplina de

Fundamentos e Ensino da Álgebra

Dezembro 2003

Daniela Almeida

Paulo Lourenço

Sandrina Pinto

Page 3: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Agradecimentos:

ao Eng.º António Pinto, por toda a informação que nos forneceu acerca de reflorestação; à aluna estagiária Luísa Vaz, por nos ter disponibilizado o acesso à biblioteca da Escola Superior Agrária de Coimbra; ao responsável pelo viveiro da E.S.A.C., por nos ter dispensado algum do seu tempo;

o nosso sincero obrigado.

Page 4: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear

Índice

Página

História da Programação Linear .............................................................................. 2

Definição de Programação Linear ............................................................................ 3

Formulação e Aplicações de um Modelo Linear ....................................................... 4

Definições e Conceitos ............................................................................................. 4

Problemas de Transportes ...................................................................................... 6

Método de Resolução Gráfica ................................................................................. 9

Problemas de Mistura ............................................................................................ 14

Método Simplex ...................................................................................................... 15

Bibliografia ............................................................................................................. 28

Page 5: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 2

História da Programação Linear

É possível encontrar os primeiros passos da optimização em culturas de povos

antigos, citando-se por exemplo, no séc. IX a.C. o conhecido episódio narrado por Virgí-

lio, segundo o qual, a rainha Dido ao fundar a cidade de Cartago determinou qual a

figura geométrica para a qual seria maximizada a área por ela delimitada para um dado

perímetro constante; ou até no séc. VI-V a.C. os pensamentos de Confúcio que traduzem

sabiamente algumas das preocupações mais recentes da Teoria da Decisão.

No entanto, o desenvolvimento dos métodos de optimização só se inicia a partir

do séc. XVII, como resposta não só a desafios pertinentes como também porque os

problemas de optimização se revelaram essenciais ao desenvolvimento das ciências

experimentais. Um desafio pertinente foi a disputa travada entre o matemático Huygens

e o engenheiro chefe da marinha de Luís XIV (Chevalier Renau), sobre o mais

conveniente ângulo de navegação para embarcações à vela, supondo conhecida a

orientação do vento, e que veio permitir que Johann Bernoulli “descobrisse” que o

anulamento da primeira derivada de uma função é condição necessária de máximo e

mínimo.

Apesar dos problemas de optimização já há muito serem estudados estes merece-

ram pouca atenção até meados do séc. XX.

Os principais desenvolvimentos teóricos da programação

linear são devidos a Kantorovich (que mais tarde, em 1975, viria a

ganhar o prémio Nobel da economia) e a um grande grupo de

cientistas americanos. Já em 1939 este matemático e economista

Soviético tinha formulado e desenvolvido um problema de

programação linear para aplicação em planeamento da produção.

No entanto, o seu trabalho foi desconhecido durante vinte anos

não tendo tido impacto no desenvolvimento da programação linear

após a segunda guerra.

Os primeiros conceitos da programação linear foram desen-

volvidos entre 1947 e 1949 durante a segunda guerra mundial, por

George Dantzig, para serem aplicados a programas militares desde

a área logística até à estratégia. Foi após a guerra que ele foi

impulsionado para encontrar formas eficientes de desenvolver esta

metodologia. Foi Dantzig o primeiro a reconhecer que um

programa de planeamento poderia ser expresso por um sistema de

inequações lineares assim como foi o primeiro a apresentar, na forma de uma expressão

Page 6: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 3

matemática explícita, um critério para selecção do melhor plano ao que hoje chamamos

função objectivo.

O pós-guerra foi considerado, pelo matemático Nemhauser, como uma “Segunda

Renascença” já que como nos séc. XV e XVII as ciências experimentais proporcionaram

desafios decisivos à matemática, dando lugar às ciências organizacionais do planeamento

e da gestão que mais contribuírem para o seu sucesso.

Definição de Programação Linear

A programação linear é uma ferramenta matemática que permite encontrar a

solução óptima para um certo tipo de problemas. Neste contexto, o termo programação,

significa que existe planeamento de actividades e o termo linear refere-se a linearidade

nas equações do problema.

Pode também definir-se programação linear como uma série de operações mate-

máticas que são usadas para distribuir recursos limitados sobre operações que exigem a

sua utilização simultânea de uma forma óptima para um dado objectivo único.

A programação linear é, portanto, uma poderosa ferramenta da modelação mate-

mática. É uma técnica de optimização com aplicações amplas e diversificadas ao nível de

problemas reais.

Em casos reais, o analista tem de formular o problema de tal forma que consiga a

optimização desejada para o seu objectivo. No entanto, note-se que, a modelação da rea-

lidade não é fácil apesar de parecer elementar. O valor óptimo de um modelo não é

obrigatoriamente o valor óptimo na realidade.

Para qualquer que seja o seu modelo e o programa tradutor da realidade a anali-

sar, o analista deve estabelecer as seguintes três considerações:

• a resposta é credível ou realizável?

• a resposta é óptima?

• quão sensível é o valor óptimo aos parâmetros e qual a resposta do valor

óptimo às variações das variáveis independentes?

Do acima exposto fica implícito que para optimizar é necessário uma ferramenta para

modelar e solucionar o problema. Uma destas ferramentas é a programação linear.

Page 7: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 4

Formulação e Aplicações de um Modelo Linear

Ao formular um modelo linear deve ter-se o cuidado de distinguir sempre as

seguintes fases:

• Identificação das variáveis de decisão;

• Identificação da função objectivo;

• Identificação das restrições;

• Formulação matemática.

Depois de se ter obtido a formulação matemática é então possível resolver o pro-

blema de optimização.

O método de programação linear permite o recurso à metodologia gráfica e à

metodologia algébrica, manual ou com recurso a um computador.

Agora, na posse de toda esta informação, é mais fácil tomar decisões acertadas no

domínio da gestão em diversas aplicações, tais como:

• Planeamento agregado de produção;

• Análise de produtividade de serviços;

• Planeamento de produtos;

• Optimização do fluxo produtivo;

• Optimização do processo de produção.

Mas as aplicações da programação linear não terminam por aqui. Esta pode

também ser extremamente útil em áreas tais como medicina, agricultura, política flores-

tal, sector militar e redes de transportes.

Definições e Conceitos Eis agora algumas definições e conceitos que serão úteis na compreensão do tra-

balho:

♦ Função Objectivo – função linear que se pretende optimizar, isto é, maximizar

ou minimizar.

♦ Restrições – consiste em relacionar cada actividade e respeitar a

disponibilidade de recursos utilizados. Grande parte das vezes são escritas na

forma de inequações ou equações lineares.

Page 8: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 5

- Restrições de não negatividade – as variáveis que entram na formula-

ção do problema não podem assumir valores negativos.

- Restrições do problema – quando se faz a formulação de um problema

deve elaborar-se uma lista de todos os itens que impliquem restrições às

possíveis soluções.

As restrições do problema originam a chamada região admissível.

♦ Forma Canónica – Um modelo de programação linear escrito na forma canóni-

ca tem as seguintes características: • as variáveis são todas não negativas;

• pretende-se a maximização da função objectivo; • as restrições são todas desigualdades lineares do tipo ≤ , com excepção

das que dizem respeito à não negatividade das variáveis. ♦ Forma Padrão (Standard) – É um problema de programação linear que obe-

dece às seguintes condições: • as variáveis são todas não negativas;

• todas as restrições são equações lineares, com excepção das que dizem

respeito à não negatividade;

• os termos independentes de cada uma das restrições são constantes

reais não negativas;

• considera-se indiferente a maximização ou a minimização da função

objectivo.

♦ Solução – A solução de um problema de programação linear é o conjunto de

valores que podem ser atribuídos às variáveis. ♦ Solução Possível – é uma solução que satisfaz todas as restrições.

♦ Solução Impossível – é aquela em que não há qualquer ponto que satisfaça o

conjunto das restrições. ♦ Solução Ilimitada – é aquela em que a função objectivo pode crescer, no caso

da maximização, ou decrescer, no caso da minimização, indefinidamente aten-

dendo a todas as restrições do problema. ♦ Solução Óptima – é uma solução possível que origina o valor mais favorável

para a função objectivo. ♦ Variável de Folga – é a variável auxiliar não negativa com coeficiente unitário

que se introduz ao reduzir uma restrição à forma de igualdade. ♦ Variável de Decisão – Um modelo de programação linear engloba n variáveis

reais 1 2,...,, nx x x denominadas variáveis de decisão.

Page 9: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 6

Dado o problema na forma padrão com m equações e n+m variáveis, ao

atribuir-se o valor zero a n variáveis – variáveis não básicas – e se for possível

resolver de forma única o seu sistema de equações lineares em relação às restantes

m variáveis – variáveis básicas – obter-se-á uma solução básica.

Uma solução básica diz-se possível se todas as m variáveis forem não nega-

tivas.

Problema dos Transportes

Um problema de transporte é todo aquele problema onde há a necessidade de

programar a distribuição óptima de um produto homogéneo, produto esse que está dis-

ponível em diversas origens e será enviado para diversos destinos, esgotando as disponi-

bilidades de cada origem e satisfazendo as necessidades de cada destino, isto é, a procura

é igual à oferta.

Exemplo de um problema

Como é conhecimento de todos, Portugal vai receber o europeu de futebol no

próximo ano, um acontecimento que implica muitos investimentos, mas que trará

muitas receitas. As áreas que mais lucrarão com este evento serão sem dúvida as do

transporte e hotelaria.

Uma agência de viagens resolveu dedicar-se ao transporte de alguns dos muitos

adeptos Ingleses. O transporte efectuar-se-á de autocarro desde as duas cidades inglesas,

Londres e Manchester, donde sairão 1000 e 500 passageiros, respectivamente.

Estes adeptos, destinam-se a assistir a um jogo que decorrerá no estádio munici-

pal de Coimbra, e serão distribuídos por vários hotéis da região, visto que Coimbra já

não dispõe de alojamento para 1500 pessoas. A agência tem garantida a estadia para 800

pessoas em Coimbra, 300 em Viseu e 400 na Figueira da Foz.

Page 10: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 7

Os custos de transporte estão indicados no seguinte esquema:

Londres

Viseu Coimbra Fig. da Foz

Manchester

Partindo do princípio que todos os lugares serão ocupados, de que forma a

agência poderá minimizar as despesas com os transportes?

Começa-se por organizar os dados numa tabela:

Coimbra Destino 1

Figueira da Foz Destino 2

Viseu Destino 3

Londres Origem 1

€ 400 € 330 € 250

Manchester Origem 2

€ 360 € 270 € 200

Para resolver este problema, consideram-se as variáveis de decisão ijx que

representam o número de pessoas a enviar desde a origem i para o destino j.

A função objectivo será a soma dos produtos do número de adeptos desde cada

origem até cada destino com o custo da respectiva viagem, portanto a função a minimi-

zar é

11 12 13 21 22 23400 330 250 360 270 200z x x x x x x= + + + + +

€ 250

€ 270 € 200

€ 330

€ 400

€ 360

Page 11: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 8

Como de Londres partem 1000 pessoas, tem-se que:

11 12 13 1000x x x+ + = .

Por outro lado, sairão de Manchester 500 pessoas, logo:

21 22 23 500x x x+ + = .

Sabe-se ainda que em Coimbra a agência de viagens garante a estadia a 800 pessoas,

então:

11 21 800x x+ = .

Fazendo um raciocínio análogo, para as outras cidades, vem que:

12 22 400x x+ = ,

13 23 300x x+ = .

Resta ainda acrescentar as restrições da não negatividade.

Desta forma obtém-se o seguinte problema de programação linear:

Minimizar 11 12 13 21 22 23400 330 250 360 270 200z x x x x x x= + + + + +

sujeito a:

11 12 13 1000x x x+ + = ;

21 22 23 500x x x+ + = ;

11 21 800x x+ = ;

12 22 400x x+ = ;

13 23 300x x+ = .

11 12 13 21 22 23, , , , , 0x x x x x x ≥ Como este problema tem 6 variáveis, a sua resolução envolveria operações com

matrizes de grandes dimensões e visto que já existe software que permite a resolução de

problemas deste tipo, resolvemos recorrer a ele para obter a solução.

Escolhemos o CPLEX, onde basta escrever um ficheiro de texto como o que se

mostra de seguida:

Page 12: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 9

Este ficheiro não implica o conhecimento de nenhuma linguagem específica. Basta

mandar ler o ficheiro e optimizar. Obtendo-se uma resposta do tipo:

A solução do problema será definida pelos valores destacados a vermelho, os quais

substituídos na função objectivo, permitem concluir que a agência no mínimo gastará

€498000 (valor destacado a verde).

Método de Resolução Gráfica

Este método tem para nós muito interesse, pois é abordado no 11º ano de

escolaridade (embora seja um tema facultativo). Este método aplica-se em problemas

com apenas 2 variáveis de decisão, o que permite a representação gráfica das restrições e

até o recurso às calculadoras gráficas.

A utilização do método gráfico tem por objectivo representar as inequações num

plano, de forma a identificar a disponibilidade de recursos para o processo a optimizar.

A vantagem que esta metodologia apresenta é a intuitividade na interpretação das res-

trições. No entanto, esta vantagem desvanece-se quando os problemas possuem mais de

duas variáveis de decisão, sendo mesmo limitado a um máximo de três variáveis de deci-

são.

Page 13: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 10

Consideremos então o seguinte problema

A Nokia, empresa de grande influência no mercado das telecomunicações, resol-

veu abrir uma sucursal em território nacional, de modo a produzir na íntegra dois dos

seus mais recentes modelos:

Nokia 7650 Nokia 3650

A fábrica está dividida em três grandes sectores A, B e C.

O sector A é o responsável pela produção dos componentes electrónicos, o sector

B produz as partes plásticas e executa a montagem dos respectivos aparelhos e cabe ao

sector C a instalação do software. A maquinaria existente em cada um dos três sectores

possibilita uma utilização máxima semanal de 80 horas no sector A, 220 horas no sector

B e 50 horas no sector C.

A montagem completa de um telemóvel do modelo 3650 demora 5 horas: requer 2

horas no sector A, 2 horas no sector B e 1 hora no sector C. Por outro lado, o tempo de

montagem do telemóvel do outro modelo distribui-se pelos diferentes sectores do seguin-

te modo: 1 hora no sector A, 5 horas no sector B e 1 hora no sector C.

Sabendo que todos os aparelhos produzidos por esta fábrica têm escoamento

garantido e o custo de venda aos revendedores é de 250 euros para o Nokia 3650 e 200

euros para o Nokia 7650, qual deve ser a produção semanal dos dois modelos de modo a

maximizar o lucro semanal?

Page 14: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 11

Começa-se por organizar os dados:

Modelos

Sectores Nokia 3650 Nokia 7650

A 2 horas 1 hora

B 2 horas 5 horas

C 1 hora 1 hora

Sejam as variáveis de decisão 1x e 2x , respectivamente o número de telemóveis

do modelo Nokia 3650 e o número de unidades do modelo Nokia 7650 a fabricar sema-

nalmente.

Tem-se como função objectivo a maximizar:

1 2250 200z x x= + .

Como as máquinas do sector A não podem exceder as 80 horas semanais, vem que:

1 22 80x x+ ≤ .

Procedendo de modo análogo para os outros dois sectores da fábrica obtêm-se as seguin-

tes inequações:

1 22 5 220x x+ ≤ ,

1 2 50x x+ ≤ .

E então, neste caso, o problema de programação linear obtido é:

Maximizar 1 2250 200z x x= +

sujeito a:

1 22 80x x+ ≤ ;

1 22 5 220x x+ ≤ ;

1 2 50x x+ ≤ ;

1 2, 0x x ≥ .

Pode recorrer-se ao método da resolução gráfica, devido ao facto de se terem ape-

nas duas variáveis,

Começa-se por representar a região de pontos 1 2( , )x x que satisfazem todas as

restrições – região admissível.

Page 15: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 12

A função 1 2250 200z x x= + representa uma recta. Ao variar o valor de z obtêm-

se rectas paralelas entre si – rectas de nível da função objectivo – e perpendiculares ao

gradiente da função objectivo.

Gradiente de ( )1 2, 250,200dz dzz

dx dx⎛ ⎞⎟⎜= =⎟⎜ ⎟⎜⎝ ⎠ .

A solução admissível com maior valor para z será a solução óptima. Como a fun-

ção objectivo é crescente no sentido do seu gradiente, para encontrar a solução óptima

basta traçar uma recta de nível da função objectivo e deslocá-la, no sentido do gradien-

te, de modo a obter a de maior nível que toque pelo menos num ponto da região

admissível, do seguinte modo:

Page 16: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 13

Da observação da representação gráfica do problema, conclui-se que a solução

óptima é o ponto de intersecção das rectas:

1 22 80x x+ = ,

1 2 50x x+ = .

que é o ponto ( ) ( )* *1 2, 30,20x x = .

Substituindo estes valores na função objectivo, obtém-se o lucro semanal. * * *

1 2250 200 250 30 200 20 7500 4000 11500z x x= + = × + × = + =

Interpretando esta solução chega-se à conclusão que, semanalmente, devem ser

produzidos 30 modelos do Nokia 3650 e 20 telemóveis do modelo Nokia 7650, obtendo

deste modo um lucro semanal máximo de 11500 euros.

No problema anterior a solução óptima é única, contudo podem ocorrer situações

em que mais do que uma solução optimiza a função objectivo.

Considere-se agora que a função objectivo do problema anterior é

1 2250 250z x x= + ,

ou seja, os dois modelos têm o mesmo valor comercial.

A região admissível deste novo problema é a mesma do anterior. Então proceden-

do de modo análogo, obtém-se a seguinte representação gráfica para o problema:

Page 17: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 14

Neste caso a intersecção não vai ser apenas num ponto, mas sim todos os pontos

do segmento de recta que liga o ponto ( )10,40 a ( )30,20 marcado na figura, que são

soluções óptimas alternativas que traduzem o mesmo lucro. Existem portanto infinitas

soluções mas neste caso, só interessam as soluções inteiras.

Por exemplo:

1 230; 20; 12500x x z= = = e 1 210; 40; 12500x x z= = = são duas soluções alternativas

que apresentam o mesmo valor para a função objectivo, o qual será de €12500.

Problemas de Mistura O problema de mistura de produtos caracteriza-se essencialmente por pretender

obter, com custo mínimo ou lucro máximo, um ou vários produtos, a satisfazer certos

requisitos técnicos, através de vários ingredientes possuidores (em grau diferente) dessas

características técnicas.

Este tipo de problemas ocorre em várias áreas de produção tão diversas como:

produtos alimentares, produtos farmacêuticos, cimento, rações para animais.

Neste último exemplo o que geralmente se pretende é optimizar a composição da

dieta a adoptar de modo a minimizar o seu custo e a satisfazer níveis mínimos de com-

ponentes como, por exemplo, calorias e vitaminas.

Exemplo de um problema:

Um agricultor quer assegurar que os seus coelhos recebam pelo menos 24 unida-

des de ferro e no máximo 10 unidades de vitaminas.

Um grama de cenoura fornece 4 unidades de ferro e 2 unidades de vitaminas.

Um grama de couve fornece 2 unidade de ferro e 2 unidade de vitaminas.

De que modo podem ser misturados os dois produtos, a fim de se obter a satisfa-

ção das necessidades diárias dos coelhos a um custo mínimo, se os custos unitários são

de 1 e 0,5 euros, respectivamente.

Tem-se então

Minimizar f(x,y) = x + 0,5y;

sujeita às restrições

4x + 2y ≥ 24;

2x + 2y ≤10;

Page 18: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 15

x,y≥0.

Como pode verificar-se este problema não possui qualquer solução admissível

visto que não existem valores para as variáveis x e y que satisfaçam as restrições do pro-

blema. Tem-se então uma SOLUÇÃO IMPOSSÍVEL.

Método Simplex

O Método Simplex é um processo algébrico de resolução de problemas de pro-

gramação linear. É um algoritmo iterativo que localiza a solução óptima após pesquisar

um número finito de soluções. O método começa com uma solução básica admissível,

movimentando-se através de uma sucessão de soluções básicas admissíveis de modo que

cada nova solução melhora o valor da função objectivo.

O Método Simplex caminha pelos vértices da região admissível até encontrar uma

solução que não possua soluções vizinhas melhores que ela. Esta é a solução óptima. A

solução óptima pode não existir em dois casos: quando não há nenhuma solução viável

para o problema, devido a restrições incompatíveis; ou quando uma, ou mais variáveis,

podem tender para infinito e as restrições continuam a ser satisfeitas, o que fornece um

valor ilimitado para a função objectivo.

Page 19: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 16

Exemplo de um Problema

O modelo de programação linear pode ser resolvido por um método de solução de

sistema de equações lineares. O processo que será apresentado no exemplo a seguir é

bastante intuitivo e tem por finalidade apresentar a metodologia utilizada pelo método

Simplex.

Formulação do problema

"Uma marcenaria deseja estabelecer uma programação diária de produção.

Actualmente, a oficina faz apenas dois produtos: mesa e armário, ambos de um só mode-

lo. Para efeito de simplificação, considere-se que a marcenaria tem limitações em somen-

te dois recursos: madeira e mão-de-obra, cujas disponibilidades diárias são mostradas na

tabela seguinte.

Recurso Disponibilidade

Madeira 212m Mão-de-obra 8 h

O processo de produção é tal que, para fazer uma mesa a fábrica gasta 2 2m de

madeira e 2 h de mão-de-obra. Para fazer um armário, a fábrica gasta 3 2m de madeira

e 1 h de mão de obra. Além disso, o fabricante sabe que cada mesa dá uma margem de

contribuição para o lucro de €4 e cada armário de €1. O problema é encontrar o pro-

grama de produção que maximiza a margem de contribuição total para o lucro."

Montagem do modelo

As variáveis de decisão envolvidas no problema são:

1x : quantidade a produzir de mesas;

2x : quantidade a produzir de armários;

A função objectivo é:

Lucro: z = 4 1x + 2x .

Para as restrições, a relação lógica existente é:

Utilização de recurso ≤ Disponibilidade

Page 20: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 17

Assim temos

Madeira: 2 1x + 3 2x ≤ 12;

Mão-de-obra: 2 1x + 2x ≤ 8;

1x , 2x ≥0.

O modelo completo é:

Maximizar: z = 4 1x + 2x ;

sujeito a 2 1x + 3 2x ≤12;

2 1x + 2x ≤8;

1x , 2x ≥0.

Solução do modelo

Já se conhece o método de resolução gráfica para problemas de programação

linear de duas variáveis. Será agora apresentada a solução por sistemas de equações

lineares.

De forma a transformar as restrições do problema de programação linear de

inequações em equações, são introduzidas as variáveis de folga. Neste problema, as

restrições têm a seguinte estrutura lógica:

Utilização de recurso ≤ Disponibilidade.

Ao se introduzir o conceito de folga de recurso, a inequação pode ser escrita como

Utilização de recurso + Folga = Disponibilidade.

Isso significa que

Utilização de recurso < Disponibilidade implica Folga > 0;

Utilização de recurso = Disponibilidade implica Folga = 0.

Deste modo, a folga de cada recurso pode ser representada por uma variável de

forma exactamente igual à produção de cada produto. Desse modo, denomina-se:

1f : folga de madeira;

2f : folga de mão-de-obra.

Introduzindo as variáveis de folga, o problema a ser resolvido passa a ser:

Maximizar: z = 4 1x + 2x ;

sujeito a 2 1x + 3 2x + 1f = 12;

2 1x + 2x + 2f = 8;

1x , 2x , 1f , 2f ≥0.

Page 21: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 18

O problema transformou-se em encontrar a solução do sistema de equações linea-

res que maximiza o lucro. Como neste caso o número de variáveis (m = 4) é superior ao

número de equações (n = 2), o sistema é indeterminado, apresentando infinitas soluções.

No entanto, todas as variáveis devem ser maiores ou iguais a zero. Atribuir zero a

uma variável significa não produzir um dos produtos (se a variável for 1x ou 2x ) ou

utilizar toda a disponibilidade de recursos (se a variável for 1f ou 2f ). Desta forma,

podem encontrar-se soluções para o sistema de equações igualando a zero duas variáveis

(n - m = 2) e encontrando o valor para as duas variáveis restantes. Tem que resolver-se

então

C 24 = 4! / (2! 2!) = 6

sistemas de equações lineares.

Uma vez resolvido um sistema serão aplicados na função objectivo os valores

encontrados. As variáveis igualadas a zero são chamadas variáveis não-básicas. As

variáveis cujos valores são calculados pelo sistema de equações são chamadas variáveis

básicas.

1s ) Variáveis não-básicas: 1x = 0;

2x = 0;

tem-se as variáveis básicas 1f = 12;

2f = 8;

dando o lucro z = 0.

2s ) Variáveis não-básicas: 1x = 0;

1f = 0;

tem-se as variáveis básicas 2x = 4;

2f = 4;

dando o lucro z = 4.

3s ) Variáveis não-básicas 1x = 0;

2f = 0;

tem-se as variáveis básicas 2x = 8;

1f = -12;

como 1f < 0, a solução obtida é INVIÁVEL.

Page 22: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 19

4s ) Variáveis não-básicas: 2x = 0;

1f = 0;

tem-se as variáveis básicas 1x = 6;

2f = -4;

como 2f < 0, a solução obtida é INVIÁVEL.

5s ) Variáveis não-básicas: 2x = 0;

2f = 0;

tem-se as variáveis básicas 1x = 4;

1f = 4;

dando o lucro z = 16.

6s ) Variáveis não-básicas: 1f = 0;

2f = 0;

tem-se as variáveis básicas 1x = 3;

2x = 2;

dando o lucro z = 14.

Comparando todas as soluções encontradas por este processo obtém-se a solução

óptima, ou seja, 1x = 4, 2x = 0, 1f = 4, 2f = 0, dando um lucro z = 16.

Desenvolvimento do Método Simplex

Da forma como foi resolvido o problema anteriormente é necessário que muitos

sistemas de equações sejam resolvidos e as suas soluções comparadas. Para problemas

reais de programação linear esta solução torna-se inviável. Desta forma, para se ter

condições de resolver um problema de programação linear é necessária uma sistemática

que diga:

qual o sistema de equações que deve ser resolvido;

que o próximo sistema a ser resolvido fornecerá uma solução melhor

que os anteriores;

como identificar uma solução óptima, uma vez encontrada.

Page 23: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 20

Essa sistemática é o Método Simplex, e as regras que o método utiliza para aten-

der às três questões acima são, basicamente, os critérios desenvolvidos anteriormente.

De regresso ao problema, já com as variáveis de folga:

Maximizar z = 4 1x + 2x ;

sujeito a 2 1x + 3 2x + 1f = 12;

2 1x + 2x + 2f = 8;

1x , 2x , 1f , 2f ≥0.

Faça-se agora um quadro para ordenar as operações colocando nele apenas os

coeficientes das variáveis. No caso da função objectivo, realiza-se a seguinte transforma-

ção:

de: z = 4 1x + 2x ;

para: z - 4 1x - 2x = 0.

Quadro 1

A última coluna corresponde aos termos independentes das equações e a última

linha contém os coeficientes das variáveis na função objectivo. Nessa última linha tem-se

sempre a contribuição que cada variável dá para o lucro total z, por unidade, em cada

iteração do processo de solução. Essa última linha será chamada de função objectivo

transformada, ou função z-transformada.

Solução inicial

A solução inicial para o problema será sempre obtida fazendo as variáveis origi-

nais do modelo (no caso 1x e 2x ) iguais a zero e calculando o valor das restantes .

Assim, fazendo 1x = 2x = 0 (variáveis não básicas), obtemos do Quadro 1:

1f = 12;

2f = 8 ; (variáveis básicas)

z = 0.

Page 24: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 21

As variáveis básicas estão indicadas no Quadro 1 para facilitar o

acompanhamento das operações.

Segunda solução

Como a primeira solução claramente não é a melhor procura-se outra que dê um

valor maior para z. O problema é descobrir: Das duas variáveis não básicas (nulas) na primeira solução, qual deverá

tornar-se positiva?

Das duas variáveis básicas (positivas) na primeira solução, qual deverá ser

anulada?

Qual a variável que se deverá tornar positiva?

Observe-se que na última linha do Quadro 1 se tem os coeficientes da função

objectivo os quais mostram a contribuição para o lucro z de cada unidade produzida de

mesa ( 1x ) e de armário ( 2x ).

Assim, aplicando o critério de que se deve produzir primeiro o produto que mais

contribui para o lucro, começa-se a produção pela variável 1x , já que a sua contribuição

unitária para o lucro (4) é maior que a contribuição de 2x , igual a 1.

Logo, a variável que deverá tornar-se positiva é 1x .

Qual a variável que deverá ser anulada?

Nota-se pelo Quadro 1 que, na primeira equação, o maior valor possível de 1x é 6,

quando 1f for igual a zero (note que 2x vale zero por ser variável não básica). Qualquer

valor maior de 1x fará com que o valor de 1f fique negativo, o que não é permitido. Na

segunda equação, o maior valor permitido para 1x é 4, quando 2f for igual a zero. Ana-

lisando simultaneamente as duas equações percebe-se que o maior valor possível para 1x

é 4, já que atende às duas equações.

Observe que esta análise pode ser feita directamente do Quadro 1 através da divi-

são dos elementos da coluna b pelos correspondentes elementos da coluna 1x . O menor

quociente indica, pela linha em que ocorreu, qual a variável básica que deve ser anulada.

Assim, como o menor quociente é dado pela divisão 8 / 2 = 4, a variável básica a ser

anulada é 2f , que é a variável positiva na actual solução cujo valor foi encontrado na

segunda linha.

Page 25: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 22

Assim tem-se:

2x = 0;

2f = 0;

e o sistema restante deve ser resolvido para se encontrar o valor de 1x e 1f . A solução

desse sistema será feita usando o Quadro 1 com as equações completas e usando as ope-

rações válidas com as linhas da matriz.

1ª operação: 2 2 /2L L←

2ª operação: 1 1 22L L L← −

3ª operação: 3 3 24L L L← +

Quadro 2

Como a última linha (função z-transformada) mostra as contribuições líquidas

para o lucro, caso as variáveis 1x e 2f venham a ter os seus valores aumentados de 0

para 1 e como estas contribuições têm os seus valores trocados em relação ao quadro

original, concluímos que a solução encontrada é óptima

1x = 4;

2x = 0;

1f = 4;

2f = 0;

z = 16.

Page 26: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 23

Algoritmo do Método Simplex (Problemas de Maximização)

Passo 1: Introduzir as variáveis de folga; uma para cada desigualdade.

Passo 2: Construir um quadro para os cálculos, colocando os coeficientes de todas as

variáveis com os respectivos sinais e, na última linha, incluir os coeficientes da função

objectivo transformada.

Passo 3: Estabelecer uma solução básica inicial, usualmente atribuindo valor zero às

variáveis originais e achando valores positivos para as variáveis de folga.

Passo 4: Como próxima variável a entrar na base escolher a variável não básica que ofe-

rece, na última linha, a maior contribuição para o aumento da função objectivo (ou seja,

tem o maior valor negativo). Se todas as variáveis que estão fora da base tiverem coefi-

cientes nulos ou positivos nesta linha a solução actual é óptima. Se alguma dessas variá-

veis tiver coeficiente nulo, isto significa que ela pode ser introduzida na base sem

aumentar o valor da função objectivo. Isso quer dizer que se tem uma solução óptima

com o mesmo valor da função objectivo.

Passo 5: Para escolher a variável que deve deixar a base deve realizar-se o seguinte pro-

cedimento:

a) Dividir os elementos da última coluna pelos correspondentes elementos positi-

vos da coluna da variável que vai entrar na base. Caso não haja elemento algum positi-

vo nesta coluna o processo deve parar, já que a solução seria ilimitada.

b) O menor quociente indica a equação cuja respectiva variável básica deverá ser

anulada, tornando-se variável não básica.

Passo 6: Usando operações válidas com as linhas da matriz transformar o quadro de cál-

culos de forma a encontrar a nova solução básica. A coluna da nova variável básica

deverá tornar-se um vector identidade, onde o elemento 1 aparece na linha correspon-

dente à variável que está a ser anulada.

Passo 7: Retornar ao passo 4 para iniciar outra iteração.

Page 27: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 24

Aspectos Matemáticos Singulares

Na modelagem de um problema de programação linear algumas situações específi-

cas podem ocorrer, o que pode levar a casos numa forma matemática diferente da apre-

sentada até ao momento.

Entretanto, alguns artifícios matemáticos ajudam a reduzir o modelo obtido à

forma padrão estudada.

Estes artifícios são mostrados a seguir.

Minimização de uma função

A minimização de uma função z(x) é matematicamente análoga à maximização da

negativa desta função (-z(x)).

Exemplo:

Minimizar z = 1c 1x + 2c 2x + ... + nc nx ; é equivalente a

Maximizar z' = - 1c 1x - 2c 2x - ... - nc nx ; com z' = - z .

Essa é uma das formas de se resolver os problemas de minimização utilizando o

mesmo algoritmo.

Caso se queira resolver directamente deve alterar-se o critério de entrada das

variáveis na base. A variável que entra na base passa a ser aquela que tem o maior valor

positivo na linha z-transformada.

Caso todas tenham coeficientes negativos ou nulos, a solução obtida é óptima

Restrições de limite inferior (≥ )

Uma desigualdade numa direcção (≤ ou ≥ ) pode ser mudada para uma desi-

gualdade na direcção oposta pela multiplicação de ambos os lados da desigualdade por

( 1)− .

Exemplo: 1a 1x + 2a 2x ≥b;

é equivalente a - 1a 1x - 2a 2x ≤ -b;

Page 28: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 25

Restrições de igualdade

Uma equação pode ser substituída por duas desigualdades de direcções opostas.

Exemplo: 1a 1x + 2a 2x = b;

é equivalente a duas desigualdades simultâneas:

1a 1x + 2a 2x ≥b;

1a 1x + 2a 2x ≤b.

Veja-se agora um exemplo, da vida real, onde o Método Simplex pode ser muito

útil.

Os incêndios florestais são das catástrofes naturais mais graves em Portugal, não

só pela elevada frequência com que ocorrem e extensão que alcançam, como pelos efeitos

destrutivos que causam. Para além dos prejuízos económicos e ambientais podem consti-

tuir uma fonte de perigo para as populações e bens.

O resultado da vaga de incêndios que assolou o país durante o verão, do corrente

ano, foi estimado em 355 976 ha de área ardida.

Calculou-se que cerca de 300 000 ha de floresta arderam (o que corresponde a

cerca de 6% da área florestal de Portugal).

Castelo Branco foi o distrito mais afectado com cerca de 100 000 ha ardidos (27%

da área total).

As áreas ardidas incidiram maioritariamente em terrenos florestados (84,6%)

estimando-se que a espécie mais afectada tenha sido o pinheiro bravo com mais de 85

mil hectares de povoamentos ardidos.

Discute-se então como reflorestar o país e que erros não devem ser cometidos. De

facto, não é necessário começar a reflorestação de imediato, sendo aliás, desejável deixar

passar algum tempo para começar a reflorestar devido à vulnerabilidade em que se

encontra o solo. É preferível deixar passar o Inverno uma vez que é a altura em que há

mais erosão, a qual iria ser aumentada com a utilização de máquinas de reflorestação.

Quanto à madeira ardida, por um lado é desejável não a retirar, de forma a criar

alguma protecção no solo. Mas, por outro lado, se a madeira não for retirada em tempo

útil deixará de ter qualquer utilidade.

Há ainda que ter em conta a compartimentação da paisagem, eliminando as hipó-

teses de expansão das chamas e a possibilidade de, ao reflorestar, se aumentar a biodi-

versidade da área em causa.

Page 29: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 26

As espécies florestais seriam as que em povoamento fornecessem regular e

continuamente os bens e serviços pretendidos, auto-regenerando-se perpetuamente a

taxas satisfatórias ao mesmo tempo que, integrando elas próprias o conjunto dos valores

patrimoniais, contribuíssem para a respectiva protecção e reforço.

As espécies autóctones (i.e., as espécies predominantes de determinada região) são

as que, geralmente, apresentam um maior grau de aptidões e perfeição.

Suponha-se que, depois de efectuado um devido tratamento de solo, se pretende

reflorestar a área ardida do distrito de Castelo Branco com as respectivas espécies

autóctones, Pinus pinaster (pinheiro bravo), Quercus ruber (sobreiro) e Eucaliptus glo-

bulus (eucalipto). Pretende-se também que o custo da reflorestação seja mínimo.

Desta forma, o problema de programação linear apresenta a seguinte função

objectivo, tendo em conta que o preço de cada planta de pinheiro bravo, sobreiro e

eucalipto é, respectivamente 0,20 euro, 0,35 euro e 0,17 euro:

Minimizar 0.20x + 0.35y + 0.17z;

Uma vez que as árvores, ao serem plantadas, devem distanciar-se entre elas de 3

e 2,5 metros, só é possível plantar 2 milhares de árvores por hectare.

Tendo em conta a percentagem das espécies, outrora existente no distrito, devem

ser plantados mais de 80% de pinheiro bravo. Em relação ao sobreiro e ao eucalipto a

percentagem é inferior a 13% e 7%, respectivamente.

Assim, obtém-se o seguinte problema de programação linear:

Minimizar 0.20x + 0.35y + 0.17z;

sujeito a x + y + z = 2;

x ≥ 1.6;

y ≤ 0.26;

z ≤ 0.14;

x,y,z ≥ 0.

Utilizando o Método Simplex obtém-se a seguinte solução:

x = 1.860;

y = 0;

z = 0.14.

pelo que é possível concluir que, por hectare, devem ser plantados 1860 pinheiros bravos

e 140 eucaliptos, não se mostrando rentável a plantação de sobreiro.

Page 30: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 27

As causas dos incêndios florestais são das mais variadas. Têm na sua grande

maioria, origem humana, quer por negligência e acidente, quer intencionalmente.

O contributo para proteger a floresta do fogo baseia-se na adopção de algumas

acções preventivas, medidas de simples bom senso, sempre que haja risco de incêndio e

sobretudo durante os períodos mais quentes.

Tem de se olhar para a floresta como se olha para o urbano. Se há planos directo-

res municipais, têm de existir os planos municipais de intervenção florestal.

Page 31: Trabalho Escrito V2 - Departamento de Matemáticamcag/FEA2004/Programacao Linear.pdf · A programação linear é uma ferramenta matemática que permite encontrar a solução óptima

Faculdade de Ciências e Tecnologia da Universidade de Coimbra

Fundamentos e Ensino da Álgebra - Programação Linear 28

Bibliografia

Agudo, F.R. Dias , Introdução à Álgebra Linear e Geometria Analítica , Escolar Editora — 1989;

Antunes, Carlos Henggeler e Tavares, Luís Valadares; Casos de aplicação da

investigação operacional; Mc Graw-Hill;

Costa, João Paulo; Alves, Maria João; Clímaco, João Namorado; Exercícios para aulas de Investigação Operacional; Sebenta da Faculdade de Economia da Univer-sidade de Coimbra; Coimbra-1996;

Dantzing, G. B. ; Eaves, B. O. , Studies in optimization (Volume 10); The Mathe-

matical Association of America;

Ferreira, João da Silva, Introdução à Programação Linear, Estudos de Economia Moderna, Clássica Editora, Cap. 2,1976, Lisboa

Jorge, Ana Maria Brito; Alves, Conceição Barroso; Fonseca, Graziela; Barbedo; Infi-nito 11, volume 2; Areal Editores;

Lima, Yolanda; Gomes, Francelino; Xeque-Mate-11º ano, Editorial O Livro;

Martins, Ernesto de Queirós Vieira, Programação Linear-Apontamentos, Departa-

mento de Matemática da Faculdade de Ciências e Tecnologia da Universidade de Coimbra —1999/2000;

Martins, Ernesto de Queirós Vieira; Determinação de caminhos óptimos em redes

orientadas; Departamento de Matemática da Faculdade de Ciências e Tecnologia da Universidade de Coimbra —1984;

Ramalhete, Manuel; Guerreiro, Jorge; Magalhães, Alípio; Programação Linear,

volume I e volume II, McGraw-Hill —1984;

Tavares, L. Valadares; Oliveira, Rui Carvalho; Themido, Isabel Hall; Correia, F. Nunes; Investigação Operacional, McGraw-Hill- 1996.

Referências da internet:

@ www.yahoo.pt @ www.fe.up.pt/~jfo @ www.terravista.pt @ www.sapo.pt