Programação Linear Inteira GNU Linear Programming Kit



Documentos relacionados
Conteúdo GLPK. Notas. Introdução à Otimização, Utilizando o GLPK. Notas. Notas

LISTA SOBRE MODELAGEM DE PROBLEMAS DE PROGRAMAÇÃO INTEIRA

AULA 08 PROGRAMAÇÃO LINEAR INTEIRA. Eduardo Camargo de Siqueira PESQUISA OPERACIONAL TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

Um Modelo Matemático de Gestão de Recursos Humanos

Pesquisa Operacional na Tomada de Decisões. Conteúdos do Capítulo. Programação Linear. Lindo. s.t. Resolvendo Programação Linear Em um Microcomputador

Problemas de Mistura. Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto 5 modelos

Models and Algorithms for Combinatorial Optimization Problems. LP Solve. Albert Einstein Fernandes Muritiba.

PROGRAMAÇÃO INTEIRA. Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto 5 modelos

Lista de exercícios: Modelagem matemática Otimização Combinatória

Problemas de Mistura. Prof. Gustavo Peixoto Silva Departamento de Computação Univ. Federal de Ouro Preto

Arrendamento de espaço num armazém

Concentração Mínima de Açúcar (g/l) N (normal) E (europeu fino) Teor Máximo de Acidez (%)

2. A FERRAMENTA SOLVER (EXCEL)

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Pesquisa Operacional. 4x1+3x2 <=1 0 6x1 - x2 >= 20 X1 >= 0 X2 >= 0 PESQUISA OPERACIONAL PESQUISA OPERACIONAL PESQUISA OPERACIONAL PESQUISA OPERACIONAL

AULA 03 MODELOS DE PROGRAMAÇÃO LINEAR. Eduardo Camargo de Siqueira PESQUISA OPERACIONAL TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

E, finalmente, não foram feitos testes com restrições de acoplamento e produtos indivisíveis, uma vez que não foram elaborados métodos eficientes

Para participar de um mapa colaborativo usando o Cmap Tools

Lista 2 - Modelos determinísticos

IBM SPSS Modeler - Princípios Básicos do R: Instruções de Instalação

Utilização do SOLVER do EXCEL

Tutorial de Instalação Latex

1. Resolução de problemas de Programação Linear utilizando Excel

1. Resolução de problemas de Programação Linear utilizando Excel

Bem-vindo! O que há de novo no PaperPort 10?

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

ADMINISTRAÇÃO DE SISTEMAS OPERACIONAIS SERVIÇOS IMPRESSÃO. Professor Carlos Muniz

LINDO: MANUAL DE REFERÊNCIA

Folha de Cálculo (Excel)

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Linear Solver Program - Manual do Usuário

INVESTIGAÇÃO OPERACIONAL. Programação Linear. Exercícios

Dicas para usar melhor o Word 2007

Como Gerar documento em PDF com várias Imagens

PLANEAMENTO DA INSTALAÇÃO DO WINDOWS SERVER 2003

AULA 7 FUNÇÕES AGREGADAS. Funções Agregadas

Pesquisa Operacional. Componentes de um modelo de PL

FundamentosemInformática

Otimização no Octave. Minicurso de Economia e Estatística Computacionais. Universidade Federal do Rio Grande do Sul Semana Acadêmica da Economia 2012

Este tutorial está publicado originalmente em

Programação Linear com o Microsoft Excel R

Manual Prático de Cadastramento Imóveis CADASTRAMENTO DE IMÓVEIS; Acesse o site Clique Intranet

1 UNIT Universidade do Trabalhador Dr. Abel dos Santos Nunes

DNS Linux. Rodrigo Gentini

Construir o modelo matemático de programação linear dos sistemas descritos a seguir:

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Universidade de São Paulo Biblioteca Digital de Teses e Dissertações. MANUAL DO USUÁRIO Conversão de arquivos para PDF

