Sei sulla pagina 1di 21

Um tutorial de OPL e CPLEX

http://code.google.com/p/ms428-unicamp/
14 de julho de 2011

Licenca
Um tutorial de OPL e CPLEX de http://code.google.com/p/ms428-unicamp/
foi licenciada com uma Licenca Creative Commons - Atribuicao - Uso Nao
Comercial 3.0 Nao Adaptada (http://creativecommons.org/licenses/
by-nc/3.0/).
Com base na obra disponvel em http://code.google.com/p/ms428-unicamp/.
Podem estar disponveis permissoes adicionais ao ambito desta licenca em
http://code.google.com/p/ms428-unicamp/.

Licence
Um tutorial de OPL e CPLEX by http://code.google.com/p/ms428-unicamp/
is licensed under a Creative Commons Attribution 3.0 Unported License
(http://creativecommons.org/licenses/by-nc/3.0/).
Based on a work at http://code.google.com/p/ms428-unicamp/.
Permissions beyond the scope of this license may be available at http:
//code.google.com/p/ms428-unicamp/.

ii

Informa
co
es
Este livro foi concebido com o objetivo de ajudar os alunos do curso 28,
Matematica Aplicada e Computacional, da Universidade Estadual de Campinas, UNICAMP, no aprendizado da Optimization Programming Language
(OPL) e no uso do CPLEX Optimizer (CPLEX)
Optou-se por utilizar o LATEX para a producao deste livro, o sistema
de versionamento Mercurial e hospedar os arquivos no Google Code (http:
//code.google.com/p/ms428-unicamp/).
Para obter a versao mais atual deste livro deve-se adquirir os arquivos do
projeto (maiores informacoes em http://code.google.com/p/ms428-unicamp/
source/checkout e gerar a versao visual.
Correcoes e sugestoes podem ser feitas via e-mail ou pelo envio de pacotes ao projeto (para evitar vandalismo, a permissao para modificacoes dos
arquivos presentes no repositorio sera concedida apos a primeira correcao ou
sugestao).

iii

iv

Pref
acio
Como disse Flatberg, em [Fla09], a motivacao para utilizar uma linguagem
de modelagem, como OPL, sao que esta:
apresenta uma sntaxe que e proxima da formulacao matematica;
permite uma separacao entre o modelo e a instancia numerica de dados.
Deste modo, nos primeiros captulos apresentamos a sntaxe do linguagem
OPL.
Posteriormente apresentamos como utilizar o CPLEX para resolver os
modelos desenvolvidos na OPL.
Na Figura 1 e apresentado uma estatstica comparativa dos principais
solvers existentes. Pode-se observar que o CPLEX apresenta um dos melhores
desempenho de todos de modo que utiliza-lo quase sempre e uma boa escolha.
Deve-se destacar que a utilizacao do CPLEX em sistemas operacionais diferentes e muito diferente e algumas funcionalidades existentes para um sistema
operacional podem nao estar disponveis em outro.

Figura 1: MIP solver benchmark: Geometric mean of results taken from the
homepage of Hans Mittelmann, http://plato.asu.edu/ftp/milpf.html
(16/Jan/2011).
Unsolved or failed instances are accounted for with the time limit of 2 hours.

vi

PREFACIO

Sum
ario
Informaco
es

iii

Pref
acio

1 Instalac
ao
1.1 Aquisicao . . . . . . . . . . . .
1.2 Linux . . . . . . . . . . . . . . .
1.2.1 Versao para Linux . . . .
1.2.2 Versao para Windows via
1.3 Windows . . . . . . . . . . . . .
2 Introduc
ao
2.1 Parametros . . . . . .
2.2 Parametros em arquivo
2.3 Variaveis . . . . . . . .
2.4 Operacoes . . . . . . .
2.5 Funcao Objetivo . . .
2.6 Restricoes . . . . . . .

. . .
. . .
. . .
Wine
. . .

. . . . . .
separado
. . . . . .
. . . . . .
. . . . . .
. . . . . .

A Notac
ao

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.

1
1
1
2
3
3

.
.
.
.
.
.

5
5
6
6
6
6
6
9

ii

SUMARIO

Captulo 1
Instala
c
ao
Neste captulo iremos apresentar como adquirir o IBM ILOG CPLEX Optimization Studio, uma licenca academica e proceder com a instalacao nos sistemas
operacionais Linux e Windows. Para maiores detalhes consultar [IBM]

1.1

Aquisic
ao

Para adquirir o IBM ILOG CPLEX Optimization Studio voce primeiro deve
fazer um cadastro na IBM Academic Initiative (https://www.ibm.com/developerworks/
university/academicinitiative/index.html).
Apos o cadastro, dirija-se `a https://www.ibm.com/developerworks/
university/software/get_software.html e procure por IBM ILOG CPLEX
Optimization Studio. Voce devera baixar o arquivo correspondente ao seu sistema operacional tomando o devido cuidado para baixar a versao adequada
(32 ou 64 bit, se tiver d
uvida baixe a versao 32 bit).
Voce tambem deve fazer o download de uma licenca em https://www.
ibm.com/developerworks/university/support/ilog.html.

1.2

Linux

A versao para Linux nao apresenta todas as funcionalidades da versao para


Windows. Primeiro iremos apresentar como instalar a versao para Linux e
depois apresentaremos uma maneira de utilizar a versao para Windows via
Wine.
1


CAPITULO 1. INSTALAC
AO

1.2.1

Vers
ao para Linux

Nesta instalacao voce deve ter baixado um arquivo cujo e semelhante a


cplex studio122.acad.linux-x86.bin. Para iniciar a instalacao abra o
terminal e execute o seguinte comando:
$ chmod +x cplex_studio122.acad.linux-x86.bin
$ ./cplex_studio122.acad.linux-x86.bin
Apos instalado voce precisa adquirir uma licenca em https://www.ibm.
com/developerworks/university/support/ilog.html que sera fornecida
na forma de um arquivo denominado access.ilm. Uma vez adquirida a
licenca , proceda com os seguintes passos:
1. Crie um diretorio /usr/ilog/ilm/.
2. Mova a licenca access.ilm para o diretorio criado.
que pode ser feito pelos comandos:
# mkdir /usr/ilog
# mkdir /usr/ilog/ilm
# mv access.ilm /usr/ilog/ilm/access.ilm
Agora e a hora de testar se a instalacao foi feita corretamente pelos comandos
$ cd ~/ILOG/CPLEX_Studio_AcademicResearch122/cplex/bin/x86-64
_sles10_4.1/
$ ./cplex
Caso a instalacao tenha sido feita adequadamente o resultado deve ser
IBM ILOG License Manager: "IBM ILOG Optimization Suite for
Academic Initiative" is accessing CPLEX 12 with option(s):
"e m b q ".
IBM ILOG CPLEX Optimization Studio Academic Research Edition
Welcome to IBM(R) ILOG(R) CPLEX(R) Interactive Optimizer 12.2.
0.0
with Simplex, Mixed Integer & Barrier Optimizers
5725-A06 5725-A29 5724-Y48 5724-Y49 5724-Y54 5724-Y55
Copyright IBM Corp. 1988, 2010. All Rights Reserved.
Type help for a list of available commands.

1.3. WINDOWS
Type help followed by a command name for more
information on commands.
CPLEX>

1.2.2

1.3

Vers
ao para Windows via Wine

Windows

CAPITULO 1. INSTALAC
AO

Captulo 2
Introdu
c
ao
Neste captulo apresentamos a sintaxe basica do OPL.

2.1

Par
ametros

A grande maioria dos problemas sao modelados no Rn , n Z+ , e para


declarar o valor de n utilizamos a seguinte sintaxe:
int n = <valor de n>;
Qualquer outra constante pode ser declarada de maneira similar seguinto a
sintaxe:
<tipo> <nome da vari
avel> = <valor da vari
avel>;
onde <tipo> e um dos seguintes tipos primitivos: int, double.
Em muitos problemas e comum existir um ou mais conjuntos. A declaracao
de um conjunto pode ser feita de varias maneiras dependendo dos elementos
do conjunto. A seguir apresentamos alguns exemplos de conjuntos:
1. conjunto de n
umeros:
{int} I = {1, 2, 3};
2. conjunto de n
umeros em sequencia:
{int} I = {1:3};
3. conjunto de strings:
{string} I = {um, dois, tr^
es};
5


CAPITULO 2. INTRODUC
AO

Uma vez definido um conjunto podemos utiliza-lo para definir um vetor


utilizando a seguinte sintaxe:
int A[I] = [5, 10, 15];

2.2

Par
ametros em arquivo separado

2.3

Vari
aveis

Uma parte muito importante de qualquer modelo sao as variavies utilizadas.


A declaracao de uma variavel utiliza a seguinte sintaxe:
dvar <tipo> <nome da vari
avel>;
Tambem e possvel declarar um vetor de variaveis utilizando a seguinte sintaxe:
dvar <tipo> <nome da vari
avel>[<conjunto>];

2.4

Operac
oes

As operacoes aritmeticas permitidas sao:

2.5

Func
ao Objetivo

Caso o problema seja de maximizacao declaramos a funcao objetivo seguindo


a sintaxe:
maximize <opera
co
~es aritm
eticas>;
Se o problema for de minimizacao trocamos maximize por minimize.

2.6

Restrico
es

Para as restricoes utilizamos a seguinte sintaxe:


subsect to {
<desigualdade 1>;
<desigualdade 2>;


2.6. RESTRIC
OES
<...>;
}

CAPITULO 2. INTRODUC
AO

Ap
endice A
Nota
c
ao
N
Z
Z
Z>
Z
Z<
R
R
R>
R
R<
Amn
A
aij
bm
b
bi
italico
fonte sans serif
fonte teletype

Conjunto dos naturais, isso e, {1, 2, . . .}


Conjunto dos inteiros
Conjunto dos inteiros maiores ou igual a zero
Conjunto dos inteiros estritamente maiores que zero
Conjunto dos inteiros menores ou igual a zero
Conjunto dos inteiros estritamente menores que zero
Conjunto dos reais
Conjunto dos reais maiores ou igual a zero
Conjunto dos reais estritamente maiores que zero
Conjunto dos reais menores ou igual a zero
Conjunto dos reais estritamente menores que zero
Matriz A com m linhas e n colunas
Matriz A
Entrada ij da matriz A
Vetor b com m posicoes
Vetor b
Entrada i do vetor b
expressao extrangeira
nome de alguma empresa ou software
codigo ou comando de computador

10

APENDICE
A. NOTAC
AO

Refer
encias Bibliogr
aficas
[Fla09] Truls Flatberg. A short OPL tutorial, 2009. http://folk.uio.no/
trulsf/opl/opl_tutorial.pdf.
[IBM]

IBM.
Quick Start to IBM ILOG Optimization products.
http://download.boulder.ibm.com/ibmdl/pub/software/
dw/university/support/ILOGQuickStart.pdf.

[Mat11] Biarri Commercial Mathematics.


Installing cplex in linux
ubuntu,
2011.
http://biarri.blogspot.com/2011/05/
installing-cplex-in-linux-ubuntu.html.
[Rub10] Paul Rubin. Installing cplex (educational version) on linux,
2010.
http://orinanobworld.blogspot.com/2010/03/
installing-cplex-educational-version-on.html.

11

Potrebbero piacerti anche