You are on page 1of 72

SOFTWARES DE OTIMIZAO: MANUAL DE REFERNCIA

Alosio de Castro Gomes Jnior Marcone Jamilson Freitas Souza

Projeto patrocinado pelo programa PR-ATIVA da UFOP

DEPARTAMENTO DE COMPUTAO UNIVERSIDADE FEDERAL DE OURO PRETO Janeiro de 2004

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

Utilizando Quadros (TABLEAU) com o LINDO . . . . . . . . . . . . . . . . . . . . Anlise de Sensibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

3.2.2 3.2.3 3.2.4 3.2.5 3.2.6

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

1o quadro para o exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

2.4 2.5 2.6 2.7 2.8 2.9

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 . . . . . . . . . . . . . . . . . . . .

4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9

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.

1.1.2 Sintaxe de um Modelo LINDO


Um Modelo LINDO dever conter os seguinte itens:

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.

Para nalizar deveremos declarar o comando END.


Observao: As variveis devem ser declaradas com no mximo 8 letras e nas linhas com as restries deve ser colocado ")"logo aps o nome da restrio.

1.2 Exemplos de Modelos LINDO


1.2.1 Todas as variveis so no negativas
Seja o seguinte 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.

Alimento/ Vitamina A C D Custo (R$)

Tabela de Requisitos Nutricionais e Custo dos Alimentos 2 mg 50 mg 80 mg 1,20

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

Requisito Nutricional Mnimo


11 mg 70 mg 250 mg

Modelando o problema, obtemos o seguinte PPL:

min s.a

1, 20x1 2x1 50x1 80x1 x1

+ + + + ,

5, 00x2 2x2 20x2 70x2 x2

+ + + + ,

7, 00x3 10x3 10x3 10x3 x3

+ + + + ,

1, 00x4 20x4 30x4 80x4 x4

11 70 250 0

O modelo LINDO para este PPL apresentado na gura 1.1.

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.

1.2.2 Existem variveis inteiras


Seja o seguinte problema:

Problema da Fbrica de mveis


Uma grande fbrica de mveis dispe de um estoque de 250m de tbuas, 600m de prancha e 500m de painis de conglomerado. A fbrica normalmente oferece uma linha de mveis composta

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

Valor de Revenda (u.m.)

Tbua Prancha Painis

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

Disponibilidade do recurso (m)


250 600 500

Modelando o problema, obtemos o seguinte PPL:

max s.a

100x1 x1 3x1 x1

+ + + ,

80x2 x2 x2 2x2 x2

+ + + + ,

120x3 x3 x3 4x3 x3

+ + + ,

20x4 4x4 2x4 x4

250 600 500 0

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].

1.2.3 Existem variveis limitadas superiormente e inferiormente


Seja o seguinte problema:

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.2: Soluo para o problema da Dieta

Figura 1.3: Modelo LINDO para o problema da fbrica de mveis

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.

Figura 1.5: Modelo LINDO para o problema da confeitaria

1.2.4 Existem variveis binrias


Seja o seguinte problema:

Problema do Sistema de Defesa Antiarea

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

Valor da neutralizao (vj ) 30 30 35 35 30 30 35 35

Modelando o problema obteremos o seguinte PPL:


m n n

max
j =1 m

vj (
i=1

xij
i=1

cij xij )

s.a
j =1 n

xij 1, i = 1, ..., n xij i=1 n m


i=1 j =1

1, j = 1, ..., m xij = k

(ri dij )xij 0, i = 1, ..., n; j = 1, ..., k, ..., m


Considerando os dados da tabela dada e sendo k = m n = 2 (nmero de alvos possveis), obtemos o modelo LINDO mostrado na gura 1.6. H neste modelo oito variveis binrias. Para declar-las no LINDO, devemos acrescentar aps o comando END o comando INT <nome de cada varivel> em cada linha ou simplesmente, INT <nmero de variveis>.

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

formulao matemtica acima sem simplicao.

1.2.5 Existem variveis livres


Consideremos o seguinte PPL:

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.