SISTEMA DE ARQUIVOS. Instrutor: Mawro Klinger

Investigação Operacional

25 a 30 de novembro de 2013

MySQL Query Browser. Professor Victor Sotero SGD

Programação Inteira. Advertência

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

Laboratório - Pesquisa de calculadoras de sub-rede

Configurando um servidor DHCP

MINISTÉRIO DA FAZENDA

Microsoft Office PowerPoint 2007

Boletim Técnico. Adição de campos à tabela Histórico do Status do Pneu (TQZ) Produto : Microsiga Protheus Manutenção de Ativos Versão 11

Prof. André Di Thommazo

Introdução ao Sistema. Características

Trabalho de Casa Introdução à Otimização Para ser entregue no início da aula de quinta-feira, 14 de fevereiro de 2002

Manual do Usuário. Protocolo

INTRODUÇÃO AO ASSUNTO PESQUISA OPERACIONAL. O que é Pesquisa Operacional?

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

ROTEIRO: IMPLANTANDO O SISTEMA OPERACIONAL LINUX. Introdução: FERRAMENTAS. Abaixo segue relação de aplicativos utilizados para realizar este roteiro:

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções

Aula 02. Introdução ao Linux

OTIMIZAÇÃO COMBINATÓRIA

Utilizando o EXCEL Solver

Sistema Operacional Unidade 13 Servidor Samba. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Download. Instalaça o. Geral

Programação Linear. SOLVER EXCEL Prof. José Luiz. Solução via Excel

UNIVERSIDADE FEDERAL DA PARAÍBA PRÓ REITORIA DE EXTENSÃO E ASSUNTOS COMUNITÁRIOS

UFFLP: Integrando Programação Inteira Mista e Planilhas de Cálculo

Lógica de Programação

Protocolo FTP. Professor Leonardo Larback

Análise da sensibilidade

OTIMIZAÇÃO COMBINATÓRIA

PCC173 - Otimização em Redes

Fundamentos da PESQUISA OPERACIONAL

GRRF GUIA DE RECOLHIMENTO RESCISÓRIA DO FGTS PROCEDIMENTOS NA FOLHA CONSISA SGRH

Orientações, Dicas e Atalhos para registrar e consultar documentos no sistema ERP.

ArcSoft MediaConverter

Capítulo 09. Construindo o Modelo do Domínio

E x c e l 1 C o n c e i t o s b á s i c o s

Kerio Exchange Migration Tool

LISTA DE EXERCÍCIOS: 3ª Unidade. Registros e Arquivos

Bem-vindo ao Guia de Introdução - Utilitários

Aula 03 - Modelagem em PPLIM

Lab - Monitorar e Gerenciar os Recursos do Sistema no Windows 7

UNIVERSIDADE ESTADUAL DO AMAZONAS ESPECIALIZAÇÃO EM DESENVOLVIMENTO EM SOFTWARE LIVRE CONCEITOS E PROJETOS DE BANCO DE DADOS E SQL

Índice. Manual Backup Online. 03 Capítulo 1: Visão Geral

UNIVERSIDADE FEDERAL DE PELOTAS. Índice


PROVA DE NOÇÕES DE INFORMÁTICA Cargos 04 e 07

Avanços na transparência

Objetivos. Página - 2

Manual de instalação e utilização do software de decriptografia GnuPG (Gnu Pricavy Guard)

Transcrição:

Programação Linear Inteira Eduardo Camargo de Siqueira Pesquisa Operacional Análise e Desenvolvimento de Sistemas

CONTEÚDO 1 Introdução 2 3

GLPK. Resolvedor de problemas lineares, incluindo problemas de programação inteira. Código aberto, disponível gratuitamente. Farta documentação.

INSTALAÇÃO DO GLPK Windows: - http://gusek.sourceforge.net/gusek.html. Linux (debian/ubuntu e derivadas): - sudo apt-get install glpk.

