Linguagens de Modelagem Mosel e Ampl

Slides:



Advertisements
Apresentações semelhantes
AULA 02 PROGRAMAÇÃO LINEAR INTEIRA
Advertisements

Introdução à Programação
Amintas engenharia.
Noções de Sistemas Operacionais
Raphael Gatti Thomás Bryan
1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.
Rational Unified Process
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
15/1/2014 Professor Leomir J. Borba- – 1 Tec. Em Analise e desenvolv. De Sistemas analise.
Interação entre objetos
ELEMENTOS DA INFORMÁTICA
Orientação a Objetos: Encapsulamento e Classificação
Cálculo Numérico Módulo I Ferramentas de Suporte
Introdução à Informática
PARTIÇÃO DE BENDERS Secundino Soares Filho Unicamp.
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Chapter 4: Threads.
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
April 05 Prof. Ismael H. F. Santos - 1 Módulo II Introdução a XML DTD Prof. Ismael H F Santos.
April 05 Prof. Ismael H. F. Santos - 1 Módulo II XML Processing: XSLT, SAX e DOM Prof. Ismael H F Santos.
Avaliação de Desempenho
Sistemas Operacionais
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Pesquisa operacional Ferramentas disponíveis para utilização Lindo
Engenharia de Requisitos
Auditoria de Segurança da Informação
Aula 8 Orientação à Objetos
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Registro Eletrônico para Acompanhamento Médico de Pacientes em uma UTI Rafael Charnovscki (1), Jacques R. Nascimento Filho (2,3) Giancarlo Bianchin.
09/03/10 20:13 Claudio de Oliveira – 1/21.
Inteligência Artificial
Programação Orientada para Objectos
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Conhecendo o Visual Studio.NET
Desenvolvimento de Projetos e Aplicações Web
Calculada a solução óptima
IDENTIFICAÇÃO, MODELAGEM E ANÁLISE DE PROCESSOS Luís Gonzaga Trabasso
Sistemas Operacionais
Engenharia de Requisitos
PROGRAMAÇÃO I UNIDADE 1.
Cap 2 – Processo de Software
Object Oriented Software Construction (MEYER, Bertrand)
Programação Avançada Prof. Natalia Castro Fernandes
Universidade São Marcos Curso: Gestão de Negócios Internacionais
SISTEMAS OPERACIONAIS
Funções Universidade Federal de Ouro Preto - UFOP
Salas de Matemática.
PROBLEMAS DE TRANSPORTE
Sistemas Operacionais
Instrumento Virtual LabVIEW
É u m e l e m e n t o f u n d a m e n t a l
Ritornello Um Framework para Representação de Conhecimento Musical
1.
MO801 - Tópicos em Arquitetura e Hardware Michele Tamberlini 05/2006
Projeto de Banco de Dados
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Universidade Federal de Pernambuco Centro de Informática Aluno: Erica Sousa – Orientador: Paulo Maciel – Modelagem de.
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Redes Neuronais/Neurais/ Conexionistas Introdução
Professor: Márcio Amador
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Rio Verde - Goiás - Brasil
1 Segunda fase do projeto: Desenvolvimento do “Catálogo Virtual” Foco em Sistemas de Informação Desenvolvimento baseado no diagnóstico e na interação com.
© 2004 by Pearson Education Computadores: Ferramentas para a Era da Informação Tema 0 PARTE A.
SQLite Banco de Dados II.
Ferramentas Computacionais
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Transcrição da apresentação:

Linguagens de Modelagem Mosel e Ampl DAS-6651 - MSPO Eduardo Camponogara

0. Agenda Linguagem de Modelagem Mosel (Xpress-MP) Linguagem de Modelagem AMPL Referências

1. Introdução Xpress-MP é uma ferramenta de software para modelagem matemática e solução de problemas de otimização: Linear Quadrática Linear Inteira As ferramentas compreendem uma coleção de interfaces, objetivando atender necessidades de usuários diversos Solução de problema Integração com outros produtos de software

2. Componentes e Interfaces do Xpress-MP Os dois componentes básicos do Xpress-MP são o Xpress-Mosel e o Xpress-Optimizer Xpress-Mosel Xpress-Optimizer Xpress-IVE Console Xpress Xpress-MP Libraries

2. Xpress-Mosel Xpress-Mosel Um ambiente para modelagem e solução de problemas, tomando como entrada um modelo que descreve um problema em programação matemática (LP, QP, MIP), escrito na linguagem de modelagem Mosel Mosel permite separar modelo dos parâmetros que definem uma instância e tem facilidades de transferência de dados. Por exemplo, dados podem ser transferidos através de arquivos tipo texto e em formato ODBC

2. Xpress-Optimizer Xpress-Optimizer Optimizer é a parte central da ferramenta Xpress-MP, representando décadas de pesquisa e desenvolvimento de métodos de solução de problemas lineares, quadráticos e inteiros mistos