Figura 1.7: Modelo LINDO para o PPL usando varivel livre

1.3 Utilizando Quadros (TABLEAU) com o LINDO


Para resolvermos PPL's utilizando quadros do SIMPLEX (tableaus) no LINDO devemos proceder da maneira que se segue, levando em considerao as seguintes teclas de atalho: Compilar (Compile Model) Fazer Pivoteameneo (Pivot) Exibir quadro (Tableau)

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

5x1 3x1 5x1 x1

+ + ,

3x2 5x2 2x2 x2

15 10 0

O modelo LINDO relativo esse PPL apresentado na gura 1.8.

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:

y = (0, 3) + (1 )(1.052, 2.368), onde [0, 1]

Exemplo 3:
min s.a 2x1 x1 0.5x1 x1 + + , 2x2 x2 x2 x2
1 2 0

Figura 1.8: Modelo LINDO para o exemplo 1

Figura 1.9: 1o quadro para o exemplo 1

Figura 1.10: Janela de Pivoteamento

Figura 1.11: 2o quadro para o exemplo 1

Figura 1.12: 3o quadro para o exemplo 1

Figura 1.13: Modelo LINDO para o exemplo 2

Figura 1.14: 1o quadro para o exemplo 2

Figura 1.15: 2o quadro para o exemplo 2

Figura 1.16: 3o quadro para o exemplo 2

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.

Figura 1.17: Modelo LINDO para o exemplo 3

Figura 1.18: 1o quadro para o exemplo 3

Figura 1.19: 2o quadro para o exemplo 3

1.4 Anlise de Sensibilidade


Para utilizarmos a anlise de sensibilidade no LINDO, tomaremos o seguinte exemplo: Um pecuarista tem disponveis trs tipos de rao para gado. Cada tipo tem sua composio em termos de quatro nutrientes. O pecuarista quer misturar essas raes para obter um produto

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

% por Kg Rao 2 Rao 3


25 30 15 30 1.20 10 20 30 40 1.30

Exigncia mnima em Kg por saco de 100 Kg


6 4 4 6

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

x1 0.30x1 0.20x1 0.25x1 0.25x1 x1

+ + + + + ,

1.20x2 0.25x2 0.30x2 0.15x2 0.30x2 x2

+ + + + + ,

1.30x3 0.10x3 0.20x3 0.30x3 0.40x3 x3

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

Figura 1.20: 3o quadro para o exemplo 3

Figura 1.21: Modelo LINDO para o PPL dos Nutrientes

Figura 1.22: REPORTS WINDOW para o PPL dos Nutrientes

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:

c1 0.18 c 1 c1 + 0.11 0.82 c 1 1.11


2) Para responder a 2a pergunta, vamos analisar a varivel x2 no campo REDUCED COST ou ento o campo ALLOWABLE DECREASE desta varivel, onde apresentado o valor para o qual o uso desta rao interessante. Para o nosso exemplo temos que o valor para o desconto deve ser de R$0.09 de forma que o uso da Rao 2 seja interessante. 3) Para encontrar o preo mximo da 3a rao que no altera a quantidade tima encontrada, devemos analisar o campo ALLOWABLE DECREASE da varivel x3 , l encontramos o valor 0.3000, portanto o preo mximo da rao 3 deve ser de R$1.60 para a que quantidade tima permanea o mesmo. 4) Esta pergunta ser respondida atravs da anlise do campo DUAL PRICE referente restrio que envolve o nutriente 1, que neste caso a restrio N1. L encontramos o valor -0.789474, que corresponde ao valor que ser acrescido (ou diminudo) ao custo total se uma unidade a mais (ou a menos) do nutriente for exigida. Ento se aumentarmos para 7 a exigncia do nutriente 1 o custo total ser aumentado em R$0.78. 5) Vamos responder esta pergunta utilizando o campo RIGHTHAND SIDE RANGES, que corresponde s restries do PPL, especicamente analisaremos o subcampo ALLOWABLE DECREASE referente ao nutriente 4, ou seja N4, que nos dar o valor que poder ser diminudo para o qual a quantidade do nutriente continuar a mesma. Portanto, podemos observar que esta informao vale at para uma diminuio de 1Kg. 6) Para respondermos esta pergunta vamos fazer as seguintes anlises:

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,