AJUDA DO GLPK Pacote disponível em: http://www.gnu.org/software/glpk/. Manuais em PDF (diretório doc). Exemplos (diretório examples). Lista de Discussão: help-glpk@gnu.org.

FORMATOS CONHECIDOS Formatos conhecidos para entrada de programas lineares: MPS - Mathematical Programming System: Padrão da indústria. Pouco intuitivo, confuso e com limitações. LP - CPLEX LP le format: Padrão criado para uso com o resolvedor CPLEX. Mais fácil e prático do que o formato MPS. Aceito nos principais resolvedores modernos. Arquivos podem ser convertidos para MPS.

FORMATO LP COMPONENTES Função-objetivo. Restrições. Informações de variáveis. Limites. Variáveis inteiras genéricas. Variáveis binárias.

PROBLEMA DA DIETA Suponha que uma certa dieta esteja restrita a leite desnatado, carne magra de boi, carne de peixe e uma salada. Sabendo-se que os requisitos nutricionais são expressos em termos de vitaminas e controlados por suas quantidades mínimas. O objetivo é determinar a quantidade de cada alimento que deverão ser ingeridos diariamente, de modo que os requisitos nutricionais sejam satisfeitos a custo mínimo. Vitamina Leite (litro) Carne (kg) Peixe (kg) Salada (100g) Requisito mínimo A 2 mg 2 mg 10 mg 20 mg 11 mg C 50 mg 20 mg 10 mg 30 mg 70 mg D 80 mg 70 mg 10 mg 80 mg 250 mg Custo 2 reais 4 reais 1,5 real 1 real

PROBLEMA DA DIETA Variáveis de decisão: x i = quantidade do alimento do tipo i, sendo i = 1 (leite), i = 2 (carne), i = 3 (peixe) e i = 3 (salada). Função objetivo: Min f (x) = 2x 1 + 4x 2 + 1, 5x 3 + x 4

PROBLEMA DA DIETA Restrições: Demanda de vitamina A: 2x1 + 2x2 + 10x3 + 20x4 11 Demanda de vitamina C: 50x1 + 20x2 + 10x3 + 30x4 70 Demanda de vitamina D: 80x1 + 70x2 + 10x3 + 80x4 250 Restrições de Não-negatividade: x1; x2; x3 0

PROBLEMA DA DIETA - FORMATO LP dieta.lp M i n i m i z e Obj : 2 x1 + 4 x2 + 1. 5 x3 + x4 S u b j e c t t o VitaminaA : 2 x1 + 2 x2 + 10 x3 + 20 x4 >= 1 VitaminaC : 50 x1 + 20 x2 + 10 x3 + 30 x4 >= 70 VitaminaD : 80 x1 + 70 x2 + 10 x3 + 80 x4 >= 250 End RESOLVENDO glpsol cpxlp dieta.lp -o solucao.txt

MODELOS DE PROGRAMAÇÃO LINEAR INTEIRA CAPITÃO CAVERNA S.A. A Capitão Caverna S.A., localizada em Pedra Lascada, aluga 3 tipos de barcos para passeios marítimos: jangadas, supercanoas e arcas com cabine. A companhia fornece juntamente com o barco um capitão para navegá-lo e uma tripulação que varia de acordo com a embarcação: uma para jangadas, duas para supercanoas e três para arcas. A companhia tem 4 jangadas, 8 supercanoas e 3 arcas e em seu corpo de funcionários: 10 capitães e 18 tripulantes. O aluguel é por diárias e a Capitão Caverna lucra $50 por jangada, $70 por supercanoa e $100 por arca. Faça um modelo de programação matemática que determine o esquema de aluguel que maximiza o lucro.

CAPITÃO CAVERNA S.A. Variáveis de decisão: x i = número de embarcações do tipo i a serem alugadas, sendo i = 1 (jangada), i = 2 (supercanoa) e i = 3 (arca com cabine). Função objetivo: Max f (x) = 50x 1 + 70x 2 + 100x 3

