Professional Documents
Culture Documents
Contedo
1 LINDO
1.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.1.1 1.1.2 1.2 O que o LINDO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Sintaxe de um Modelo LINDO . . . . . . . . . . . . . . . . . . . . . . . . .
1
1 1 1 1 1 2 3 5 7 7 11
Exemplos de Modelos LINDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 Todas as variveis so no negativas . . . . . . . . . . . . . . . . . . . . . . Existem variveis inteiras . . . . . . . . . . . . . . . . . . . . . . . . . . . . Existem variveis limitadas superiormente e inferiormente . . . . . . . . . . Existem variveis binrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . Existem variveis livres . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 1.4
2 SOLVER (EXCEL)
2.1 2.2 O que o SOLVER? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplos de como Modelar usando o SOLVER do Excel . . . . . . . . . . . . . . . 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 Problema da Fbrica de Automveis . . . . . . . . . . . . . . . . . . . . . . Problema do Emprstimo do Banco . . . . . . . . . . . . . . . . . . . . . . Problema da Fbrica de Motores . . . . . . . . . . . . . . . . . . . . . . . . Problema da Escolha de Carteira de Investimentos . . . . . . . . . . . . . . Problema da Mistura de Petrleo . . . . . . . . . . . . . . . . . . . . . . . .
16
16 16 16 21 23 25 30
3 VISUAL XPRESS
3.1 3.2 O que o Visual XPRESS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplos de como Modelar usando o Visual XPRESS . . . . . . . . . . . . . . . . 3.2.1 O Problema do Atleta Indeciso . . . . . . . . . . . . . . . . . . . . . . . . .
34
34 34 35
O Problema do Stio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STAFF SCHEDULING (Escala de Funcionrios) . . . . . . . . . . . . . . . O Problema de Escalonamento de Motoristas . . . . . . . . . . . . . . . . . O Problema da Mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problema da Liga de Ferro . . . . . . . . . . . . . . . . . . . . . . . . . . .
37 41 42 44 47
4 LINGO
4.1 4.2 O que o LINGO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemplos de como Modelar usando o LINGO . . . . . . . . . . . . . . . . . . . . . 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 Problema da Otimizao de Padres de Produo . . . . . . . . . . . . . .
50
50 50 50 54 56 61 62
Problema da Agncia de Propaganda . . . . . . . . . . . . . . . . . . . . . . Problema da Carteira de Investimento . . . . . . . . . . . . . . . . . . . . . Problema da Mochila . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Problema da Fbrica de Brinquedos . . . . . . . . . . . . . . . . . . . . . .
Bibliograa
66
Lista de Figuras
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 Modelo LINDO para o problema da dieta . . . . . . . . . . . . . . . . . . . . . . . Soluo para o problema da Dieta . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo LINDO para o problema da fbrica de mveis . . . . . . . . . . . . . . . . Forma alternativa do Modelo LINDO para o problema da fbrica de mveis . . . . Modelo LINDO para o problema da confeitaria . . . . . . . . . . . . . . . . . . . . Modelo LINDO para o problema da defesa antiarea . . . . . . . . . . . . . . . . . Modelo LINDO para o PPL usando varivel livre . . . . . . . . . . . . . . . . . . . Modelo LINDO para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4 4 4 5 6 7 9 9 9 9 10 10 10 10 10 11 11 11 13 13 13 17 20 20
1.10 Janela de Pivoteamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 2o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12 3o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13 Modelo LINDO para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14 1o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.15 2o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.16 3o quadro para o exemplo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.17 Modelo LINDO para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.18 1o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.19 2o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.20 3o quadro para o exemplo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.21 Modelo LINDO para o PPL dos Nutrientes . . . . . . . . . . . . . . . . . . . . . . 1.22 REPORTS WINDOW para o PPL dos Nutrientes . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 Modelagem do Exemplo da seo 2.2.1 no Excel . . . . . . . . . . . . . . . . . . . . Janela da ferramenta SOLVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Escolha da Clula de Destino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
iii
Janela do Solver aps a designao das clulas variveis . . . . . . . . . . . . . . . Formato da entrada da 1a e 2a restries . . . . . . . . . . . . . . . . . . . . . . . . Janela de entrada dos parmetros do SOLVER para o Exemplo da seo 2.2.1 . . . Janela de Opes do SOLVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opes de Resultado da ferramenta SOLVER . . . . . . . . . . . . . . . . . . . . . Resultados inseridos na planilha . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20 20 22 22 22 24 24 24 26 26 26 28 28 29 29 31 32 33 34 38 38 38 40 40 40 41 43 43 45 45 46 49
2.10 Modelagem do Exemplo da seo 2.2.2 no Excel . . . . . . . . . . . . . . . . . . . . 2.11 Janela de entrada dos parmetros do SOLVER . . . . . . . . . . . . . . . . . . . . 2.12 Resultados inseridos na planilha para o exemplo da seo 2.2.2 . . . . . . . . . . . 2.13 Modelagem do Exemplo da seo 2.2.3 no Excel . . . . . . . . . . . . . . . . . . . . 2.14 Janela de entrada dos parmetros do SOLVER . . . . . . . . . . . . . . . . . . . . 2.15 Resultados inseridos na planilha para o exemplo da seo 2.2.3 . . . . . . . . . . . 2.16 Modelagem do Exemplo da seo 2.2.4 no Excel . . . . . . . . . . . . . . . . . . . . 2.17 Janela de entrada dos parmetros do SOLVER . . . . . . . . . . . . . . . . . . . . 2.18 Resultados inseridos na planilha para o exemplo da seo 2.2.4 . . . . . . . . . . . 2.19 Modelagem do Exemplo da seo 2.2.5 no Excel . . . . . . . . . . . . . . . . . . . . 2.20 Janela de entrada dos parmetros do SOLVER . . . . . . . . . . . . . . . . . . . . 2.21 Resultados inseridos na planilha para o exemplo da seo 2.2.5 . . . . . . . . . . . 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 Tela Inicial do Visual XPRESS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo XPRESS para o exemplo da seo 3.2.1 . . . . . . . . . . . . . . . . . . . . Janela de denio do tipo de problema . . . . . . . . . . . . . . . . . . . . . . . . Janela com a soluo do problema . . . . . . . . . . . . . . . . . . . . . . . . . . . Janela mostrando a melhor soluo do problema . . . . . . . . . . . . . . . . . . . Janela com os valores para a varivel de deciso xi . . . . . . . . . . . . . . . . . . Modelo XPRESS para o exemplo da seo 3.2.2 . . . . . . . . . . . . . . . . . . . . Arquivo contendo a matriz de restries . . . . . . . . . . . . . . . . . . . . . . . . Modelo XPRESS para o exemplo da seo 3.2.3 . . . . . . . . . . . . . . . . . . . .
3.10 Arquivos contendo o vetor de restries(b) e o vetor de custos(c) e os parmteros . 3.11 Modelo XPRESS para o exemplo da seo 3.2.4 . . . . . . . . . . . . . . . . . . . . 3.12 Arquivo contendo a matriz esparsa usada no exemplo da seo 3.2.4 . . . . . . . . 3.13 Modelo XPRESS para o exemplo da seo 3.2.5 . . . . . . . . . . . . . . . . . . . . 3.14 Modelo XPRESS para o exemplo da seo 3.2.6 . . . . . . . . . . . . . . . . . . . .
Padres de Corte para o exemplo da seo 4.2.1 . . . . . . . . . . . . . . . . . . . . Tela Inicial do LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modelo LINGO para o exemplo da seo 4.2.1 . . . . . . . . . . . . . . . . . . . . . Janela de Resultados do LINGO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Relatrio de Soluo do LINGO para o Exemplo da seo 4.2.1 . . . . . . . . . . . Modelo LINGO para o exemplo da seo 4.2.2 . . . . . . . . . . . . . . . . . . . . . Modelo LINGO para o exemplo da seo 4.2.3 . . . . . . . . . . . . . . . . . . . . . Janela de Opes de Congurao do LINGO . . . . . . . . . . . . . . . . . . . . . Anlise de Sensibilidade para o exemplo da seo 4.2.3 . . . . . . . . . . . . . . . .
52 52 52 53 57 57 59 60 60 64 64 65
4.10 Modelo LINGO para o exemplo da seo 4.2.4 . . . . . . . . . . . . . . . . . . . . . 4.11 Modelo LINGO para o exemplo da seo 4.2.5 . . . . . . . . . . . . . . . . . . . . . 4.12 Planilha do Excel usada no Exemplo seo 4.2.5 . . . . . . . . . . . . . . . . . . .
Captulo 1
LINDO
1.1 Introduo
1.1.1 O que o LINDO?
LINDO (Linear, INteractive, and Discrete Optimizer) uma conveniente, mas poderosa ferramenta para resolver Problemas de Programao linear, inteira e quadrtica.
Funo objetivo (fo) que dever iniciar com os comandos MAX para maximizar e MIN para
Minimizar e frente dever ser colocada a funo objetivo.
A declarao SUBJECT TO (sujeito a) que pode ser substitudo por st ou s.t. e logo aps
sero declaradas as restries do problema.
Problema da Dieta
Um nutricionista precisa estabelecer uma dieta contendo, pelo menos, 11mg de vitamina A, 70mg de vitamina C e 250 mg de vitamina D. A tabela abaixo resume a quantidade de cada
vitamina em disponibilidade nos alimentos leite, carne, peixe e salada e apresenta, tambm, a necessidade diria dessas vitaminas e os custos de cada alimento. Calcular as quantidades dos quatro alimentos que devem ser includos na dieta diria, a m de que os seguintes requisitos nutricionais sejam satisfeitos a custo mnimo.
Leite (l)
Carne (Kg)
2 mg 20 mg 70 mg 5,00
Peixe (Kg)
10 mg 10 mg 10 mg 7,00
Salada (100g)
20 mg 30 mg 80 mg 1,00
min s.a
+ + + + ,
+ + + + ,
+ + + + ,
11 70 250 0
Figura 1.1: Modelo LINDO para o problema da dieta Depois de digitado o modelo clique no menu SOLVE COMPILE MODEL(CTRL+E), em seguida clique novamente em SOLVE SOLVE(CTRL+S). Aparecer uma tela parecida como na gura 1.2.
por um modelo de escrivaninha, uma mesa de reunio, um armrio e uma prateleira. Cada tipo de mvel consome uma certa quantidade de matria-prima, conforme a tabela abaixo. A escrivaninha vendida por 100 u.m., a mesa por 80 u.m.,o armrio por 120 u.m. e a prateleira por 20 u.m. Pede-se exibir um modelo de programao linear que maximize a receita com a venda dos mveis. Matria-prima consumida por cada mvel
Quantidade de material em metros consumidos por unidade de produto Escrivaninha Mesa Armrio Prateleira
1 0 3 100 1 1 2 80 1 1 4 120 4 2 0 20
max s.a
100x1 x1 3x1 x1
+ + + ,
80x2 x2 x2 2x2 x2
+ + + + ,
120x3 x3 x3 4x3 x3
+ + + ,
Para este PPL temos duas formas de model-lo no LINDO. Em ambas deve ser acrescentado o comando GIN [nome da varivel], indicando que aquela varivel do tipo inteiro, como na gura 1.3. Quando vrias variveis so inteiras o comando GIN pode ser utilizado como mostrado na gura 1.4, ou seja, GIN [nmero de variveis inteiras].
Problema da Confeitaria
Uma confeitaria produz dois tipos de bolos de sorvete: chocolate e creme. Cada lote de bolo de chocolate vendido com um lucro de 3 u.m. e os lotes de creme com o lucro de 1 u.m. Contratos com vrias lojas impem que sejam produzidos no mnimo 10 lotes de bolo de chocolate por dia e que o total de lotes fabricados nunca seja menor do que 20. O mercado s capaz de consumir at 40 bolos de creme e 60 de chocolate. As mquinas de preparao de sorvete disponibilizam 180 horas de operao, sendo que cada lote de bolos de chocolate consome 2 horas de trabalho e cada lote de bolos de creme 3 horas. Determinar o esquema de produo que maximize os lucros com a venda dos bolos de sorvete. Modelando o problema, obtemos o seguinte PPL:
Figura 1.4: Forma alternativa do Modelo LINDO para o problema da fbrica de mveis
max s.a
x1 3x1 x1 x1 x1
+ + +
3x2 2x2 x2 x2 x2 x2
180 20 40 60 10 0
Neste modelo podemos observar a presena de variveis limitadas superiormente e inferiormente. Neste caso, para evitar a ampliao da dimenso da base, devemos colocar aps o comando END, os comandos SUB [nome da varivel] [valor limite] para limitar a varivel superiormente e SLB [nome da varivel] [valor limite] para limitar a varivel inferiormente. A gura 1.5 ilustra a utilizao de variveis canalizadas.
Um determinado conjunto de armas antiareas est distruibudo de forma a defender uma cidade de um ataque. So n plataformas de msseis. Sabe-se que dij a distncia entre a plataforma da arma i e a ameaa j (avio inimigo ou mssil), que o alcance mximo dos msseis de ri , que o custo de cada tiro sobre uma ameaa j de cij e o valor de neutralizao da ameaa vj . Em cada ataque, o sistema de defesa deve selecionar, dentre m ameas, apenas k possveis alvos. Elaborar o modelo matemtico de alocao arma x alvo que minimiza o custo de defesa. Para este problema tomaremos a seguinte varivel de deciso: 1 Caso a arma i seja designada ameaa j, xij = , i = 1, ..., n e j = 1, ..., m 0 Caso contrrio. Consideraremos ainda os seguintes dados:
Plataforma i P1
P2
Dados sobre as Plataformas antiareas Ameaa Distncia da Alcance Custo j ameaa j (dij ) (ri ) (cij ) Avio1 200 150 5 Avio2 100 4 Mssil1 150 2 Mssil2 200 1 Avio1 150 200 5 Avio2 100 5 Mssil1 20 3 Mssil2 80 2
max
j =1 m
vj (
i=1
xij
i=1
cij xij )
s.a
j =1 n
1, j = 1, ..., m xij = k
Figura 1.6: Modelo LINDO para o problema da defesa antiarea Deve ser observado que o modelo apresentado na gura 1.6 o resultado da aplicao da
min s.a
5x1 x1 x1 x1
+ +
x2 x2 x2 x2
qq.
5 7 0
Neste exemplo estamos tomando como exemplo que a varivel x2 livre, ou seja, pode assumir qualquer valor. Para modelarmos este PPL utilizando o LINDO devemos acrescentar aps o comando END, o comando FREE <nome da varivel ou nmero de variveis>, conforme mostra a gura 1.7.
Comando
Teclas de atalho
CT RL + E CT RL + N ALT + 7
Exemplo 1:
Primeiramente devemos digitar o PPL. Vamos tomar como exemplo o PPL abaixo:
min s.a
+ + ,
15 10 0
Antes de gerarmos o 1o quadro devemos compilar o modelo (CT RL + E ). Para gerarmos o primeiro quadro para este modelo pressionamos as teclas ALT + 7. O quadro gerado apresentado na gura 1.9. Agora vamos fazer o pivoteamento. Pressione as teclas CT RL + N para a aparecer a janela da gura 1.10. Nesta janela, selecionamos a opo USE MINE e escolhemos a varivel que vai entrar na base (Variable Selection) e a varivel que vai sair da base (Row Selection), onde SLK 2 e 3 so as variveis de folga. Clique em CLOSE e depois em CANCEL. Gere o novo quadro usando as teclas ALT + 7. O segundo quadro mostrado na gura 1.11. Pela anlise do quadro vemos que ainda no obtemos a melhor soluo, ento devemos repetir os passos citados acima at encontrar a melhor soluo para o PPL, ou seja, fazemos um novo pivoteamento e geramos um novo quadro. Para isto devemos pressionar novamente CT RL + N e selecionar a varivel que deve entrar na base e aquela que deve sair, feito isso geramos o novo quadro. Para o nosso exemplo o novo quadro (ALT + 7) apresentado na gura 1.12. Como podemos observar este quadro timo, portanto encontramos a melhor para o problema.
Exemplo 2:
min s.a 6x1 3x1 5x1 x1 + + , 10x2 5x2 2x2 x2
15 10 0
Para este exemplo temos o modelo LINDO apresentado na gura 1.13. Vamos resolver este problema utilizando quadros tableau para isto vamos seguir os seguintes passos:
1o ) Geramos o primeiro quadro pressionando as teclas ALT + 7. (Figura 1.14) 2o ) Atravs da anlise do quadro decidimos qual varivel deve entrar na base e qual deve sair
(CT RL + N ). (Figura 1.10)
3o ) Geramos um novo quadro (ALT + 7). (Figura 1.15) 4o ) Analisamos este novo quadro. Observamos para este exemplo que no existe cj < 0, mas
a varivel X1 que no est na base tem coeciente igual a 0. Portanto colocando X1 na base obtemos uma outra soluo tima, como mostra a gura 1.16. Para este exemplo temos vrias solues timas e elas so dadas pela seguinte equao:
Exemplo 3:
min s.a 2x1 x1 0.5x1 x1 + + , 2x2 x2 x2 x2
1 2 0
Aps digitarmos o modelo e o compilarmos, geraremos o 1o quadro (Figura 1.18). Logo aps utilizaremos o quadro de pivoteamento e decidiremos qual varivel entra e qual varivel sai da base (gura 1.10) e analisamos o novo quadro (gura 1.19), decidimos qual varivel entra e qual varivel. Analisando o 3o quadro (gura 1.20 observamos que se a varivel SLK 2 entrar na base encontraremos uma soluo melhor ( cj < 0), mas os coecientes das restries so negativos, portando nenhuma varivel pode entrar na base, portanto este problema no tem soluo.
nal que satisfaa s exigncias mnimas dos animais em termos de nutrientes. A composio e as exigncias esto apresentadas no quadro abaixo:
Nutrientes
1 2 3 4
Rao 1
30 20 25 25 1.00
Custo/Kg
seguintes questes:
O objetivo conseguir uma mistura de mnimo custo. Para este exemplo responderemos as
1) Qual o intervalo de estabilidade para o custo da primeira rao? 2) Qual o desconto, em reais, no preo segunda rao a partir do qual seu uso interessante? 3) Qual o preo mximo da terceira rao que no altera a quantidade tima encontrada? 4) Se a exigncia do nutriente 1 passasse de 6 para 7 Kg em cada 100 Kg de mistura, qual a variao de preo que ocorreria? 5) Para cada diminuio de 1 Kg de nutriente 4 na mistura, o custo desta cai em R$ 3,05. Essa informao vale at para quantos quilos diminudos? 6) Suponha que o pecuarista pudesse usar um quarto tipo de rao ao custo de R$ 1,10/Kg, e que essa rao tivesse 25% de cada nutriente. Valeria a pena usar esse tipo de rao? Para responder estas questes primeiramente vamos modelar este PPL:
min s.a
+ + + + + ,
+ + + + + ,
6 4 4 6 0
O modelo LINDO para este PPL apresentado na gura 1.21. Depois de digitado o modelo, vamos compil-lo (CT RL+E ) e depois resolv-lo (CT RL+S ), mas desta vez vamos responder sim a pergunta DO RANGE(SENSITIVITY)ANALYSIS?, ou seja, vamos fazer a anlise de sensibilidade deste PPL. A janela REPORTS WINDOW mostrar a tela mostrada na gura 1.22 e a partir desta janela que responderemos as perguntas para este PPL. 1) Para responder esta pergunta vamos analisar o campo OBJ COEFICIENT RANGES da janela REPORTS WINDOW. O campo "OBJ COEFICIENT RANGES"nos apresenta os subcampos
ALLOWABLE INCREASE E ALLOWABLE DECREASE que se referem ao quanto o custo pode aumentar ou pode diminuir para que os valores timos de cada rao permaneam o mesmo, respectivamente. Ento para o nosso exemplo vamos analisar a varivel x1 , a qual se refere Rao 1. Podemos observar que o custo desta rao pode aumentar at R$0.117857 e diminuir em at R$0.187500 que a quantidade tima da rao continuar a mesma. Ou seja:
c4 - z4 z4 = (cB )t y4 y4 = B 1 a4
A matriz B 1 pode ser encontrada atravs do TABLEAU nal do PPL. Ento pressionamos as teclas ALT + 7 para aparecer o TABLEAU na janela REPORTS WINDOW, a matriz B 1 se encontra abaixo das variveis de folga e como no nosso PPL todas as restries so de ento devemos multiplicar cada coluna da matriz por -1. Portanto temos que: 2.63 0 0 0.30 0.32 1 0 0.20 B 1 = 0.26 0 1 0.25 4.21 0 0 1.05 Portanto, temos que: 2.63 0 0 0.32 1 0 y4 = 0.26 0 1 4.21 0 0 Da,
z4 =
1.30
Portanto,
Captulo 2
SOLVER (EXCEL)
2.1 O que o SOLVER?
O Solver faz parte de um conjunto de programas algumas vezes chamado de ferramentas de anlise hipottica. Com o Solver voc pode localizar um valor ideal para uma frmula em uma clula chamada de clula de destino em uma planilha. O Solver trabalha com um grupo de clulas relacionadas direta ou indiretamente com a frmula na clula de destino. O Solver ajusta os valores nas clulas variveis que voc especicar chamadas de clulas ajustveis para produzir o resultado especicado por voc na frmula da clula de destino. Voc pode aplicar restries para restringir os valores que o Solver poder usar no modelo e as restries podem se referir a outras clulas que afetem a frmula da clula de destino. Poderemos visualizar isto melhor atravs de exemplos. No nosso curso, usaremos o SOLVER para resolver Problemas de Programao Linear.
16
Fbrica 1 2 3 4
Um acordo trabalhista assinado requer que pelo menos 250 carros sejam produzidas na fbrica 3. Existem 3200 horas de mo-de-obra e 4000 unidades de material que podem ser alocados s quatro fbricas. O modelo de deciso do problema dado abaixo, onde xj representa a quantidade de automveis a serem fabricadas na fbrica j = 1, 2, 3, 4.
min s.a
+ + + + ,
+ + + + ,
+ + + + ,
Para resolvermos este PPL utilizando o Excel, devemos primeiramente designar uma clula para representar cada uma das seguintes entidades:
Funo Objetivo (FO) (Expresso a ser minimizada ou maximizada); Varveis de Deciso (variveis que o modelador pode alterar seu valor); Para cada restrio temos uma clula representando o lado esquerdo da restrio (LHS) e
outra representando o lado direito darestrio (RHS).
Figura 2.1: Modelagem do Exemplo da seo 2.2.1 no Excel A gura 2.1 apresenta uma das possveis maneiras de representar o PPL em uma planilha do Excel. Nesta planilha as clulas a seguir designaro cada uma das entidades citadas anteriormente.
B7 ir representar o valor da FO a ser minimizada; B6 a E6 representaro os valores que as variveis de deciso assumiro na soluo; F11 a F14 iro representar os LHS das 4 restries; G11 a G14 iro representar os RHS das 4 restries.
Para que possamos denir cada uma das clulas anteriormente citadas necessitamos inserir uma srie de parmetros do nosso PPL, tais como todos os coecientes das restries e da FO. Para lembrar o que cada clula representa aconselhvel a colocao de ttulos que especiquem o contedo de cada clula (clulas com texto). As clulas B5 a E5 so utilizadas para inserir os valores dos coecientes da FO, enquanto as clulas de B11 a E14 representam os coecientes das 4 restries. Agora devemos denir cada uma das entradas citadas anteriormente. A tabela a seguir representa as frmulas colocadas em cada uma destas clulas. Frmulas utilizadas nas clulas da modelagem do Exemplo 1 =B5*B6+C5*C6+D5*D6+E5*E6 FO =B11*$B$6+C11*$C$6+D11*$D$6+E11*$E$6 LHS da 1a restrio =B12*$B$6+C12*$C$6+D12*$D$6+E12*$E$6 LHS da 2a restrio =B13*$B$6+C13*$C$6+D13*$D$6+E13*$E$6 LHS da 3a restrio =B14*$B$6+C14*$C$6+D14*$D$6+E14*$E$6 LHS da 4a restrio
Obs.: os smbolos $ signicam que a linha e a coluna so xos. Precisamos agora avisar ao Excel quais so as clulas que representam nossa FO, as variveis de deciso, as restries do modelo, e nalmente, mandar o Excel resolver para ns. Isto feito utilizando a ferramenta SOLVER do Excel. Para tal, clique com o boto esquerdo do mouse sobre o menu FERRAMENTAS e logo em seguida em SOLVER, caso a ferramenta SOLVER no esteja disponvel, clique no menu FERRAMENTAS e depois em SUPLEMENTOS e marque a opo SOLVER para que a mesma que disponvel, o Excel instalar a ferramenta tornando-a disponvel para uso. Aps este procedimento aparecer na tela a janela representada pela gura 2.2. Nesta janela que sero informadas ao software as clulas que representaro a FO, as variveis de deciso e as restries. Na parte superior da janela da gura 2.2 aparece um campo para a entrada de dados chamado
"Denir clula de destino" que representar o valor da FO. Existem duas maneiras para designar
esta clula. A primeira clicar sobre o cone que est do lado direito do campo, que levar voc
a planilha de dados, nesse ponto devemos clicar sobre a clula que representa a FO e pressionar a tecla ENTER para voltar a janela do SOLVER. A segunda digitar o nome da clula (B7 no nosso exemplo) no campo. Realizando uma das duas maneiras, a janela resultante apresentada na gura 2.3. Na linha seguinte so apresentadas as opes de maximizar, minimizar e atingir valor. Dependendo do problema devemos clicar sobre uma das trs, no nosso exemplo devemos clicar sobre Min, pois nosso exemplo de minimizao. A opo "Valor de" pode ser utilizada em anlise do tipo ponto de equilbrio, onde desejamos que a funo Lucro (por exemplo) atinja o valor de 0. Nos casos de Programao Linear esta opo no ser utilizada. Na prxima linha h um campo denominado "Clulas Variveis". Neste campo sero inseridas as clulas que representaro as variveis de deciso. Os valores podem ser inseridos como o caso da FO, isto , clicando sobre o cone direita do campo e marcando as clulas escolhidas ou simplesmente digitando seus nomes utilizando as regras do Excel para tal. Utilizando uma das maneiras, a janela ter o formato da gura 2.4. O prximo passo designar as restries do problema. Devemos inserir uma restrio ou um grupo de restries (desde que as restries tenham o mesmo sinal de restrio e estejam adjacentes) de cada vez. Para inserir a 1a restrio devemos clicar no boto "Adicionar" para aparecer uma janela de entrada de restries. A janela de entrada de restries tem trs campos, que representam o LHS - "Referncia de
clula:" ( esquerda), o sinal da restrio (ao centro), e o RHS - "Restrio" ( direita). Como
j mencionado anteriormente, o LHS representa a equao do lado esquerdo da restrio (o lado esquerdo do dicionrio modicado). O RHS representa o lado direito da restrio (a constante do dicionrio). A gura 2.5 representa a entrada da 1a e 2a restries. Para entrar com os valores nos campos, deve-se proceder como nos casos anteriores, usando o cone direita ou digitando o nome da clula. O passo seguinte ser o de clicar no boto "OK", no caso de no haver nenhuma outra restrio, ou no boto "Adicionar" para conrmar esta restrio e abrir espao para uma nova entrada. No nosso exemplo, devemos clicar em "Adicionar" e inserir as outra restries. Ao nal de todas as entradas a janela do SOLVER ter a forma da gura 2.6. Devemos agora inserir as restries de no-negatividade e denir que o modelo de Programao Linear, para isto, devemos clicar no boto "Opes" e marcar as opes "Presumir modelo linear" e "Presumir no negativos" como mostrada na gura 2.7 e depois clique no boto "OK" para
conrmar. Uma vez inserido o modelo e suas caractersticas, devemos efetivamente resolv-lo. Para tanto basta clicar no boto "Resolver" na janela dos parmetros do SOLVER do Excel. Se o modelo foi corretamente inserido, ser processado e o resultado aparecer automaticamente na planilha. Aparecer uma janela como a mostrada na gura 2.8. Se observarmos valores incoerentes ou inesperados, devemos neste ponto clicar na opo "Restaurar Valores Originais" para restaurar os valores iniciais do modelo. Existe ainda a opo de requisitar trs tipos de relatrios (lado direito da janela). Ao clicar no boto "OK", a janela de Resultados do SOLVER ser apagada e os resultados aparecero na planilha como mostrado na gura 2.9.
Tipo de Emprstimo
Pessoal Compra de automvel Compra de casa prpria Agrcola Comercial
Taxa de Juro
0,140 0,130 0,120 0,125 0,100
Os dbitos no honrados so assumidos como irrecuperveis e, portanto, no produzem retorno. A competio com outras instituies similares, nas reas mencionadas, requer que o Banco aloque, pelo menos 40% do total disponvel, em emprstimos agrcolas e comerciais. Para apoiar a indstria da construo civil na regio, os emprstimos para compra da casa prpria devem ser, pelo menos, 50% do total alocado para emprstimos pessoais e destinados a compra de carro. Alm disso, o Banco deseja incluir na sua poltica de emprstimos a condio de que a razo entre o total de dbitos no honrados em todos os emprstimos e o total emprestado, no exceda 0,04. Formule um modelo de programao linear para otimizar a poltica de crdito do Banco. O modelo de deciso do problema dado abaixo, onde xj representa a quantidade de dinheiro alocado para emprstimos do tipo j = (1=Pessoal, 2=Compra de Automveis, 3=Compra de Casa
Figura 2.6: Janela de entrada dos parmetros do SOLVER para o Exemplo da seo 2.2.1
max s.a
+ + + ,
+ + + ,
0, 116x3 x3 x3 0, 01x3 x3
+ +
0, 119x4 x4 x4 0, 01x4 x4
+ + + ,
0, 098x5 x5 x5 0, 02x5 x5
+ ,
12 4,8 0 0 0
Para resolvermos este PPL, devemos proceder da mesma forma apresentada no exemplo da seo 2.2.1, s que o modelo deve ser parecido com o da gura 2.10. A gura 2.10 apresenta uma das possveis maneiras de representar o PPL em uma planilha do Excel. Nesta planilha as clulas a seguir designaro cada uma das entidades:
B7 ir representar o valor da FO a ser maximizada; B6 a F6 representaro os valores que as variveis de deciso assumiro na soluo; G11 a G14 iro representar os LHS das 4 restries; H11 a H14 iro representar os RHS das 4 restries.
As frmulas utilizadas so apresentadas na tabela a seguir. Frmulas utilizadas nas clulas da modelagem do Exemplo 2 B7 =B6*B5+C6*C5+D6*D5+E6*E5+F6*F5 G11 =B11*$B$6+C11*$C$6+D11*$D$6+E11*$E$6+F11*$F$6 G12 =B12*$B$6+C12*$C$6+D12*$D$6+E12*$E$6+F12*$F$6 G13 =B13*$B$6+C13*$C$6+D13*$D$6+E13*$E$6+F13*$F$6 G14 =B14*$B$6+C14*$C$6+D14*$D$6+E14*$E$6+F14*$F$6 A janela com os parmetros do SOLVER apresentado na gura 2.11 e a planilha com os resultados mostrada na gura 2.12.
TOTAL
A LCL Motores deseja determinar quantos motores devem ser produzidos em sua fbrica e quantos devem ser produzidos de forma terceirizada para atender demanda de pedidos. Seja Fi o nmero de motores fabricados pela LCL do modelo i (i=1,2,3) e Ti o nmero de motores terceirizados pela LCL do modelo i(i=1,2,3). O modelo de deciso do problema dado a seguir.
min s.a
50F1 F1 2, 5F1 F1
+ + + +
90F2 2F 2 F2 F2
+ + + +
120F3 0, 5F3 4F 3 F3
65T1 T1
92T2
140T3 = = =
T2 + T3
Fi , Ti 0, i=1,2,3
Para resolvermos este PPL, devemos proceder da mesma forma apresentada no exemplo da seo 2.2.1, s que o modelo deve ser parecido com o da gura 2.13. A gura 2.13 apresenta uma das possveis maneiras de representar o PPL em uma planilha do Excel. Nesta planilha as clulas a seguir designaro cada uma das entidades:
B7 ir representar o valor da FO a ser minimizada; B6 a G6 representaro os valores que as variveis de deciso assumiro na soluo; H11 a H15 iro representar os LHS das 5 restries; I11 a I15 iro representar os RHS das 5 restries.
As frmulas utilizadas so apresentadas na tabela a seguir. Frmulas utilizadas nas clulas da modelagem do Exemplo 3 =B6*B5+C6*C5+D6*D5+E6*E5+F6*F5+G6*G5 =B11*$B$6+C11*$C$6+D11*$D$6+E11*$E$6+F11*$F$6+G11*$G$6 =B12*$B$6+C12*$C$6+D12*$D$6+E12*$E$6+F12*$F$6+G12*$G$6 =B13*$B$6+C13*$C$6+D13*$D$6+E13*$E$6+F13*$F$6+G13*$G$6 =B14*$B$6+C14*$C$6+D14*$D$6+E14*$E$6+F14*$F$6+G14*$G$6 =B15*$B$6+C15*$C$6+D15*$D$6+E15*$E$6+F15*$F$6+G15*$G$6
A janela com os parmetros do SOLVER apresentado na gura 2.14 e a planilha com os resultados mostrada na gura 2.15.
- No mais de 25% do total aplicado deve ser investido em um nico investimento. - Um valor superior a 50% do total aplicado deve ser investido em ttulos de maturidades maiores que 10 anos. - O total aplicado em ttulos de alto risco deve ser, no mximo, de 50% do total investido. A tabela a seguir mostra os dados dos ttulos selecionados. Determine qual percentual do total deve ser aplicado em cada tipo de ttulo.
1 2 3 4 5 6
Retorno Anual
8,7% 9,5% 12,0% 9,0% 13,0% 20,0%
Risco
max
s.a
j =1
cj Pj P1 P1 + + P2 P2 + + P3 + + P4 + P5 P5 P5 + + P6 P6
= 100 50 50
P3 Pi 25, i = 1, . . . , 6 Pi 0, i = 1, . . . , 6
0, 00087 P1 0, 00095 P2 0, 00120 P3 onde c= e P= P4 0, 00090 0, 00130 P5 0, 00200 P6 Para resolvermos este PPL, devemos proceder da mesma forma apresentada no exemplo da
seo 2.2.1, s que o modelo deve ser parecido com o da gura 2.16. A gura 2.16 apresenta uma das possveis maneiras de representar o PPL em uma planilha do Excel. Nesta planilha as clulas a seguir designaro cada uma das entidades:
B7 ir representar o valor da FO a ser maximizada; B6 a G6 representaro os valores que as variveis de deciso assumiro na soluo; H11 a H19 iro representar os LHS das 9 restries; I11 a I19 iro representar os RHS das 9 restries.
As frmulas utilizadas so apresentadas na tabela a seguir.
Frmulas utilizadas nas clulas da modelagem do Exemplo 4 =B6*B5+C6*C5+D6*D5+E6*E5+F6*F5+G6*G5 =B11*$B$6+C11*$C$6+D11*$D$6+E11*$E$6+F11*$F$6+G11*$G$6 =B12*$B$6+C12*$C$6+D12*$D$6+E12*$E$6+F12*$F$6+G12*$G$6 =B13*$B$6+C13*$C$6+D13*$D$6+E13*$E$6+F13*$F$6+G13*$G$6 =B14*$B$6+C14*$C$6+D14*$D$6+E14*$E$6+F14*$F$6+G14*$G$6 =B15*$B$6+C15*$C$6+D15*$D$6+E15*$E$6+F15*$F$6+G15*$G$6 =B16*$B$6+C16*$C$6+D16*$D$6+E16*$E$6+F16*$F$6+G16*$G$6 =B17*$B$6+C17*$C$6+D17*$D$6+E17*$E$6+F17*$F$6+G17*$G$6 =B18*$B$6+C18*$C$6+D18*$D$6+E18*$E$6+F18*$F$6+G18*$G$6 =B19*$B$6+C19*$C$6+D19*$D$6+E19*$E$6+F19*$F$6+G19*$G$6
A janela com os parmetros do SOLVER apresentado na gura 2.17 e a planilha com os resultados mostrada na gura 2.18.
Tipo de Petrleo 1 2 3 4
Tipo de Gasolina
Especicao
No mais que 30% de 1 No menos que 40% de 2 No mais que 50% de 3 No mais que 30% de 1 No menos que 10% de 2 No mais que 70% de 1
Onde xij nmero de barris de petrleo de tipo j (j = 1, 2, 3, 4) que sero destinados produo da gasolina i (i = A-gasolina Amarela, Z-gasolina aZul e S-gasolina Superazul). O modelo de deciso para este problema apresentado a seguir:
15xS 3 + 8xS 4
4) xA4 + xZ 4 + xS 4 1.800 5) 0, 7xS 1 0, 3xS 2 0, 3xS 3 0, 3xS 4 0 6) 0, 4xS 1 + 0, 6xS 2 0, 4xS 3 0, 4xS 4 0 7) 0, 5xS 1 0, 5xS 2 + 0, 5xS 3 0, 5xS 4 0 8) 0, 7xZ 1 0, 3xZ 2 0, 3xZ 3 0, 3xZ 4 0 9) 0, 9xZ 1 0, 1xZ 2 0, 1xZ 3 0, 1xZ 4 0 10) 0, 3xA1 0, 7xA2 0, 7xA3 0, 7xA4 0 11) xA1 , xA2 , xA3 , xA4 , xZ 1 , xZ 2 , xZ 3 , xZ 4 , xS 1 , xS 2 , xS 3 , xS 4 0 J denido o problema vamos agora model-lo no Excel. Para resolvermos este PPL, devemos proceder da mesma forma apresentada no exemplo da seo 2.2.1, s que o modelo deve ser parecido com o da gura 2.19.
Figura 2.19: Modelagem do Exemplo da seo 2.2.5 no Excel A gura 2.19 apresenta uma das possveis maneiras de representar o PPL em uma planilha do Excel. Nesta planilha as clulas a seguir designaro cada uma das entidades:
C7 ir representar o valor da FO a ser maximizada; C6 a N6 representaro os valores que as variveis de deciso assumiro na soluo; O11 a O20 iro representar os LHS das 10 restries;
C7 P11 P12 P13 P14 P15 P16 P17 P18 P19 P20
A janela com os parmetros do SOLVER apresentado na gura 2.20 e a planilha com os resultados mostrada na gura 2.21.
Captulo 3
VISUAL XPRESS
3.1 O que o Visual XPRESS?
O XPRESS-MP, assim como o LINDO, uma poderosa ferramenta de modelagem e otimizao matemtica. Para o nosso curso utilizaremos o Visual XPRESS (verso para o Windows do XPRESS-MP) e cuja tela apresentada na gura 3.1.
max s.a
+ + + + ,
70 80.000 18 0
max
j =1 n
cj xj aij xj bi i = 1, . . . , m xj 0 , j = 1, 2 e xj Z +
j =1
s.a
Onde:
3 2 70 n=2; m=3; c= 1 1 ; a= 1500 1000 ; b = 80.000 ; x = 2 2 18 O modelo XPRESS para este exemplo apresentado na gura 3.2.
Onde:
x1 x2
LET Dene smbolos que podem ser usados depois no modelo. Aqui estamos denindo o
nmero de variveis (n) e o nmero de restries do tipo (m).
TABLES Dene as tabelas de dados a serem usadas no modelo. No nosso exemplo usaremos
trs tabelas de dados: a representando a matriz com o coeciente das restries, b representando o vetor com os termos independentes relativos s restries e c representando o vetor de custos da funo objetivo.
BOUNDS Aqui so especicados os valores pelos quais as variveis so limitados inferiormente ou superiormente, e tambm o tipo de varivel a ser utilizado (.UI. inteiras; .BV. binria; .FR. variveis livres). No nosso exemplo, estamos especicando que as variveis x1 e
DATA Usado para ler, dentro do prprio modelo, valores que sero usados nas tabelas de
dados. No nosso exemplo, estamos lendo os valores para as tabelas de dados j especicadas anteriormente (a, b e c). Para a matriz a especicamos entre parntesis o nmero da linha e depois o nmero da primeira coluna, a partir da qual sero atribudos os dados. Ex.: a(1,1)=3,2 a11 = 3 e a12 = 2.
CONSTRAINTS Dene a funo objetivo e as restries que agem nas variveis de deciso
do modelo. A funo objetivo deve ser especicada com o smbolo $ no nal, indicando que aquela especicao a funo objetivo. Para o nosso exemplo temos: RESTR(i=1:m) : SUM (j=1:n) a(i,j)*x(j) <= b(i) A especicao das restries feita na forma de somatrio, onde a matriz com os coecientes das restries multiplicada pelas variveis de deciso. importante observar que cada restrio recebe um nome. No exemplo considerado o nome da 1a restrio restr(1) e o da 2a , restr(2). O mesmo acontece com a funo objetivo, s que a multiplicao do vetor de custos pelas variveis de deciso, como mostrado abaixo: fo: SUM (j=1:n) c(j)*x(j) $
Observao: Para fazer comentrios no Visual XPRESS digite ! e logo aps o comentrio.
Depois de digitado o modelo devemos informar ao Visual XPRESS se o problema de maximizao ou de minimizao. O Visual XPRESS considera o problema de minimizao como padro. Caso o problema seja de maximizao devemos proceder da seguinte maneira: 1. Clique no menu OPTIONS e depois em OPTIMISER, aparecer uma janela como a mostrada na gura 3.3. 2. Clique com o mouse no campo ressaltado na gura 3.3 para mudar de minimizao para maximizao e vice-versa. 3. Clique no boto OK para fechar a janela. Aps informado qual o tipo do problema, vamos agora executar o modelo. Para execut-lo o modelo devemos levar em conta com quais tipos de variveis estamos trabalhando. Caso haja pelo menos uma varivel do tipo inteiro ou binrio, devemos clicar em RUN e depois SOLVE GLOBAL para indicar que estamos resolvendo um problema de programao inteira mista. Caso contrrio devemos clicar em RUN e depois SOLVE LP, isto , estamos assumindo que todas as variveis so contnuas. Depois de solucionado o problema apresentado uma janela como a mostrada na gura 3.4. Clique no boto OK para fechar a janela. Aps executar o modelo, para visualizarmos o resultado do problema devemos clicar em RUN e depois em VIEW RESULTS. Assim poderemos visualizar a melhor soluo obtida para o problema, como mostra a gura 3.5. Para visualizar o resultado clique duas vezes sobre o campo que se deseja vericar o resultado, na gura 3.6, por exemplo, estamos visualizando os valores para a varivel de deciso xi . Nos campos SHADOW PRICE e REDUCED COST so informados, respectivamente, os valores duais das restries e os custos reduzidos das variveis, isto , os valores que devem ser abatidos (ou acrescidos) aos custos das variveis de forma a torn-las atrativas.
Por falta de um local de armazenamento prprio, a produo mxima, em toneladas, est limitada a 60. A rea cultivvel do stio de 200.000m2 . Para atender as demandas de seu prprio stio, imperativo que se plante 400m2 de trigo, 800m2 de arroz e 10.000m2 de milho. O modelo de deciso para este problema apresentado a seguir:
max s.a
2, 16xT xT xT 0, 2xT xT
1, 26xA xA
0, 812xM xM xM 0, 4xM xM
+ + ,
xA 0, 3xA xA
+ + ,
Onde xi a quantidade de unidades de rea a serem plantadas na cultura do tipo i = (T-trigo, A-arroz e M-milho). Os coecientes da funo objetivo devero ser calculados multiplicando-se a produtividade por quilo pelo lucro previsto para cada quilo. O resultado do coeciente ser uma unidade monetria, no caso, o centavo. Outra forma de representar este PPL :
n
max
j =1 n
cj xj aij xj bi i = 1, 2
j =1
s.a
x1 x2 x3 xj
Observao: Vamos considerar para este exemplo que x1 = xT , x2 = xA e x3 = xM . Onde: n=3; c= 2, 16 1, 26 0, 812 ; a=
1 1 1 0, 2 0, 3 0, 4
; b=
200.000 10.000
O modelo XPRESS para este exemplo apresentado na gura 3.7. As diferenas deste exemplo para o exemplo anterior so:
x1 ; x= x2 . x3
1. O campo BOUNDS contm os valores nas quais as variveis x1 , x2 e x3 so limitadas inferiormente. Note que entre parntesis est o ndice da varivel. 2. A matriz de restries a lida em um arquivo chamado "a.dat", j digitado anteriormente contendo os valores desta matriz. Ele lido pelo comando DISKDATA (ler tabela de dados
armazenadas em arquivos no formato texto) e no pelo comando DATA como foi visto no exemplo anterior. NOTA: Se o arquivo de dados a ser lido no est armazenado no mesmo diretrio (pasta) do modelo do XPRESS alm do nome do arquivo deve ser informado tambm o caminho indicando em que local do computador ele se encontra. Ex.: a=a:\a.dat (arquivo armazenado no disquete) ou c:\Teste\a.dat (arquivo armazenado no diretrio teste no computador). O arquivo que contm a matriz de restries deve ser igual ao mostrado na gura 3.8, ele pode ser digitado em qualquer processador de texto simples, como o Bloco de Notas (NotePad) do Windows, no formato texto.
Figura 3.8: Arquivo contendo a matriz de restries Para executar o modelo e visualizar o resultado, proceda como foi descrito no exemplo da seo 3.2.1.
SEG
20
TER
20
QUA
13
QUI
10
SEX
12
SAB
16
DOM
18
Cada funcionrio trabalha 5 dias consecutivos e tem 2 dias de folga e pode comear em qualquer dia da semana. Cada funcionrio recebe $300,00 por semana. Se trabalhar aos sbados recebe em extra de $25,00 e se for aos domingos um extra de $35,00. Faa uma escala de funcionrios de forma a minimizar o gasto com pessoal. O modelo de deciso para este problema apresentado a seguir: Onde xi a quantidade de funcionrios necessrios para iniciar o trabalho no dia i = (1=DOM; 2=SEG; 3=TER; 4=QUA; 5=QUI; 6=SEX; 7=SAB).
min s.a
335x1 x1 x1 x1 x1 x1 x1 , xj Z +
+ 300x2 + + + + x2 x2 x2 x2 x2
+ 325x3 + + + + x3 x3 x3 x3 x3 x3 ,
+ 360x4 + x4 + x4 + x4 + x4 + x4 x4 ,
+ 360x5 + x5 + x5 + x5 + x5 + x5 x5 ,
+ 360x6 + x6 + x6 + x6 + x6 + x6 x6 ,
+ 360x7 + x7 + x7 + x7 + x7 + x7 x7
x2 ,
20 20 13 10 12 11 18 0
min
j =1 n
cj xj aij xj bi i = 1, . . . , m xj 0 , j = 1, 2, ..., 7 e xj Z +
j =1
s.a
300 1 1 1 1 1 1 0 1 0 0 1 0 1 1 x5
325
360
360
360
360 ;
; b= 20 20 x6 x7
t
13
10
12
16
18
O modelo XPRESS para este exemplo apresentado na gura 3.9. Neste exemplo todas as tabelas de dados so lidas atravs de arquivos armazenados no computador, inclusive os parmetros que denem as dimenses do problema. O arquivo contendo a matriz de restries pode ser digitada como foi mostrada no exemplo anterior. O vetor de termos independentes das restries (b) e o vetor de custos (c) deve ser digitado como mostra a gura 3.10, utilizando o Bloco de Notas ou outro processador de textos ASCII.
23-3
15 120
3-7
30 110
7-11
26 100
11-15
32 100
15-19
30 100
19-23
19 110
Como o gerente deve escalar os motoristas, minimizando os custos? O modelo de deciso para este problema apresentado a seguir, onde xi a quantidade de motoristas necessrios para iniciar o trabalho no horrio i = (23, 3, 7, 11, 15, 19).
min s.a
+ 110x3 + x3 x3
+ 100x7 + x7 x7 x7 ,
+ 100x11
+ 100x15
+ 110x19 + x19
x23 , xj Z +
x3 ,
+ x19 x19
15 30 26 32 30 19 0
x19 = x6 .
Outra forma de representar este PPL :
n
min
j =1 n
cj xj aij xj bi i = 1, . . . , m xj 0 , j = 1, 2, ..., 6 e xj Z +
j =1
s.a
x5
x6
O modelo XPRESS para este exemplo apresentado na gura 3.11. Neste exemplo a matriz de restrio uma matriz esparsa, ou seja, muitos de seu valores so iguais a zero. O Visual XPRESS permite ler este formato de dados de uma maneira muito simples atravs do comando DISKDATA -s. O arquivo a ser lido deve ser colocado no formato mostrado na gura 3.12. O 1o ndice deve representar o nmero da linha i, o 2o o nmero da coluna j e o 3o o valor aij .
Figura 3.12: Arquivo contendo a matriz esparsa usada no exemplo da seo 3.2.4
A modelagem deste PPL apresentado a seguir: 1; se o objeto i alocado na mochila, Seja xi = 0; caso contrrio.
n
max
i=1 n
pi xi wi xi b xj {0, 1} i = 1, ..., n
i=1
s.a
1 2 1
2 3 1
3 3 4
4 2 2
5 4 3
6 5 4
7 2 1
8 2 2
9 3 5
10 3 4
Figura 3.13: Modelo XPRESS para o exemplo da seo 3.2.5 Uma diferena deste problema para os anteriores que aqui estamos trabalhando com variveis binrias. Para informar este fato ao Visual XPRESS basta introduzir a seo BOUNDS com o comando x(i=1:n).BV. onde .BV. signica "Binary Value".
Material Recuperado 1(MR1): Composio: 60% de ferro, 20% de carvo e 20% de silcio.
Custo por Kg: $0,20.
Matria Prima
Ferro Carvo Silcio Nquel
% Mnima
60 15 15 5
% Mxima
65 20 20 8
O custo dos materiais puros so (por Kg): ferro: $0,30; carvo: $0,20; silcio: $0,28; nquel: $0,50. Deseja-se produzir 1000 Kg desta liga. Qual deve ser a composio da mistura em termos dos materiais disponveis, com menor custo por Kg? O modelo de deciso para este problema 1 = 2 = 3 = onde xi a quantidade de material i = 4= 5= 6= apresentado a seguir: ferro carvo silcio em Kg a ser utilizado na mistura. nquel MR1 MR2
min s.a
+ + +
+ + +
+ + +
+ + + +
0 0 0 0 0 0 0 0 1000 0
min
j =1 n
cj xj aij xj 0 i = 1, . . . , m1
j =1 n
s.a
bij xj 0 i = 1, . . . , m2
j =1 n
xj = 1000 xj 0 , j = 1, . . . , 6
Onde: n=6; m1=4; 0, 40 0, 15 a= 0, 15 0, 05 0.35 0.20 b= 0.20 0.08 x= x1 x2 m2=4; c= 0, 30 0, 20 0, 28 0, 50 0, 20 0, 25 ; 0, 60 0, 60 0, 60 0 0, 10 0, 85 0, 15 0, 15 0, 05 0, 05 ; 0, 15 0, 85 0, 15 0, 05 0, 10 0, 05 0, 05 0, 95 0, 05 0 0.60 0.65 0.65 0.05 0.05 0.80 0.20 0.20 0 0 ; 0.20 0.80 0.20 0 0.15 0.08 0.08 0.92 0.08 0.03 t x3 x4 x5 x6 .
j =1
Neste exemplo, informamos trs parmetros. O primeiro (n) informa o nmero de variveis, o segundo(m1) o nmero de restries do tipo e o terceiro(m2) o nmero de restries do tipo . O restante idntico aos demais problemas.
Captulo 4
LINGO
4.1 O que o LINGO?
O LINGO uma ferramenta simples para utilizar o poder da otimizao linear ou no-linear para formular problemas grandes concisamente, resolv-los e analisar a soluo. Neste curso aprenderemos algumas noes bsicas de utilizao deste poderoso software, trabalheremos com modelos simples e modelos comlexos, onde a leitura dos dados poder ser feita diretamente no LINGO ou num arquivo do bloco de notas e at mesmo em uma planilha do Excel.
50
min s.a
x1 8x1
+ +
x4 3x4
500 350
min
j =1 n
cj xj aij xj bi i = 1, 2 xj 0 , j = 1, . . . , 4 e xj Z +
j =1
s.a
1 x1 2 x2 8 4 2 0 500 onde: n=4; c= 3 ; a= 0 1 2 3 ; b= 350 e x= x3 . 2 x4 Para este exemplo, usaremos uma modelagem simples, parecida muito com a modelagem uti
lizada pelo LINDO. Primeiramente devemos abrir o LINGO, depois de aberto o LINGO mostrar uma tela em branco, parecida com o da gura 4.2 onde ser digitado o modelo. Um modelo LINGO muito parecido com o LINDO, conforme podemos observar atravs da gura 4.3. Aqui neste modelo estamos declarando a Funo-Objetivo (FO) a qual deve ser minimizada, da o comando MIN. Caso este PPL fosse de maximizao o comando a acompanhar a FO deveria ser o comando MAX. Nas duas linhas abaixo esto sendo declaradas as restries do problema. Note que no nal de cada comando devemos colocar ";". No h necessidade de digitar END ao nal do modelo. As quatro ltimas linhas esto informando ao LINGO que as variveis so do tipo inteiro, o que feito atravs do comando @GIN(nome da varivel). Os tipos de variveis que podem ser usadas com o LINGO so apresentadas na tabela a seguir. Vale lembrar que os nomes das variveis tm que ser iniciados por letras e podem ser seguidos por qualquer caracter alfanumrico.
Observao:
1. Caso queira fazer algum comentrio basta digitar "!"seguido do comentrio. 2. Voc pode dar nome s linhas das restries, para isto, basta digitar o nome da restrio entre colchetes. Ex.: [Rest1] Tabela de tipos de variveis do LINGO
EXPLICAO usado para designar variveis inteiras usado para designar variveis binrias usado para designar que a varivel livre usado para designar os valores pelos quais a varivel VAR limitada inferiormente e superiormente. Aqui temos que LI valor mnimo da varivel e LS o valor mximo, ou seja, LI VAR LS.
No nosso exemplo todas as variveis so inteiras, da a necessidades da incluso das ltimas quatro linhas ao modelo. Agora s falta resolv-lo, para isto basta clicar no menu "LINGO" e logo em seguida em "SOLVE", ou simplesmente clique no boto "SOLVE" na barra de ferramentas. Se tudo estiver digitado corretamente aparecer uma janela como a mostrada na gura 4.4.
Figura 4.4: Janela de Resultados do LINGO Clique no boto "CLOSE" para fechar esta janela, aparecer na tela uma janela com os resultados do problema obtidos pelo LINGO, conforme pode ser observado na gura 4.5. Em um relatrio de soluo do LINGO voc encontrar uma parte denominada REDUCED COST (custo reduzido) para cada varivel do problema. Ela pode ser interpretada da seguinte maneira: O custo reduzido de uma varivel do tipo real pode ser interpretado como a quantia de penalidade (positiva ou negativa, dependendo do problema) que voc teria que pagar para introduzir uma unidade daquela varivel na soluo. No nosso exemplo, a varivel x2 (caso ela fosse do tipo real) teria como custo reduzido 1, signicando que se diminuirmos uma unidade do coeciente da varivel na FO, seu uso se tornaria interessante. J a coluna SLACK or SURPLUS, indica o excesso em restries do tipo ou a folga em
restries do tipo . No nosso exemplo podemos observar que temos uma folga de 4 unidades na
Rdio
30.000 500.000 200.000
Revistas
15.000 200.000 100.000
400.000 300.000
900.000 400.000
A empresa que encomendou a campanha no quer gastar mais que $800.000 com propaganda. Alm disso, requer: a) que pelo menos 2 milhes de pessoas alcanadas sejam do sexo feminino; b) que a propaganda vinculada pela TV seja limitada a um custo de $500.000; c) que pelo menos 3 unidades de propaganda sejam vinculadas no horrio comum e pelo menos 2 durante horrio nobre; d) que o nmero de unidades de propaganda no rdio e na revista que individualmente entre 5 e 10. A modelagem para este PPL apresentada a seguir:
max s.a
+ + + ;
Onde xj nmero de unidades de propaganda a serem veiculadas no meio de comunicao j=(1: horrio comum na TV; 2: horrio nobre na TV; 3: rdio; 4: revista). Outra forma de representar o modelo de deciso deste problema :
n
max
j =1 n
cj xj aij xj bi i = 1, 2
j =1 n
s.a
dj xj 2.000.000
j =1
x1 3 ; x2 2 ; 5 x3 10 ; 5 x4 10 xj 0 , j = 1, . . . , 4 e xj Z + 400.000 900.000 40.000 75.000 30.000 15.000 800.000 onde: n=4; c= ; b= d= 500.000 ; a= 40.000 75.000 0 0 500.000 200.000 x1 x2 e x= x3 . x4 Para modelarmos este PPL no LINGO, usaremos uma forma diferente da proposta no 300.000 400.000 200.000 100.000
exem-
plo anterior. Usaremos neste problema o conceito de SETS (grupos de objetos relacionados) que normalmente so utilizados em problemas de grande porte. Em um modelo LINGO, uma seo SETS denida da seguinte forma: SETS: setname [/ member_list /] [: variable_list]; ENDSETS onde: setname o nome que voc escolhe para designar o grupo de objetos. [/member_list/] lista de membros que constituem o grupo de objetos. Tabela de exemplos Lista de Membros na forma implcita 1..n StringM..StringN dayM..dayN monthM..monthN monthYearM..monthYearN de lista de membros de um grupo de objetos Exemplo Membros do grupo 1..5 TR3..TR204 MON..FRI OCT..JAN OCT2001..DEZ2001 1, 2, 3, 4, 5 TR3, TR4,. . . ,TR204 MON,TUE,WED,THU,FRI OCT, NOV,DEC,JAN OCT2001,NOV2001,DEC2001
[:variable_list] lista de variveis (ou constantes) que tem as mesmas caractersticas do grupo de objetos. Quando h mais de uma varivel (ou constante), elas devem ser separadas por vrgula. Observao: os colchetes indicam que essas informaes so opcionais.
Exemplo:
v1 / 1..4 /: x, C, D ; Neste exemplo estamos denindo um grupo de objetos com nome v1, cujos membros so 1, 2, 3 e 4. x, C e D so variveis (ou constantes) que tm esses membros em seu domnio de denio (x(1),. . . ,x(4),C(1),. . . ,C(4),D(1),. . . ,D(4)). Um grupo de objetos tambm pode ser derivado de outros grupos, como o caso do exemplo abaixo, onde temos o grupo Matriz que depende dos grupos v1 e v2 e A uma constante (no caso, uma matriz) que tem como domnio o conjunto dos membros dos grupos anteriores(A(1,1), A(1,2),. . . ). matriz(v2, v1): A; Observao: Um SET pode ser entendido, fazendo uma analogia com a linguagem PASCAL, como uma estrutura de dados do tipo vetor (SETS simples) ou matriz (SETS derivado), onde cada posio um membro do grupo de objetos. Tambm usaremos os comando @SUM e @FOR, que so utilizados em conjunto com os grupos de objetos denidos na seo SETS. @SUM utilizado para calcular um somatrio e @FOR um comando de repetio. Usaremos tambm a seo DATA para ler os valores das constantes denidas na seo SETS. Exemplos dos comandos @FOR e @SUM e da seo DATA so mostrados na gura 4.6, onde apresentado a modelagem LINGO para este PPL. Vale notar que as variveis x1 e x2 so limitadas apenas inferiormente. Neste caso, o limite superior representado por um nmero arbitrariamente grande, por exemplo, 1E19 (1 1019 ). Para resolver o problema procede-se da mesma forma do exemplo da seo 4.2.1.
anual de 32%. ALTERNATIVA 3: Comprar Obrigaes do Tesouro, cujo preo unitrio $1,50 e cuja rentabilidade anual de 8%. Supondo que o investidor no desaja adquirir mais do que 1.750 aes e/ou letras de cmbio; que seu corretor s possa conseguir at 1.000 aes e 1.500 letras de cmbio; que o investidor queira - por medida de segurana quanto liquidez - deixar, pelo menos, $2.000 no banco; que o investimento feito em obrigaes do Tesouro no ultrapasse 1,7 vezes o depsito deixado no banco, que quantidades o investidor deve alocar a cada alternativa, considerando que o seu objetivo maximizar o seu capital no m do ano? Formule um modelo de Programao Linear para responder esta pergunta. A modelagem para este PPL apresentada a seguir:
max s.a
+ + + +
+ + +
+ +
1, 06x4 x4 x4 0, 06x4
4, 05x3
Onde x4 total deixado no banco e xj nmero de opes do tipo j=(1: aes; 2: letras de cmbio; 3: obrigaes do tesouro). Outra forma de representar o modelo de deciso deste problema :
n
max
j =1 n
cj xj aj xj = 18.000
j =1 n
s.a
bj xj 0
j =1 n
; e=
A diferena da modelagem deste PPL para os anteriores, reside no fato de que aqui os parmetros so lidos atravs do comando DATA em um arquivo de texto j previamente digitado. Utiliza-se para isto o comando @FILE(`nome do arquivo'). O nome do arquivo deve estar entre aspas simples e estar no diretrio onde foi salvo o modelo. Caso contrrio, dever ser informado o caminho completo onde o mesmo se encontra (ex.: c=@FILE(`C:\LINGO\SAMPLES\teste.txt'). Os valores nestes arquivos devem ser digitados um em cada linha. Na gura 4.7 apresentado a modelagem LINGO para este PPL usando este comando.
Figura 4.7: Modelo LINGO para o exemplo da seo 4.2.3 Para resolv-lo, devemos proceder conforme foi explicado no exemplo da seo 4.2.1. Neste exemplo mostraremos como fazer a anlise de sensibilidade no LINGO. Inicialmente necessrio ativar esta opo. Para tanto, clique no menu LINGO e logo em seguida em OPTIONS. V at a aba GENERAL SOLVER e escolha a opo PRICES & RANGES no campo DUAL
Referncias sobre anlise de sensibilidade so encontradas no captulo referente ao estudo do software LINDO.
max
i=1 n
pi xi wi xi b xj {0, 1} i = 1, ..., n
i=1
s.a
Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi ) Objeto(xi ) Peso (wi ) (em kg) Importncia (pi )
01 2 7 11 3 4 21 1 1 31 9 4 41 2 2
02 3 4 12 4 2 22 2 3 32 8 7 42 3 4
03 4 4 13 8 9 23 5 5 33 7 9 43 4 5
04 5 6 14 9 8 24 4 3 34 6 7 44 5 6
05 1 2 15 2 3 25 3 2 35 5 7 45 1 1
06 5 3 16 4 5 26 7 6 36 4 7 46 5 8
07 4 7 17 5 6 27 9 8 37 3 5 47 4 9
08 2 3 18 5 7 28 2 3 38 2 3 48 2 5
09 3 2 19 6 7 29 4 3 39 1 2 49 3 5
10 7 8 20 9 9 30 3 1 40 5 2 50 7 8
Capacidade da mochila (b) = 150 kg A modelagem LINGO deste PPL apresentado na gura 4.10. Aqui podemos observar que a nica diferena que os parmetros usados nos SETS so lidos atravs de arquivos textos com base no comando @FILE(`nome do arquivo') e as solues so geradas em arquivo texto atravs do comando @TEXT(`nome do arquivo'). Para ler os parmetros m e n em um nico arquivo, basta separ-los por til, no caso, 50 150. Notamos que este PPL seria de difcil modelagem usando a forma apresentada no exemplo da seo 4.2.1, da a comodidade da utilizao da seo SETS em problemas deste porte.
A fbrica da Companhia Coelho S.A. tem trs departamentos. O requisito de tempo em minutos que cada componente consome em cada departamento est resumido na tabela a seguir. O tempo disponvel na companhia para cada componente est listado na ltima linha. Componente Corpo Base Blindagem Disponibilidade Tempo de Preparao (em minutos) 2 5 4 49200 Tempo de molde (em minutos) 4 2 5 49200 Tempo de fabricao (em minutos) 2 4 5 49200
O modelo de deciso do problema dado abaixo, onde xij representa a quantidade de componentes i=(1=se o componente for o Corpo, 2=se o componente for a Base e 3=se o componente for a Blindagem) a serem utilizados no modo j = (A=se o componente for adquirido e F=Se o componente for fabricado).
min s.a
+ + + +
20x2F 5x 2F 2x 2F 4x 2F x 2F
+ + + +
10x1A
20x2A
16x3A
x 2F
min
j =1 n
cj xj aij xj 49.200 i = 1, 2, 3
j =1 n
s.a
dij xj 6.100 i = 1, 2, 3 xj 0 , j = 1, . . . , 6
j =1
8 20 2 5 4 0 0 0 1 0 0 10 ; a= 4 2 5 0 0 0 ; d= 0 1 0 onde: n=6; c= 10 2 4 5 0 0 0 0 0 1 20 16 Para efeito de clculo, estamos adotando que x1F =x1 , x2F =x2 , x3A =x6 .
O modelo LINGO para este PPL apresentado na gura 4.11.
1 0 0
0 1 0
0 0 1
x3F =x3 ,
A diferena deste modelo para os outros est no fato de estarmos lendo as constantes da seo SETS atravs de uma planilha do Excel e depois exportando o resultado para a mesma, utilizando a seo DATA. Tanto a leitura quanto a exportao dos dados para a planilha feita atravs do comando @OLE(`nomearq.xls',`nome do conjunto de clulas'). Para a utilizao de uma planilha do Excel, devemos denir um nome para cada conjunto de clulas referenciadas no modelo. Considerando a planilha apresentada na gura 4.12, temos os seguintes conjuntos de clulas com seus respectivos nomes:
Conjunto de clulas
B3 a G3 I5 a I7 I8 a I10 C16 B5 a G7 B8 a G10 B14 a G14
Nome
custo Coef1 Coef2 FO Rest1 Rest2 x
Bibliograa
[1] Dash Optimization Co., http://www.dashoptmization.com. XPRESS-MP - User Guide Release 10, 1999. [2] M. C .Goldbarg e H. P. L. Luna. Otimizao Combinatria e Programao Linear: Modelos e Algoritmos. Editora Campus, Rio de Janeiro, 2000. [3] Helmut Kopka and Patrick W. Dale. A Guide to LATEX. Addison-Wesley, Harlow, England, 3rd edition, 1999. [4] Gerson Lachtermacher. Pesquisa Operacional na Tomada de Decises. Editora Campus, Rio de Janeiro, 2002. [5] Lindo Systems Inc., Chicago. LINDO: User's Manual, 1996. [6] Lindo Systems Inc., Chicago. LINGO: the modeling language and optmizer, 2001.
66