0.30 0.25 0.20 0.25 0.25 0.25 1.05 0.25

0.13 0.065 = 0.015 0.79

z4 =

1.30

0.13 0.065 0.015 = 0.96 0.79

Portanto,

c4 z4 = 1.10 0.96 = 0.14


Como c4 z4 > 0 no vale a pena usar esta rao.

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.

2.2 Exemplos de como Modelar usando o SOLVER do Excel


Para familiarizarmos com o uso do SOLVER utilizaremos uma srie de exemplos para a xao de seus principais comandos.

2.2.1 Problema da Fbrica de Automveis


Alfa Inc. deve produzir 1000 automveis Alfa. A empresa tem quatro fbricas. Devido a diferenas na mo-de-obra e avanos tecnolgicos, as plantas diferem no custo de produo unitrio de cada carro. Elas tambm utilizam diferentes quantidades de matria-prima e mo-de-obra. O custo de operao, o tempo necessrio de mo-de-obra e o custo de matria-prima para produzir uma unidade de cada carro em cada uma das fbricas esto evidenciados na tabela abaixo.

16

Fbrica 1 2 3 4

Custo Unitrio (em R$1.000,00) 15 10 9 7

Mo-de-Obra (horas de fabricao) 2 3 4 5

Matria-Prima (unidades de material) 3 4 5 6

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

15x1 2x1 3x1 x1 x1

+ + + + ,

10x2 3x2 4x2 x2 x2

+ + + + ,

9x3 4x3 5x3 x3 x3 x3

+ + + + ,

7x4 5x4 6x4 x4 x4

3200 4000 1000 250 0

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

B7 F11 F12 F13 F14

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

Figura 2.2: Janela da ferramenta SOLVER

Figura 2.3: Escolha da Clula de Destino

Figura 2.4: Janela do Solver aps a designao das clulas variveis

Figura 2.5: Formato da entrada da 1a e 2a restries

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.

2.2.2 Problema do Emprstimo do Banco


O Banco Municipal de Ouro Preto (BMOP) est formulando sua poltica de crdito para o prximo trimestre. Um total de 12 milhes ser alocado s vrias modalidades de emprstimo que ele pretende conceder. Sendo uma instituio de atendimento pleno, obriga-se a atender a uma clientela diversicada. A tabela abaixo prev as modalidades de emprstimos praticadas pelo Banco, as taxas de juro por ele cobradas e a possibilidade de dbitos no honrados, medida em probabilidade, com base nas experincias passadas.

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

Probabilidade de Dbito no honrado


0,10 0,07 0,03 0,05 0,02

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

Figura 2.7: Janela de Opes do SOLVER

Figura 2.8: Opes de Resultado da ferramenta SOLVER

Prpria, 4=Agrcola e 5=Comercial).

max s.a

0, 126x1 x1 0, 05x1 0, 06x1 x1

+ + + ,

0, 121x2 x2 0, 05x2 0, 03x2 x2

+ + + ,

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.

2.2.3 Problema da Fbrica de Motores


A LCL Motores Ltda., uma fbrica de motores especiais, recebeu recentemente R$90.000,00 em pedidos de seus trs tipos de motores. Cada motor necessita de um determinado nmero de horas de trabalho no setor de montagem e de acabamento. A LCL pode terceirizar parte da sua produo. A tabela a seguir resume estes dados.

Modelo Demanda Montagem Acabamento Custo Produo Terceirizado

3000 unid. 1 h/unid. 2,5 h/unid. R$50 R$65

2500 unid. 2 h/unid. 1 h/unid. R$90 R$92

500 unid. 0,5 h/unid. 4 h/unid. R$120 R$140

TOTAL

6000 unid. 6000 h 10000 h

Figura 2.9: Resultados inseridos na planilha