CAPITÃO CAVERNA S.A. Restrições: Número de capitães: x1 + x2 + x3 10 (Há somente 10 capitães) Número de tripulantes: x1 + 2x2 + 3x3 18 (Há somente 18 tripulantes) Quantidade de jangadas: x1 4 (O número de jangadas está limitado a 4) Quantidade de supercanoas: x2 8 (Há apenas 8 supercanoas) Quantidade de arcas com cabine: x3 3 (Há apenas 3 arcas com cabine disponíveis) Integralidade e não-negatividade: x1; x2; x3 Z +

CAPITÃO CAVERNA S.A. Max f (x) = 50x 1 + 70x 2 + 100x 3 sujeito a x 1 + x 2 + x 3 10 x 1 + 2x 2 + 3x 3 18 x 1 4 x 2 8 x 3 3 x 1 ; x 2 ; x 3 Z +

CAPITÃO CAVERNA S.A. - FORMATO LP caverna.lp Maximize Obj : 50 x1 + 70 x2 + 100 x3 S u b j e c t t o Capitaes : x1 + x2 + x3 <= 10 T r i p u l a n t e s : x1 + 2 x2 + 3 x3 <= 18 Jangada : x1 <= 4 Supercanoa : x2 <= 8 Arcas : x3 <= 3 G e n e r a l x1 x2 x3 End RESOLVENDO glpsol cpxlp caverna.lp -o sol.txt

CAPITÃO CAVERNA S.A. - SOLUÇÃO sol.txt Problem : Rows : 5 Columns : 3 (3 i n t e g e r, 0 b i n a r y ) Non z e r o s : 9 Status : INTEGER OPTIMAL O b j e c t i v e : Obj = 680 (MAXimum) No. Row name A c t i v i t y Lower bound Upper bound 1 C a p i t a e s 10 10 2 T r i p u l a n t e s 18 18 3 Jangada 4 4 4 S u p e r c a n o a 4 8 5 A r c a s 2 3 No. Column name A c t i v i t y Lower bound Upper bound 1 x1 4 0 2 x2 4 0 3 x3 2 0

CAPITÃO CAVERNA S.A. - FORMATO LP caverna.lp Maximize Obj : 50 x1 + 70 x2 + 100 x3 S u b j e c t t o Capitaes : x1 + x2 + x3 <= 10 T r i p u l a n t e s : x1 + 2 x2 + 3 x3 <= 18 Bounds 0 <= x1 <= 4 0 <= x2 <= 8 0 <= x3 <= 3 G e n e r a l x1 x2 x3 End

CAPITÃO CAVERNA S.A. - SOLUÇÃO sol.txt Problem : Rows : 2 Columns : 3 (3 i n t e g e r, 0 b i n a r y ) Non z e r o s : 6 Status : INTEGER OPTIMAL O b j e c t i v e : Obj = 680 (MAXimum) No. Row name A c t i v i t y Lower bound Upper bound 1 C a p i t a e s 10 10 2 T r i p u l a n t e s 18 18 No. Column name A c t i v i t y Lower bound Upper bound 1 x1 4 0 4 2 x2 4 0 8 3 x3 2 0 3

CAPITÃO CAVERNA S.A. - ALTERAÇÕES Agora a companhia passa a ter 5 jangadas, 6 supercanoas e 5 arcas e em seu corpo de funcionários: 5 capitães e 10 tripulantes. Ainda mais, se o lucro do aluguel fosse $45 por jangada, $80 por supercanoa e $90 por arca. O que mudaria no modelo? É possível fazer um modelo genérico para esse problema.

CAPITÃO CAVERNA S.A. - ALTERAÇÕES Max f (x) = 45x 1 + 80x 2 + 90x 3 sujeito a x 1 + x 2 + x 3 5 x 1 + 2x 2 + 3x 3 10 x 1 5 x 2 6 x 3 5 x 1 ; x 2 ; x 3 Z +

