|
|
Programação Linear e InteiraProf. Haroldo Gambini Santos |
[Intro] [Notas de Aula] [Códigos] [Pacotes] [Bibliografia]
Material de auxílio aos alunos de PLI.
|
Introdução
I - histórico - método gráfico - modelagem |
|
|
Introdução II - simplex: introdução - modelagem | |
|
Simplex - pivoteamento - teste de otimalidade - base ótima |
|||||
|
||||||||||||
GLPK MathProg - utilização do GLPK - formato LP e MathProg |
Modelagem em PI - custo fixo - big M |
Modelagem em PI - jogos |
||||||||||
Branch and Bound - branch and bound - limites duais e primais |
Formulações - envoltória convexa - formulações fortes |
Cortes - cortes por arredondamento - cortes disjuntivos - cortes combinatórios |
||||||||||
Geração de Colunas - decomposição Dantzig-Wolfe - problema da alocação generalizada |
Cutting Stock Problem - exemplo de geração de colunas |
cstock.c
ver em html Exemplo de geração de colunas para o corte unidimensional usando o GLPK. |
Um grande apelo de PLI é a disponibilidade de programas resolvedores de alta qualidade. Muitos desses são livres, de modo que o usuário pode modificá-los de acordo com suas necessidades. Dois desses são o GNU Linear Programming Kit (GLPK) e o COIN Branch-and-Cut (COIN CBC). Comparações de desempenho entre esses programas estão disponíveis aqui.
O GLPK é um resolvedor PLI muito documentado e fácil de usar. Apesar de apresentar um desempenho pobre em problemas mais difíceis, é uma ótima opção para desenvolvimento de modelos e testes preliminares. O GLPK aceita arquivos do CPLEX (formato lp) e também modelos escritos na linguagem MathProg, que é baseada na linguagem de modelagem AMPL.
O CBC é um poderoso resolvedor de programas lineares e inteiros. O pacote inclui recursos como: pré-processamento, planos de corte, heurísticas e estratégias de branching. Apesar de ter sido inicialmente projetado para ser usado como uma biblioteca, o mesmo inclui um resolvedor independente que pode ser chamado pela linha de comando. Assim como o GLPK, ele aceita o formato .lp. Esse resolvedor pode também ser executado em modo paralelo para o aproveitamento de computadores com vários núcleos.
[1] Wolsey, Laurence A. Integer Programming. Wiley, 1998.
[2] Lee, Jon. A First Course in Combinatorial Optimization. Cambridge University Press. 2004.
[3] Goldbarg, Marco C. e Luna, Henrique P.L. Otimização Combinatória e Programação Linear. Campus. 2000.
[4] Fampa, Marcia H. C. e Maculan, Nelson. Otimização Linear. UNB. 2006.
[5] Dasgupta, Sanjoy, Papadimitriou, Christos .H e Vazirani, Umesh
V. Algorithms. Mc Graw Hill. 2007. Capítulo
7:
Programação
Linear.