Figura 2.10: Modelagem do Exemplo da seo 2.2.2 no Excel

Figura 2.11: Janela de entrada dos parmetros do SOLVER

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

6000 10.000 3.000 2.500 500

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

B7 H11 H12 H13 H14 H15

A janela com os parmetros do SOLVER apresentado na gura 2.14 e a planilha com os resultados mostrada na gura 2.15.

2.2.4 Problema da Escolha de Carteira de Investimentos


A LCL Investimentos S.A. gerencia recursos de terceiros atravs da escolha de carteiras de investimentos para diversos clientes, baseados em bonds de diversas empresas. Um de seus clientes exige que:

Figura 2.12: Resultados inseridos na planilha para o exemplo da seo 2.2.2

Figura 2.13: Modelagem do Exemplo da seo 2.2.3 no Excel

Figura 2.14: Janela de entrada dos parmetros do SOLVER

- 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.

Ttulo Ttulo Ttulo Ttulo Ttulo Ttulo

1 2 3 4 5 6

Retorno Anual
8,7% 9,5% 12,0% 9,0% 13,0% 20,0%

Anos para Vencimento


15 12 8 7 11 5

1 - muito baixo 3 - regular 4 - alto 2 - baixo 4 - alto 5 - muito alto

Risco

Seja Pi o percentual do total aplicado no ttulo do tipo i = 1, . . . , 6.


6

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.

Figura 2.15: Resultados inseridos na planilha para o exemplo da seo 2.2.3

Figura 2.16: Modelagem do Exemplo da seo 2.2.4 no Excel

B7 H11 H12 H13 H14 H15 H16 H17 H18 H19

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.

Figura 2.17: Janela de entrada dos parmetros do SOLVER

Figura 2.18: Resultados inseridos na planilha para o exemplo da seo 2.2.4

2.2.5 Problema da Mistura de Petrleo


Uma renaria processa vrios tipos de petrleo. Cada tipo de petrleo possui uma planilha de custos diferente, expressando, condies de transporte e preos na origem. Por outro lado, cada tipo de petrleo representa uma congurao diferente de subprodutos para a gasolina. Na medida em que certo tipo de petrleo utilizado na produo da gasolina, possvel a programao das condies de octanagem e outros requisitos. Esses requisitos implicam na classicao do tipo de gasolina obtida. Supondo que a renaria trabalhe com uma linha de quatro tipos diferentes de petrleo e deseje produzir as gasolinas amarela, azul e superazul, programar a mistura dos tipos de petrleo atendendo s condies que se seguem nas tabelas a seguir: Quantidade Disponvel de Petrleo

Tipo de Petrleo 1 2 3 4

Quantidade Mxima Disponvel (barril/dia)


3.500 2.200 4.200 1.800

Custos por Barril/dia (R$)


19 24 20 17

Tipo de Gasolina

Percentuais para Limites de Qualidade das Gasolinas

Especicao

Superazul Azul Amarela

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

Preo de Venda (R$/Barril)


35 28 22

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:

(a) Funo Objetivo:


Maximizar Q(x) = 3xA1 2xA2 + 2xA3 5xA4 + 9xZ 1 + 5xZ 2 + 8xZ 3 + xZ 4 + 16xS 1 + 11xS 2 +

15xS 3 + 8xS 4

(b) Restries Tecnolgicas:


1) xA1 + xZ 1 + xS 1 3.500 2) xA2 + xZ 2 + xS 2 2.200 3) xA3 + xZ 3 + xS 3 4.200

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;

P11 a P20 iro representar os RHS das 10 restries.