CAPITÃO CAVERNA S.A. - MODELO GENÉRICO Para fazer um modelo genérico desse PPLI, façamos as seguintes convenções: emb : Conjunto dos diferentes tipos de embarcação = {Jangada, Supercanoa, Arca}. l i : Lucro proporcionado pelo aluguel da embarcação do tipo i. cap i : Número de capitães necessários para comandar a embarcação do tipo i. trip i : Número de tripulantes necessários para trabalhar na embarcação do tipo i. disp i : Número disponível de embarcações do tipo i. ntrips : Número de tripulantes disponíveis. ncapitaes : Número de capitães disponíveis.

CAPITÃO CAVERNA S.A. - MODELO GENÉRICO O modelo genérico relativo ao problema em questão pode ser assim formulado: Max f (x) = sujeito a i emb i emb i emb l i x i cap i x i ncapitaes (Número de capitães) trip i x i ntrips (Número de tripulantes) x i disp i i emb x i Z + i emb

FORMATO MathProg Formato de mais alto nível, incluindo abstrações: Comandos Conjuntos Parâmetros Facilita a geração de problemas grandes e complexos. Permite a separação entre o modelo e os dados.

CAPITÃO CAVERNA S.A. - MODELO GENÉRICO O modelo genérico relativo ao problema em questão pode ser assim formulado: Max f (x) = sujeito a i emb i emb i emb l i x i cap i x i ncapitaes (Número de capitães) trip i x i ntrips (Número de tripulantes) x i disp i i emb x i Z + i emb

CAPITÃO CAVERNA S.A. - FORMATO MathProg caverna.mod s e t E ; / Conjunto de Embarcações / param l {E } ; / Lucro por Embarcação / param cap {E } ; / C a p i t ã e s p o r Embarcação / param t r i p {E } ; / T r i p u l a n t e s p o r Embarcação / param d i s p {E } ; / D i s p o n i b i l i d a d e p o r Embarcação / param n t r i p s ; / T o t a l de t r i p u l a n t e s / param n c a p s ; / T o t a l de c a p i t ã e s / v a r x { e i n E} >= 0 i n t e g e r ; / I n t e g r a l i d a d e e não n e g a t i v i d a d e / s. t. c a p i t a e s : sum{ e i n E} cap [ e ] x [ e ] <= n c a p s ; / R e s t r i ç ã o de C a p i t ã e s / s. t. t r i p u l a n t e s : sum{ e i n E} t r i p [ e ] x [ e ] <= n t r i p s ; / R e s t r i ç ã o de T r i p u l a n t e s / s. t. e m b a r c a c o e s { e i n E } : x [ e ] <= d i s p [ e ] ; / R e s t r i ç ã o de Embarcações / maximize l u c r o : sum{ e i n E} l [ e ] x [ e ] ; / Lucro do a l u g u e l / end ;

CAPITÃO CAVERNA S.A. - FORMATO MathProg caverna.dat (1/2) d a t a ; / Lucro p o r Embarcação / param : E : l := Jangadas 50 S u p e r c a n o a s 70 A r c a s 100 ; / C a p i t ã e s p o r Embarcação / param : cap := Jangadas 1 S u p e r c a n o a s 1 A r c a s 1 ; / T r i p u l a n t e s p o r Embarcação / param : t r i p := Jangadas 1 S u p e r c a n o a s 2 A r c a s 3 ;

CAPITÃO CAVERNA S.A. - FORMATO MathProg caverna.dat (2/2) / D i s p o n i b i l i d a d e p o r Embarcação / param : d i s p := Jangadas 4 S u p e r c a n o a s 8 A r c a s 3 ; param n t r i p s := 1 8 ; / T o t a l de t r i p u l a n t e s / param n c a p s := 1 0 ; / T o t a l de c a p i t ã e s / end ; RESOLVENDO glpsol -m caverna.mod -d caverna.dat -o cavernasol.txt