2. Xpress-IVE Xpress-IVE Xpress-IVE, the Xpress Interactive Visual Environment, é um ambiente para modelagem e solução de problemas de otimização, que roda em sistemas MS-Windows IVE apresenta Mosel dentro de uma interface gráfica amigável com editor embutido

2. Xpress-IVE

2. Console Xpress Console Xpress Interfaces de texto para Mosel e Optimizer. Permitem a carga de modelos armazenados em arquivos e resolução de problemas Podem ser executados em plataformas diversas, como Unix e MS-Windows Podem ser aplicados em ambientes de produção através de arquivos Shell-Script

2. Xpress-MP Libraries Xpress-MP Libraries Para implementações especializadas, bibliotecas Xpress-MP são oferecidas, permitindo acessar Mosel e Optimizer a partir de seu próprio código C/C++, Java e Visual Basic A vantagem principal das bibliotecas é a possibilidade de interagir diretamente com a funcionalidade de Xpress-MP e, dessa forma, desenvolver aplicações customizadas Heurísticas Algoritmos Branch-and-Cut

2. Que Interface Deve-Se Utilizar? Usuários Iniciais Xpress-IVE oferece a interface mais simples para o software Xpress-MP. O ambiente integrado permite rápida modelagem ao mesmo tempo que facilita a comunicação com os demais componentes do Xpress-MP Ambientes de Produção Console Xpress permite construir aplicações “batch” Bibliotecas Usuários avançados, que desejam desenvolver e testar algoritmos (Heurísticas Inteligentes e Branch-and-Cut)

3. Console Xpress Console Xpress provê uma interface tipo texto poderosa para os componentes Xpress-MP, permitindo desenvolvimento interativo e processamento “batch” de modelos de usuários de várias plataformas

3.1 Passos Iniciais Testando Mosel C:> mosel ** Xpress-Mosel ** © Copyright Dash Associates 1998-2002 > quit Exiting..

3.1 Passos Iniciais Testando Optimizer C:> optimizer Xpress-MP Integer Barrier Optimizer Release xx.yy © Copyright Dash Associates 1998-2002 Enter problem name> Default problem name of $$$$$ assumed > quit

3.2 Resolvendo um Pequeno Problema com Mosel Maximize a + 2b Sujeito a: 3a + 2b £ 400 a + 3b £ 200

3.2 Resolvendo um Pequeno Problema com Mosel Model Simple Uses “mmxprs” declarations a: mpvar b: mpvar end-declarations first := 3a + 2b <= 400 second := a + 2b <= 200 profit := a + 2b maximize(profit) writeln(“profit is “, getobjval) end-model

3.2.1 Os Três Pilares de Mosel A solução de um problema em Mosel é um processo de 3 estágios Compilar o programa modelo Carregar o programa compilado Resolver o programa Comandos que executam as três fases Compile Load Run

3.2.1 Os Três Pilares de Mosel C:> mosel ** Xpress-Mosel ** © Copyright Dash Associates 1998-2002 > compile simple Compiling simple > load simple > run Profit is 171.429 Returned value: 0

3.2.2 Obtendo Mais Informações help

3.3 Indo Mais Longe Com Mosel O formato MPS é um padrão para representação e armazenamento de problemas de programação matemática Mosel suporta a escrita de arquivos em formato MPS > export – m simple.mat

3.3 Indo Mais Longe Com Mosel O formato LP também é aceito por certos pacotes de otimização como LP_SOLVE e GLPKSOL > export simple.lp

3.4 Trabalhando com Optimizer Nos casos anteriores, carregamos modelos dentro do ambiente Mosel e invocamos optimizer como um módulo da biblioteca Optimizer pode também ser executado isoladamente Optimizer aceita problemas em arquivo tipo matriz, em formato MPS ou LP. Com um arquivo pb.mat válido, tudo que precisa ser feito é carregar a matriz completamente no optimizer e maximizar/minimizar a função objetivo

3.4 Trabalhando com Optimizer C:> optimizer Xpress-MP Integer Barrier Optimizer Release xx.yy © Copyright Dash Associates 1998-2002 Enter problem name> simple > readprob … > maxim > writeprtsol (ou prtsol) > quit

4. Modelagem com Xpress-Mosel Trataremos aqui de flexibilidades da modelagem com Mosel bem como a separação da estrutura do modelo e dos dados, que juntos formam uma instância do problema

4.1 Construindo um Primeiro Modelo O problema da Mochila n Maximize S cixi i=1 Suject to: S aixi £ b xi is integer

4.1 Construindo um Primeiro Modelo Objeto Peso Valor ----------------------------------------------- Camera 2 15 Necklace 20 100 Vase 20 90 Frame 30 60 TV 40 40 Video 30 15 Chest 60 15 Brick 10 1

4.1 Construindo um Primeiro Modelo Model knapsack declarations camera, necklace, vase, picture, tv, video, chest, brick : mpvar end-declarations camera is_binary necklace is_binary vase is_binary … brick is_binary