As frmulas utilizadas so apresentadas na tabela a seguir. Frmulas utilizadas nas clulas da modelagem do Exemplo 5 =C6*C5+D6*D5+E6*E5+. . . +M6*M5+N6*N5 =C11*$C$6+D11*$D$6+E11*$E$6+. . . +M11*$M$6+N11*$N$6 =C12*$C$6+D12*$D$6+E12*$E$6+. . . +M12*$M$6+N12*$N$6 =C13*$C$6+D13*$D$6+E13*$E$6+. . . +M13*$M$6+N13*$N$6 =C14*$C$6+D14*$D$6+E14*$E$6+. . . +M14*$M$6+N14*$N$6 =C15*$C$6+D15*$D$6+E15*$E$6+. . . +M15*$M$6+N15*$N$6 =C16*$C$6+D16*$D$6+E16*$E$6+. . . +M16*$M$6+N16*$N$6 =C17*$C$6+D17*$D$6+E17*$E$6+. . . +M17*$M$6+N17*$N$6 =C18*$C$6+D18*$D$6+E18*$E$6+. . . +M18*$M$6+N18*$N$6 =C19*$C$6+D19*$D$6+E19*$E$6+. . . +M19*$M$6+N19*$N$6 =C20*$C$6+D20*$D$6+E20*$E$6+. . . +M20*$M$6+N20*$N$6

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.

Figura 2.20: Janela de entrada dos parmetros do SOLVER

Figura 2.21: Resultados inseridos na planilha para o exemplo da seo 2.2.5

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.

Figura 3.1: Tela Inicial do Visual XPRESS

3.2 Exemplos de como Modelar usando o Visual XPRESS


Para familiarizarmos com o uso do Visual XPRESS utilizaremos uma srie de exemplos para a xao de seus principais comandos. 34

3.2.1 O Problema do Atleta Indeciso


Um jovem atleta indeciso sente-se atrado pala prtica de dois esportes: natao e ciclismo. Sabe por experincia que: A natao exige um gasto em mensalidade do clube e deslocamento at a piscina que pode ser expresso em um custo mdio de 3 reais por seo de treinamento de 2 horas. O ciclismo, mais simples, acaba custando cerca de 2 reais pelo mesmo tempo de prtica. O oramento do rapaz dispe de 70 reais para seu treinamento. Seus afazeres de aluno de graduao na universidade lhe do liberdade de empregar, no mximo, 18 horas mensais e 80.000 calorias para os esforos fsicos. Cada seo de natao consome 1.500 calorias, enquanto cada etapa ciclstica dispende 1.000 calorias. Considerando que o rapaz goste igualmente de ambos os esportes o problema consiste em planejar seu treinamento de forma a maximizar o nmero de sees de treinamento. O modelo de deciso para este problema apresentado a seguir: Onde xi o nmero de prticas da natao (i = 1) e do ciclismo (i = 2).

max s.a

x1 3x1 1.500x1 2x1 x1 xj Z +

+ + + + ,

x2 2x2 1.000x2 2x2 x2

70 80.000 18 0

Outra forma de representar este PPL :


n

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).

VARIABLES Dene variveis de deciso a serem usadas na especicao modelo. Para


o nosso exemplo temos apenas a varivel de deciso x e entre parntesis denido o nmero de variveis a serem utilizadas, neste caso, n.

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

x2 so variveis inteiras (x(i = 1 : n) .UI.).

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) $

END Indica que as especicaes do modelo esto completas.

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.

3.2.2 O Problema do Stio


Um sitiante est planejando sua estratgia de plantio para o prximo ano. Por informaes obtidas nos rgos governamentais, sabe que as culturas de trigo, arroz e milho sero as mais rentveis na prxima safra. Por experincia, sabe que a produtividade de sua terra para as culturas desejadas a constante na tabela a seguir:

Figura 3.2: Modelo XPRESS para o exemplo da seo 3.2.1

Figura 3.3: Janela de denio do tipo de problema

Figura 3.4: Janela com a soluo do problema

Cultura Trigo Arroz Milho

Produtividade em kg por m2 (experincia)


0,2 0,3 0,4

Lucro por kg de Produo (Informaes do Governo)


10,80 centavos 4,20 centavos 2,03 centavos

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

+ + ,

400 800 10.000 200.000 10.000 0

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

400 800 10.000 0 , j = 1, 2, 3

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

Figura 3.5: Janela mostrando a melhor soluo do problema

Figura 3.6: Janela com os valores para a varivel de deciso xi