CAPITÃO CAVERNA S.A. - SOLUÇÃO cavernasol.txt Problem : c a v e r n a Rows : 6 Columns : 3 (3 i n t e g e r, 0 b i n a r y ) Non z e r o s : 12 Status : INTEGER OPTIMAL O b j e c t i v e : l u c r o = 680 (MAXimum) No. Row name A c t i v i t y Lower bound Upper bound 1 c a p i t a e s 10 10 2 t r i p u l a n t e s 18 18 3 embarcacoes [ Jangadas ] 4 4 4 embarcacoes [ Supercanoas ] 4 8 5 embarcacoes [ Arcas ] 2 3 6 l u c r o 680 No. Column name A c t i v i t y Lower bound Upper bound 1 x [ Jangadas ] 4 0 2 x [ S u p e r c a n o a s ] 4 0 3 x [ A r c a s ] 2 0

Comando set s e t I ; / d e c l a r a c o n j u n t o que s e r á i n f o r m a d o d e p o i s / s e t I := 1.. 1 0 ; / d e c l a r a um c o n j u n t o p r e e n c h e n d o com num. de 1 a 10 / s e t A := T r i g o Q u e i j o F i g a d o Salmao E s p i n a f r e ; / d e c l a r a e i n f o r m a e l e m e n t o s de um c o n j u n t o / s e t C i d a d e s ; s e t C a p i t a i s w i t h i n i d a d e s ; / c o n j u n t o c a p i t a i s f i c a r e s t r i t o a s e r um s u b c o n j u n t o de c i d a d e s /

Comando param param n ; / p a r â m e t r o que s e r á i n f o r m a d o d e p o i s / param c, > 0 ; / p a r â m e t r o que s e r á i n f o r m a d o d e p o i s e d e v e s e r p o s i t i v o / param n, i n t e g e r, > 0 ; / p a r â m e t r o que s e r á i n f o r m a d o d e p o i s e d e v e s e r p o s i t i v o e i n t e i r o / param c {A } ; / p a r â m e t r o que d e v e s e r i n f o r m a d o p a r a cada e l e m e n t o do c o n j u n t o A / param : c := elementodea1 v a l o r D e C p a r a A 1 elementodea2 v a l o r D e C p a r a A 2... ; / v a l o r do parâmetro c para cada elemento de A /

Comando var v a r x >= 0 ; / uma v a r i á v e l p o s i t i v a / v a r x { I, J }, i n t e g e r, >= 0 ; / c r i a uma v a r i á v e l x p a r a cada p a r ( i, j ) de I e J, v a r i á v e l i d e n t i f i c a d a p o r x [ i, j ] / v a r z { i i n I, j i n J } >= i+j ; / c r i a uma v a r i á v e l z p a r a cada p a r ( i, j ) de I e J, v a r i a v e l i d e n t i f i c a d a p o r z [ i, j ], cada v a r i á v e l pode a s s u m i r v a l o r minimo i+j /

Comando Adição de Restrições s. t. r : x + y + z, >= 0, <= 1 ; / r e s t r i ç ã o com nome r, r e s t r i n g i n d o o s o m a t ó r i o de x + y + z p a r a o i n t e r v a l o [ 0, 1 ] / s. t. c a p a c i d a d e : sum{ i i n I } p [ i ] x [ i ] <= c ; / uma r e s t r i ç ã o g e r a d a s o b r e o s o m a t ó r i o da v a r i á v e l x [ i ] m u l t i p l i c a n d o uma c o n s t a n t e p [ i ] / s. t. e s t o q u e F i n a l {p i n P} : e s t o q u e [ 1 2, p ] + compras [ 1 2, p ] v e n d a s [ 1 2, p ] >= 5 0 0 ; / uma r e s t r i ç ã o s e r á g e r a d a p a r a cada p r o d u t o p /

FIM Dúvidas? Obrigado pela atenção!