4.1 Construindo um Primeiro Modelo Model knapsack declarations camera, necklace, vase, picture, tv, video, chest, brick : mpvar end-declarations camera is_binary necklace is_binary vase is_binary … brick is_binary Totalweight := 2*camera + 20*necklace + 20*vase + 20*picture + 40*tv + 30*video + 60*chest + 10*bricks <= 102 Totalvalue := 15*camera + 100*necklace + 90*vase + 60*picture + 40*tv + 15*video + 10*chest + 1*brick maximize(TotalValue) writeln(“Objective value is “,getobjval) end-model

4.2 Modelando com Vetores A construção de modelos como visto acima é conveniente para problemas com um número pequeno de variáveis, mas isso pode se tornar inviável em problemas de grande porte Não foi conveniente ter que especificar que cada variável é binária É usual na modelagem, mesmo de problemas pequenos, o uso de vetores de variáveis ou variáveis subscritas, como também são conhecidas

4.2 Modelando com Vetores 4.2 Modelando com Vetores model knapsack2 declarations Items = 1..8 Weight: array(Items) of real Value: array(Items) of real x : array(Items) of mpvar end-declarations ! Items Weight:= [2, 20, 20, 30, 40, 30, 60, 10] Value:= [15, 100, 90, 60, 40, 15, 10, 1]

4. 2 Modelando com Vetores model knapsack2 declarations Items = 1..8 Weight: array(Items) of real Value: array(Items) of real x : array(Items) of mpvar end-declarations ! Items Weight:= [2, 20, 20, 30, 40, 30, 60, 10] Value:= [15, 100, 90, 60, 40, 15, 10, 1] ! All x are binary forall(i in Items) x(i) is_binary ! Objective TotalValue := sum(i in Items) x(i)*Value(i) ! Constraint weight restriction TotalWeight := sum(i in Items) x(i)*Weight(i) <= 102 maximize(TotalValue) writeln(“Objective value is “, getobjval) forall(I in Items) writeln(“x (“,i,”) =“,getsol(x(i))) end-model

4.2 Modelando com Vetores Novas facilidades Items é um conjunto indexado para os elementos do vetor forall permite varrer elementos de um vetor indexado sum permite somar elementos de um vetor indexado

4.3 Usando Cadeias de Caracteres como Índices O modelo anterior é consideravelmente mais simples do que o primeiro modelo para o problema da mochila, mas sua interpretação é mais difícil—temos que traduzir os identificadores em seus respectivos nomes Faça a seguinte substituição Items = {“camera”, “necklace”, “vase”, “picture”, “tv”, “video”, “chest”, “brick”}

4.4 Modelagem Versátil O exemplo acima é apenas um de um número de problemas similares, conhecidos como problemas da mochila. Seria útil generalizar o modelo acima, permitindo o aumento do número de itens e a alteração dos pesos/valores Com o problema já especificado em termos de vetores, as dificuldades estão no acoplamento do modelo com os dados

4.4 Modelagem Versátil Modelos: modelos são geralmente especificados usando símbolos para representar as diversas variáveis de decisão, bem como o relacionamento entre as variáveis por meio de desigualdades e igualdades Modelos Genéricos: uma descrição sistemática dessas restrições forma um modelo genérico Instância: combinando este modelo com um conjunto de dados produz uma instância (modelo numérico), a qual pode ser otimizada

4.4 Modelagem Versátil model knapsack3 declarations Items = set of strings MAXWT:real Weight: array(Items) of real Value: array(Items) of real x : array(Items) of mpvar end-declarations ! Read in data from external file initializations from “mochila3.txt” Items MAXWT Weight Value end-initializations

4.4 Modelagem Versátil model knapsack3 declarations Items = set of strings MAXWT:real Weight: array(Items) of real Value: array(Items) of real x : array(Items) of mpvar end-declarations ! Read in data from external file initializations from “mochila3.txt” Items MAXWT Weight Value end-initializations ! Create Variables forall(i in Items) create(x(i)) ! All x are binary forall(i in Items) x(i) is_binary ! Objective TotalValue := sum(i in Items) x(i)*Value(i) ! Constraint weight restriction TotalWeight := sum(i in Items) x(i)*Weight(i) <= MAXWT maximize(TotalValue) writeln(“Objective value is “, getobjval) end-model

4.4 Modelagem Versátil Items: {“camera”, “necklace”, “vase”, “picture”, “tv”, “video”, “chest”, “brick”} Weight: [2, 20, 20, 30, 40, 30, 60, 10] Value: [15, 100, 90, 60, 40, 15, 10, 1] MAXWT: 120

5. Referências XpressMP essentials: an introduction to modeling and optimization, http://www.dash.optimization.com R. Fourer, D.M. Gay, B.W. Kernighan, “AMPL: A Modeling Language for Mathematical Programming”, Duxbury Press, 1999.