Figura 3.7: Modelo XPRESS para o exemplo da seo 3.2.2

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.

3.2.3 STAFF SCHEDULING (Escala de Funcionrios)


Uma empresa necessita da segunite quantidade mnima de funcionrios por dia:

Dia Funcionrios Requeridos

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

Outra forma de representar este PPL :


n

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

Onde: n=7; m=7; c= 335 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 a= 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 x= x1 x2 x3 x4

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.

3.2.4 O Problema de Escalonamento de Motoristas


Um gerente de uma empresa de transporte urbano deseja determinar o escalonamento de seus motoristas. Para isto ele divide o dia em 6 perodos de 4 horas. Cada motorista trabalha no mximo 8 horas. A tabela a seguir mostra o nmero mnimo de motoristas que devem estar presentes em cada horrio.

Horrio Motoristas Custos

23-3
15 120

3-7
30 110

7-11
26 100

11-15
32 100

15-19
30 100

19-23
19 110

Figura 3.9: Modelo XPRESS para o exemplo da seo 3.2.3

Figura 3.10: Arquivos contendo o vetor de restries(b) e o vetor de custos(c) e os parmteros

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

120x23 x23 x23

+ 110x3 + x3 x3

+ 100x7 + x7 x7 x7 ,

+ 100x11

+ 100x15

+ 110x19 + x19

+ x11 x11 x11 ,

x23 , xj Z +

x3 ,

+ x15 x15 x15 ,

+ x19 x19

15 30 26 32 30 19 0

Consideraremos para este exemplo que: x23 = x1 , x3 = x2 , x7 = x3 , x11 = x4 , x15 = x5 e

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

Onde: n=6; m=6; c= 120 1 0 0 0 0 1 1 0 0 0 0 1 1 0 0 a= 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 b= 15 30 26 32

110 100 100 100 110 ; 1 0 0 ; 0 0 1 t 30 19 ; x= x1 x2 x3 x4

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 .

3.2.5 O Problema da Mochila


Dado n objetos, cada qual com um peso wi e importncia pi , aloc-los em uma mochila de capacidade b maximizando a importncia dos objetos colocados. Assumi-se que h apenas uma unidade de cada objeto.

Figura 3.11: Modelo XPRESS para o exemplo da seo 3.2.4

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

Para este problema da mochila vamos considerar a seguinte tabela de dados:

Objeto(xi ) Peso (wi ) (em kg) Importncia (pi )


Capacidade da mochila (b) = 20 kg

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

O modelo XPRESS para este exemplo apresentado na gura 3.13.

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".

3.2.6 Problema da Liga de Ferro


Uma liga especial constituda de ferro, carvo, silcio e nquel pode ser obtida usando a mistura desses minerais puros alm de 2 tipos de materiais recuperados:

Material Recuperado 1(MR1): Composio: 60% de ferro, 20% de carvo e 20% de silcio.
Custo por Kg: $0,20.

Material Recuperado 2(MR2): Composio: 70% de ferro, 20% de carvo 5% de silcio e


5% de nquel. Custo por Kg: $0,25. A liga deve ter a seguinte composio nal:

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, 30x1 0, 40x1 0, 35x1 0, 15x1 0, 20x1 0, 15x1 0, 20x1 0, 05x1 0, 08x1 x1 x1 ,

+ + +

0, 20x2 0, 60x2 0, 60x2 0, 85x2 0, 80x2 0, 15x2 0, 20x2 0, 05x2 0, 08x2 + x2 x2 ,

+ + +

0, 28x3 0, 60x3 0, 65x3 0, 15x3 0, 20x3 0, 85x3 0, 80x3 0, 05x3 0, 08x3 + x3 x3 ,

+ + +

0, 50x4 0, 60x4 0, 65x4 0, 15x4 0, 20x4 0, 15x4 0, 20x4 0, 95x4 0, 92x4 + x4 x4 ,

+ 0, 20x5 0, 05x5 + 0, 05x5 + 0, 05x5 0, 05x5 0, 08x5 + x5 x5 ,

+ + + +

0, 25x6 0, 10x6 0, 05x6 0, 05x6

0, 10x6 0, 15x6 0, 03x6 + x6 x6

0 0 0 0 0 0 0 0 1000 0

Outra forma de representar este PPL :

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.

Figura 3.14: Modelo XPRESS para o exemplo da seo 3.2.6

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.

4.2 Exemplos de como Modelar usando o LINGO


Para familiarizarmos com o uso do LINGO utilizaremos uma srie de exemplos para a xao de seus principais comandos.

4.2.1 Problema da Otimizao de Padres de Produo


Uma determinada fbrica produz panelas de metal mdias e grandes a partir de elementos circulares de dimetros circulares de dimetros de 0,25 e 0,40 metros, respectivamente. A primeira operao para obter as panelas um corte desses elementos circulares sobre chapas de dimenso de 1,40 x 0,50 metros. Os elementos planos circulares so transformados em panelas em uma segunda operao de estamparia. Para o corte existem quatro tipo de matrizes conforme mostra a gura 4.1. A fbrica deseja uma produo diria mnima de 500 panelas mdias (obtidas do elemento circular 0,25) e 350 grandes (obtidas do elemento circular de dimetro 0,40). Os custos em reais por chapa pelo uso de cada matriz de corte so respectivamente: 1,2,3,2. Elaborar o modelo de Programao Linear que planeje a produo de modo a minimizar o custo com o uso de chapas. Seja xi a quantidade de chapas cortadas de acordo com a matriz, i = 1, . . . , 4 a serem utilizadas na produo.

50

O modelo de deciso do problema dado a seguir.

min s.a

x1 8x1

x2 + x3 + 4x2 + 2x3 x2 + 2x3 + xi 0, i=1,. . . ,4 e xj Z +

+ +

x4 3x4

500 350

Outra forma de representar o modelo de deciso deste problema :


n

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

Figura 4.1: Padres de Corte para o exemplo da seo 4.2.1

Figura 4.2: Tela Inicial do LINGO

Figura 4.3: Modelo LINGO para o exemplo da seo 4.2.1

COMANDO @GIN(VAR) @BIN(VAR) @FREE(VAR) @BND(LI,VAR,LS)

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

1a restrio e 1 unidade na 2a restrio.


A coluna DUAL PRICE pode ser interpretada como a quantia pela qual a funo objetivo FO melhoraria (pioraria) quando o lado direito das restries (constantes) aumentado (diminudo) em uma unidade. Ele tambm pode ser entendido como o que estamos dispostos a pagar por unidades adicionais de um recurso. Por isto ele tambm chamado de SHADOW PRICE. Essas informaes, no entanto, s tem sentido se as variveis envolvidas no modelo forem do tipo real e essa anlise tem validade apenas em um certo intervalo de variao das restries (vide nal da seo 4.2.3 sobre como proceder para fazer esta anlise).

4.2.2 Problema da Agncia de Propaganda


Uma agncia de propaganda planeja uma campanha de publicidade em trs meios de comunicao: televiso, rdio e revistas. O propsito da propaganda de alcanar tantos "fregueses em potencial"quanto possvel. Os resultados de um estudo de mercado esto no quadro a seguir:

Meios de Comunicao \ Itens


Custo de uma unidade de propaganda no de fregueses em potencial alcnados por unidade de propaganda no de fregueses do sexo feminino alcanados por unidade de propaganda

TV Horrio Horrio Comum Nobre


40.000 75.000

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

400.000x1 + 900.000x2 + 40.000x1 + 75.000x2 + 300.000x1 + 400.000x2 + 40.000x1 + 75.000x2 x1 3 ; x2 2 ; xj 0, j =1,. . . ,4 e xj Z +

500.000x3 30.000x3 200.000x3 5 x3 10

+ + + ;

200.000x4 15.000x4 100.000x4 5 x4 10

800.000 2.000.000 500.000

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.

4.2.3 Problema da Carteira de Investimento


Um investidor possui $18.000 e tem a sua disposio trs opes para aplicar seu capital, alm de deix-lo, todo ou em parte, no banco, rendendo 6% ao ano. ALTERNATIVA 1: Comprar um lote de aes cujo preo unitrio de $4,50 e cuja rentabilidade anual esperada de 47%. ALTERNATIVA 2: Comprar letras de cmbio cujo preo unitrio $3,00 e cuja rentabilidade

Figura 4.5: Relatrio de Soluo do LINGO para o Exemplo da seo 4.2.1

Figura 4.6: Modelo LINGO para o exemplo da seo 4.2.2

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

6, 62x1 4, 50x1 2, 12x1 x1 x1

+ + + +

3, 96x2 3, 00x2 0, 96x2 x2

+ + +

1, 62x3 1, 50x3 0, 12x3

+ +

1, 06x4 x4 x4 0, 06x4

x2 7, 65x1 + 5, 10x2 xj 0, j =1,. . . ,4

4, 05x3

18.000 2.000 0 1.750 1.000 1.500 30.600

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

dij xj ei i = 1, 2 x1 1.000, x2 1.500, x4 2.000 xj 0 , j = 1, . . . , 4 6, 62 4, 50 3, 96 3, 00 onde: n=4; c= 1, 62 ; a= 1, 50 1, 06 1, 00 x1 x2 e x= x3 . x4 2, 12 ; b= 0, 96 ; d= 0, 12 0, 06 1 1 0 0 7, 65 5, 1 4, 05 0 1.750 30.600


j =1

; 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

COMPUTATIONS. A gura 4.8 ilustra tal procedimento.


Aps resolvido o modelo e ativada a opo PRICES & RANGES para o LINGO apresentar a anlise de sensibilidade necessrio clicar no menu LINGO e em seguida em RANGE tendo como janela ativa a janela do modelo. A gura 4.9 apresenta a tela com o resultado da anlise de sensibilidade deste exemplo.

Figura 4.8: Janela de Opes de Congurao do LINGO

Figura 4.9: Anlise de Sensibilidade para o exemplo da seo 4.2.3

Referncias sobre anlise de sensibilidade so encontradas no captulo referente ao estudo do software LINDO.

4.2.4 Problema da Mochila


Dado n objetos, cada qual com um peso wi e importncia pi , aloc-los em uma mochila de capacidade b maximizando a importncia dos objetos colocados. Assumi-se que h apenas uma unidade de cada objeto. 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

Para este problema da mochila vamos considerar a seguinte tabela de dados:

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.

4.2.5 Problema da Fbrica de Brinquedos


A companhia Coelho S.A. fabrica motores para brinquedos e pequenos aparelhos. O departamento de marketing est prevendo vendas de 6100 unidades do motor Roncam no prximo semestre. Esta uma nova demanda e a companhia ter que testar sua capacidade produtiva. O motor Roncam montado a partir de trs componentes: o corpo, a base e a blindagem. Alguns destes componentes podem ser comprados de outros fornecedores, se houver limitaes da Coelho S.A. Os custos de produo e os custos de aquisio em R$/unidade esto resumidos na tabela a seguir. Componente Corpo Base Blindagem Custo de Aquisio (em R$) 10 20 16 Custo de Produo (em R$) 8 20 10

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

8x1F 2x1F 4x1F 2x1F x1F x1F

+ + + +

20x2F 5x 2F 2x 2F 4x 2F x 2F

+ + + +

10x3F 4x3F 5x3F 5x3F x3F x 3F

10x1A

20x2A

16x3A

x1A + x2A x2A + , x3A x3A x1A ,

x 2F

49200 49200 49200 6100 6100 6100 0

Outra forma de representar este modelo apresentado abaixo:


n

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 ,

x1 x2 e x= x3 . x4 x5 x6 x1A =x4 , x2A =x5 e

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

Figura 4.10: Modelo LINGO para o exemplo da seo 4.2.4

Figura 4.11: Modelo LINGO para o exemplo da seo 4.2.5

Figura 4.12: Planilha do Excel usada no Exemplo seo 4.2.5

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

You might also like