Você está na página 1de 24

27/09/2013

LINGUAGEM DE MODELAGEM ALGBRICO

Marcos J. Rider
mjrider@dee.feis.unesp.br

Alternativas para o desenvolvimento de modelos de otimizao

Linguagens de programao de propsito geral


C, C++, Java, Visual Basic, FORTRAN 90.

Plataformas para o clculo numrico ou simblico


Folha de calculo, Matlab, Mathematica.

Linguagens de modelagem algbrico


AMPL (www.ampl.com).
GAMS (www.gams.com).
MPL (www.maximalsoftware.com).
AIMMS (www.aimms.com).
XPRESS-MP (www.dashoptimization.com).
OPLStudio (www.ilog.com).
Zimpl (http://zimpl.zib.de/) de domnio pblico.
MathProg (http://lpsolve.sourceforge.net/5.5/MathProg.htm) de domnio pblico.

mjrider@dee.feis.unesp.br 2

1
27/09/2013

Linguagens de programao

Vantagens
Usado quando o tempo de soluo critico.
Permite o uso de algoritmos de otimizao especficos.
Possibilidade de implementao do modelo num entorno de software ou hardware especial.

Desvantagens
Elevado tempo de implementao do modelo.
Maior dificuldade e consumo de recursos para a manuteno do modelo.

mjrider@dee.feis.unesp.br 3

Plataformas para o clculo numrico ou simblico

Vantagens
Fcil de usar.
Integrao total com a folha de calculo.
Familiaridade com o entorno, que facilita a explicao do modelo e de seus resultados.
Facilidade para apresentar os resultados de forma grfica.

Desvantagens
No incentiva a uma boa prtica de programao.
Apresenta dificuldades para a verificao, validao, atualizao e documentao dos
modelos.
No permite modelar problemas complexos ou de grande tamanho.

mjrider@dee.feis.unesp.br 4

2
27/09/2013

Linguagens de modelagem algbrico

Vantagens
Linguagens de alto nvel para a formulao compacta de modelos grandes e complexos.
Facilitam o desenvolvimento de prottipos.
Melhorar a produtividade de modeladores.
Geram bons hbitos de modelagem.
Separa a estrutura de dados dos solucionadores (solvers).
Formulao do modelo independente do tamanho.
Modelos independentes dos solucionadores.
Facilitam a reformulao continua
Documentao simultnea com o modelo.
Permite a implementao de algoritmos avanados.
Implementao fcil de problemas LP, NLP, MIP.
Portabilidade entre plataformas e sistemas operativos.

Desvantagens
No so adequados para usos espordicos com problemas de tamanho pequeno.
No so adequados para resolver diretamente problemas de tamanho gigantesco (1.000.000
x 1.000.000).

mjrider@dee.feis.unesp.br 5

Tendncias futuras

Interface de entrada e sada de dados ms estreita com as folhas de


calculo e bases de dados.

Interface grfica para facilitar a formulao e entendimento dos problemas


de otimizao.

Interface com funciones externas escritas pelo usurio em linguagens de


propsito geral.

Resoluo direta de problemas de otimizao estocstica ou no lineares


complexos.

Gerao de arquivos executveis para os usurios finais.

Seleo automtica do mtodo de otimizao e do solucionador.

mjrider@dee.feis.unesp.br 6

3
27/09/2013

Linguagens de modelagem algbrico


Etapas no desenvolvimento e solucionadores
de um modelo

Linguagem de modelagem algbrico

1. Tabelas
Identificao do Solucionadores Avaliao da
Soluo 2. Listas
problema (Solvers) soluo
3. Figuras

1. Datos
Definio do Implementao
2. Modelo Implantao
modelo do modelo
matemtico

Validao

mjrider@dee.feis.unesp.br 7

Caractersticas dos linguagens de modelagem algbrico

As linguagens de modelagem algbricos tem uma sintaxes bem definida e


muito prxima linguagem matemtica.

Os linguagens de modelagem algbricos expressam o problema de una


maneira que o computador possa entender.

So declarativas, assim, informam que solucionar (o modelo matemtico),


mas no como soluciona-o (qual algoritmo o solucionador solver usar).

Foram aos usurios a diferenciar entre a estrutura lgica do problema (o


modelo matemtico) e os dados numricos (as instancias do problema).

Durante esta disciplina usaremos AMPL (A Modeling Language for


Mathematical Programming).

mjrider@dee.feis.unesp.br 8

4
27/09/2013

Solucionadores (solvers)

Um solucionador o solver um software que recebe a descrio do


problema (modelo matemtico + dados) e devolve uma soluo (se existir).
Dependendo do problema, diferentes solvers podem ser usados:
Solver para otimizao linear: CBC, CPLEX, GUROBI, LP_SOLVE, LOQO, MINOS, MINTO,
MOSEK, XPRESS.
Solver para otimizao no linear: CONOPT, IPOPT, KNITRO, LANCELOT, LOQO, MINLP,
MINOS, SNOPT, PENNON.
Solver para otimizao linear inteira mista: CBC, CPLEX, GUROBI, LP_SOLVE, MINTO,
MOSEK, XPRESS.
Solver para otimizao quadrtica: CPLEX, GUROBI, LOQO, MOSEK, XPRESS.
Solver para otimizao no linear inteira mista : KINTRO, MINLP, BONMIN, FILMINT,
FILTER.
Os solvers que trabalham com AMPL so mostrados em (http://www.ampl.com/solvers.html)
Os solvers tem muitas opes que podem melhorar o tempo de soluo, se
so usados corretamente.
Durante a disciplina, vamos resolver problemas de otimizao linear, no
linear, linear inteiro mista e no linear inteiro mista usando os solvers
CPLEX (www.ibm.com/software/integration/optimization/cplex-optimizer/) e KNITRO
(http://http://www.ziena.com/knitro.htm).
mjrider@dee.feis.unesp.br 9

Baixando AMPL

mjrider@dee.feis.unesp.br 10

5
27/09/2013

Baixando AMPL

Baixar o arquivo amplcml.zip.

Descompactar o arquivo amplcml.zip.

Note que foi criada uma pasta chamada amplcml, contendo o executvel
de AMPL (ampl.exe) e os executveis dos solucionadores MINOS 5.5
(minos.exe), CPLEX 11.2 (cplex.exe e cplex112.dll), GUROBI 2.0
(gurobi.exe e gurobi20.dll) e LP_SOLVE (lpsolve.exe).

fortemente recomendvel criar um PATH em Windows para a pasta


amplcml.

mjrider@dee.feis.unesp.br 11

AMPL + SOLVERS

Chama as
Soluo do livrarias C++
problema binrias FORTRAN
(arquivos textos) JAVA
Modelo etc...
Matemtico,
Dados e
Opes Chama o solucionador CPLEX /
AMPL
(arquivos Chama o AMPL KNITRO
textos)

Arquivo binrio
*.nl

Arquivo binrio
*.sol

mjrider@dee.feis.unesp.br 12

6
27/09/2013

Interpretao dos resultados

Os solvers devolvem solues corretas para seu modelo matemtico....


mas a soluo vlida para o problema real dado?.

Se a soluo no vlida, 99,999% das vezes o modelo matemtico foi


escrito de forma errada, ou os dados esto errados (50% das vezes
cometido erros na sintaxes!).

Problemas comuns:
Variveis sem limites.
Faltam restries.
Restries mal-escritas.
Nmero errado de restries.
Funo objetivo errada.

Se deve conhecer que caractersticas devem apresentar os resultados.

Obter uma soluo no o fim da historia!.


mjrider@dee.feis.unesp.br 13

Porque os laboratrios so teis?

Os laboratrios diminuem a distancia entre a teoria e a pratica.

Os objetivos dos laboratrios so:


Treinar a intuio e as habilidades necessrias para formular modelos matemticos.
Aprender o linguagem de modelagem algbrico AMPL.
Entender as funcionalidades, vantagens e desvantagens dos solvers.
Adquirir habilidades na interpretao dos resultados.

mjrider@dee.feis.unesp.br 14

7
27/09/2013

Estrutura geral de um modelo de otimizao em AMPL

Declarao de conjuntos e parmetros.

Declarao das variveis de deciso.

Definio da funo objetivo.

Definio das restries.

Leitura e manipulao dos dados de entrada.

Fixao e inicializao das variveis de deciso.

Definio do solver a ser usado e suas opes.

Soluo do problema.

Apresentao dos resultados.


mjrider@dee.feis.unesp.br 15

Recomendaes ao implementar um modelo

Cdigo limpo, cuidar da esttica do modelo.

Manter a coerncia das regras de escrita (espaos, endentao).

Facilitar a leitura.

Comentrios ilustrativos e bem localizados.

Nome de entidades descritivas.

Definies com dimenses fsicas.

Uso sistemtico e coerente de maisculas e minsculas.

Modular: modelo, dados e resultados em diferentes arquivos.

Comprobao do domnio dos ndices.


mjrider@dee.feis.unesp.br 16

8
27/09/2013

Regras lxicas de AMPL

Cada conjunto, parmetro, varivel, funo objetivo e restrio tem um


nome alfanumrico.

AMPL distingue entre letras maisculas e minsculas.

Cada linha de instruo deve finalizar com um ponto e coma (;).

Os comentrios comeam com # e se estendem at o final da linha.

possvel definir um comentrio maior (com varias linhas) usando os


comandos /* e */.

No anexo tem exemplos de declarao de conjuntos, parmetros, variveis,


funes objetivos e restries em AMPL.

mjrider@dee.feis.unesp.br 17

Exemplo de otimizao linear de duas variveis deciso em AMPL

Una empresa de ao fabrica dois produtos: bandas y bobinas.

Cada produto tem una velocidade de fabricao, um lucro para a empresa


por tonelada e uma quantidade de produo mxima por semana:

Produto Toneladas por Lucro por Toneladas


hora tonelada mximas
Bandas 200 $25 6000
Bobinas 140 $30 4000

Se 40 horas o tempo de produo disponvel para esta semana.

Quantas toneladas de bandas e quantas toneladas de bobinas se devem


produzir para obter o maior lucro total?

mjrider@dee.feis.unesp.br 18

9
27/09/2013

Exemplo de otimizao linear de duas variveis deciso em AMPL

Variveis:
x : nmero de toneladas de bandas.
y : nmero de toneladas de bobinas.

Critrio de otimizao: Maximizar o lucro total.

Maximizar : lucro total = 25 x + 30 y


Sujeito a
(1/ 200) x + (1/ 140) y 40
0 x 6000
0 y 4000

mjrider@dee.feis.unesp.br 19

Exemplo de otimizao linear de duas variveis deciso em AMPL

# elimina todos os elementos da memria


reset;

# declarao das variveis


var x;
var y;

# definio da funo objetivo


maximize lucro_total : 25*x + 30*y;

# definio das restries


subject to tempo : (1/200)*x + (1/140)*y <= 40;

subject to limite_bandas : 0 <= x <= 6000;

subject to limite_bobinas : 0 <= y <= 4000;

# define CPLEX como solucionador ou solver


option solver cplex;

# soluciona o modelo
solve lucro_total;

# mostrar os resultados
mjrider@dee.feis.unesp.br
display x, y; 20

10
27/09/2013

Baixando Notepad++

mjrider@dee.feis.unesp.br 21

Baixando Notepad++

Instalar o Plugins NppExec.


Plugins / Plugin Manager / Show Plugin Manager

Para executar automaticamente o arquivo atual, pulsar F6 e escrever:


ampl "$(FULL_CURRENT_PATH)"

mjrider@dee.feis.unesp.br 22

11
27/09/2013

Exemplo de otimizao linear de duas variveis deciso em AMPL

Se possvel trabalhar mais 1 hora esta semana (hora extra ou adicional),


quanto seria o lucro adicional?.

Se possvel produzir mais 1 tonelada por semana de bandas, quanto


seria o lucro adicional?.

Se possvel produzir mais 1 tonelada por semana de bobinas, quanto


seria o lucro adicional?.

Qual a diferencia entre a quantidade de produo mxima e a produo


tima para este semana de cada produto?.

Como imprimir um arquivo de sada para os resultados?.

mjrider@dee.feis.unesp.br 23

Exemplo de otimizao linear em AMPL

Conjunto:
PROD : conjunto de produtos.
Parmetros:
DISP : horas de produo disponvel para esta semana.
VELCp : toneladas de fabricao do produto p por hora.
LUCRp : lucro do produto p por tonelada em $.
MAXTp : Toneladas mximas de fabricao do produto p.
Variveis:
FABRp : toneladas do produto p que devem ser fabricados.
Critrio de otimizao: Maximizar o lucro total.

Maximizar : lucro total =


pPROD
LUCRpFABRp

Sujeito a
(1/ VELCp ) FABRp DISP
pPROD

0 FABRp MAXTp p PROD


mjrider@dee.feis.unesp.br 24

12
27/09/2013

Exemplo de otimizao linear em AMPL

# elimina todos os elementos da memria


reset;

# muda ao modo modelo


model;

# declarao de conjuntos e parmetros


set PROD; # produtos
param DISP >= 0 ; # horas disponveis na semana
param VELC {PROD} > 0 ; # toneladas de fabricao por hora
param LUCR {PROD} ; # lucro por toneladas
param MAXT {PROD} >= 0 ; # toneladas mximas de fabricao

# declarao das variveis


var FABR {p in PROD} >= 0, <= MAXT[p]; # toneladas que devem ser fabricados

# definio da funo objetivo


# lucro total de produo
maximize lucro_total : sum{p in PROD} LUCR[p] * FABR[p];

# definio das restries


# o nmero total de horas utilizadas por todos os produtos
# no pode exceder as horas disponveis da fabrica
subject to tempo : sum{p in PROD} (1/VELC[p])*FABR[p] <= DISP;
mjrider@dee.feis.unesp.br 25

Exemplo de otimizao linear em AMPL

# muda ao modo dados


data;

param: PROD : VELC LUCR MAXT :=


bandas 200 25 6000
bobinas 140 30 4000;

param DISP := 40;

# define CPLEX como solucionador ou solver


option solver cplex;

# soluciona o modelo
solve lucro_total;

# mostrar os resultados
display FABR;

mjrider@dee.feis.unesp.br 26

13
27/09/2013

Exemplo de otimizao linear em AMPL

AMPL detecta vrios tipos de declaraes incorretas, que so mostrados


nas mensagens de erro.
ATENO : Leiam as mensagens de erro!.

uma boa prtica incluir muitos controles de validao no modelo para que
os erros sejam detectados o mais rpido possvel.

O comando expand pode ser til na procura de erros, mostrando como


AMPL reconhece o modelo simblico.

Modular, use o comando include para criar arquivos para separar o


modelo, dos dados e dos resultados.

mjrider@dee.feis.unesp.br 27

Exemplo de otimizao linear em AMPL

Suponhamos que a empresa vai fabricar outro produto: chapas de ao.

Produto Toneladas por Lucro por Toneladas


hora tonelada mximas
Chapas de 160 $29 3500
Acero

Que modificaes devem ser feitas no modelo ou nos dados?

Encontre a soluo para este novo caso.

mjrider@dee.feis.unesp.br 28

14
27/09/2013

Exemplo de otimizao linear em AMPL

Agora, suponhamos que a empresa tem limites mnimos de produo


semanal que so impostas pelos compromissos de vendas.

Produto Bandas Bobinas Chapas de Ao


Compromissos 1000 500 750
de vendas

Que modificaes devem ser feitas no modelo ou nos dados?

Encontre a soluo para este novo caso.

mjrider@dee.feis.unesp.br 29

O problema de transporte

Fbricas de
Siderrgicas automveis
Produo (origen) Demanda
em toneladas (destino) em toneladas
Gary 1400 900 Farmington

1200 Detroit

600 Lansing
Cleveland 2600

400 Winsor

1700 St. Louis


Pittsburg 2900

1100 Fremont
Total de produo =
Total de demanda 1000 Lafayette
mjrider@dee.feis.unesp.br 30

15
27/09/2013

O problema de transporte

Custo de transporte por tonelada


Siderrgicas
Fbricas GARY CLEV PITT
FRA 39 27 24
DET 14 9 14
LAN 11 12 17
WIN 14 9 13
STL 16 26 28
FRE 82 95 99
LAF 8 17 20

mjrider@dee.feis.unesp.br 31

O problema de transporte

Conjuntos:
SID : conjunto de siderrgicas.
FAB : conjunto de fbricas.
Parmetros:
COSTs,f : custo de transporte por tonelada da siderrgica s para a fbrica f.
PRODs : produo da siderrgica s em toneladas.
DEMAf : demanda da fbrica f em toneladas.
Variveis:
TRANSs,f : toneladas transportadas da siderrgica s para a fabrica f.
Critrio de otimizao: Minimizar o custo total de transporte.

Minimizar : custo total = COST


sSID f FAB
s,f TRANSs,f

Sujeito a
TRANS s,f = PRODs s SID
f FAB

TRANS s,f = DEMA f f FAB


sSID

mjrider@dee.feis.unesp.br
TRANSs,f 0 s SID, f FAB 32

16
27/09/2013

O problema de transporte

# elimina todos os elementos da memoria


reset;

# muda ao modo modelo


model;

# declarao de conjuntos e parmetros


set SID; # conjunto de siderrgicas
set FAB; # conjunto de fbricas
param COST {SID,FAB} >= 0; # custos de transporte por ton.
param PROD {SID} >= 0; # ton. produzidas pelas siderrgicas
param DEMA {FAB} >= 0; # ton. demandadas pelas fbricas

# declarao das variveis


var TRANS {SID,FAB} >= 0; # toneladas que seram transportadas

# definio da funo objetivo


# custo total de transporte
minimize custo_total : sum{s in SID} sum{f in FAB} COST[s,f] * TRANS[s,f];

# definio das restries


subject to Siderurgicas {s in SID}: sum{f in FAB} TRANS[s,f] = PROD[s];

subject to Fabricas {f in FAB}: sum{s in SID} TRANS[s,f] = DEMA[f];


mjrider@dee.feis.unesp.br 33

O problema de transporte

# muda ao modo dados


data;

param: SID: PROD := # define SID e PROD


GARY 1400
CLEV 2600
PITT 2900 ;

param: FAB: DEMA := # define FAB e DEMA


FRA 900
DET 1200
LAN 600
WIN 400
STL 1700
FRE 1100
LAF 1000 ;

param COST :
FRA DET LAN WIN STL FRE LAF :=
GARY 39 14 11 14 16 82 8
CLEV 27 9 12 9 26 95 17
PITT 24 14 17 13 28 99 20 ;

mjrider@dee.feis.unesp.br 34

17
27/09/2013

O problema de transporte

# define CPLEX como solucionador ou solver


option solver cplex;

# soluciona o modelo
solve custo_total;

# mostrar os resultados
display TRANS;

mjrider@dee.feis.unesp.br 35

ANEXOS

mjrider@dee.feis.unesp.br 36

18
27/09/2013

Alguns operadores aritmticos (A), lgicos (L) e de conjuntos (C) em


AMPL

Nome Tipo Significado


or, || L o lgico
and, && L y lgico
<, <=, =, ==, <>, =!, >=, > L operadores relacionais
in, not in L pertencia a um conjunto
within, not within L S within T significa S T
not, ! L negao lgica
union, diff, symdiff C symdiff a diferena simtrica
inter C Interseo
cross C produto cartesiano

sum, prod, min, max A operadores de reduo aritmtica

^, ** A potenciao

mjrider@dee.feis.unesp.br 37

Algumas funes aritmticas em AMPL

Sintaxes Significado
abs(x) valor absoluto
asin(x), acos(x), atan(x) sin-1(x), cos-1(x), tan-1(x)
asinh(x), acosh(x), atanh(x) sinh-1(x), cosh-1(x), tanh-1(x)
sin(x), cos(x), tan(x) seno, coseno, tangente
sinh(x), cosh(x), tanh(x) seno hiperblico, coseno hiperblico,
tangente hiperblica
ceil(x) maior inteiro ms perto a x
exp(x) exponencial
floor(x) menor inteiro ms perto a x
log(x) loge(x)
log10(x) log10(x)
sqrt(x) raiz quadrada
round(x) x arredondado ao inteiro ms perto
trunc(x) x truncado a um inteiro

mjrider@dee.feis.unesp.br 38

19
27/09/2013

Exemplos de declarao de conjuntos em AMPL

Modelo matemtico Modelo em AMPL Dados em AMPL


I = {a,b,c,d,e} set I; set I := a b c d e;
V = {1,...,5} set V; set V := 1..5;

E=VV set E = {V,V};


EVV set E within {V,V}; set E :=
(1,2) (2,3) (2,5);
E = {(i,j) | i,j V, i > j} set E =
{i in V, j in V : i > j};

Um conjunto vazio definido como {}.

card(V) informa o nmero de elementos do conjunto V.

last(V) informa o ultimo elemento do conjunto V.

first(V) informa o primeiro elemento do conjunto V.


mjrider@dee.feis.unesp.br 39

Exemplos de declarao de parmetros em AMPL

Modelo matemtico Modelo em AMPL Dados em AMPL


g constante param g; param g := 9.81;
nomei i I set I; set I := 1 2;
param nome{I} symbolic; param nome :=
1 "marcos"
2 "julio";
rv 0 v V set V; set V := 1 2;
tv 0 inteiro, v V param r{V} >=0; param r := 1 0, 2 2;
param t{V} integer, >=0; param t := 1 1, 2 3;
o
set V := 1 2;
param: r t :=
1 0 1
2 2 3;
valorp > 0 p PROD set PROD; param: PROD: valor lucro:=
lucrop > 0 p PROD param valor{PROD} > 0; prato 200 25
param lucro{PROD} > 0; faca 140 30
garfo 160 29;

mjrider@dee.feis.unesp.br 40

20
27/09/2013

Exemplos de declarao de parmetros em AMPL

Modelo matemtico Modelo em AMPL Dados em AMPL


EVV set V; set V := 1 2 3;
ci,j > 0 (i,j) E set E within {V,V}; set E := (1,2) (2,3);
param c{E} > 0; param c :=
(1,2) 2
(2,3) 4;
o
set V := 1 2 3;
param: E : c :=
1 2 2
2 3 4;
ci,j 0 iORIG, set ORIG ; set ORIG := SP RJ MG;
jDEST set DEST ; set DEST := RS RN CE MA;
param c {ORIG,DEST}>=0; param c : RS RN CE MA :=
SP 39 14 11 14
RJ 27 9 12 9
MG 24 14 17 13;

mjrider@dee.feis.unesp.br 41

Exemplos de declarao de parmetros em AMPL

Modelo matemtico Modelo em AMPL Dados em AMPL


ci,j,t 0 iORIG, set ORIG ; set ORIG := SP RJ MG;
jDEST, set DEST ; set DEST := RS RN CE MA;
tSEME Set SEME ; set SEME := 1 2;
param c {ORIG,DEST}>=0; param c :=
[*,*,1]: RS RN CE MA :=
SP 39 14 11 14
RJ 27 9 12 9
MG 24 14 17 13
[*,*,2]: RS RN CE MA :=
SP 19 7 6 8
RJ 20 4 8 4
MG 10 6 10 8;

Infinity : (infinito) um parmetro predefinido.


binary : parmetro binrio.
integer : parmetro inteiro.
symbolic : parmetro simblico.
mjrider@dee.feis.unesp.br 42

21
27/09/2013

Exemplos de declarao de variveis em AMPL

Modelo matemtico Modelo em AMPL


x {0,1} var x binary;
xi {0,1} i I var x{I} binary;
xi,j 0 i I, j J var x{I,J} >= 0;
xi,j 0 inteiro, i I, j J var x{I,J} integer, >= 0;
0 xi,j 100 (i,j) E, k K var x{E,K} >= 0, <= 100;

binary : varivel binria.


integer : varivel inteira.
>=, <= : especificam limites.
:= : define um valor inicial. comum definir valores iniciais s variveis,
como ponto inicial, para resolver um problema de otimizao no linear.
x.init : valor inicial da varivel x.
x.lslack : a folga inferior (xj lj).
x.uslack : a folga superior (uj xj).
x.slack : min(x.lslack,x.uslack).
mjrider@dee.feis.unesp.br 43

Exemplos de declarao de funes objetivos em AMPL

Modelo matemtico Modelo em AMPL


min iI ci xi minimize Custos:
sum{i in I} c[i]*x[i];
max kK (i,j)E ci,j xi,j,k maximize Beneficios:
sum{(i,j) in E, k in K} c[i,j]*x[i,j,k];
max kK ck xk iI, jJ ti,j yi,j maximize Lucros:
sum{k in K} c[k]*x[k]
sum{i in I, j in J} t[i,j]*y[i,j];

minimize : minimizar.

maximize : maximizar.

mjrider@dee.feis.unesp.br 44

22
27/09/2013

Exemplos de declarao de restries em AMPL

Modelo matemtico Modelo em AMPL


iI ai xi b subject to orcamento:
sum{i in I} a[i]*x[i] <= b;
iI xi,j = 1 jJ subject to taxas {j in J}:
sum{i in I} x[i,j] = 1;
xi,j ci,j yi,j iI, jJ subject to tempo_analises {j in I, j in J}:
x[i,j] <= c[i,j]*y[j];
kK xi,k,m 1 iI, mM subject to projeto {i in I, m in M}:
sum{k in K} x[i,k,m] <= 1;

taxas[j].dual : valor da varivel dual da j-esima restrio.


tasas[j].lslack : folga inferior da j-esima restrio.
tasas[j].uslack : folga superior da j-esima restrio.
tasas[j].ldual : valor da varivel dual do limite inferior da j-esima
restrio.
tasas[j].udual : valor da varivel dual do limite superior da j-esima
restrio.
mjrider@dee.feis.unesp.br 45

Alguns comandos do AMPL

Comando Significado
break termina um ciclo for ou while
close fecha um arquivo
data muda ao modo dados
display imprime elementos do modelo e expresses
expand mostra explicitamente o modelo
fix fixa uma varivel a seu valor atual
for {indices}{comandos} ciclo for
if {condicin} then {comandos} comprova uma condio
include Inclui arquivos
let muda os valores dos dados (:=)
model muda ao modo modelo
objetive seleciona uma funo objetivo a otimizar
option define ou mostra valores opcionais
option solver cplex; define CPLEX como solucionador o solver
printf imprime elementos do modelo com formato
(\n, %4d, %7.1f)
quit termina AMPL
mjrider@dee.feis.unesp.br 46

23
27/09/2013

Alguns comandos do AMPL

Comando Significado
repeat while condio { repetir um bloco de comandos enquanto a
comandos; condio seja verdadeira
}
repeat until condio { repetir um bloco de comandos at que a condio
comandos; seja falsa
}
repeat { repetir um bloco de comandos enquanto a
comandos; condio seja verdadeira
} while condio;
repeat { repetir um bloco de comandos at que a condio
comandos; seja falsa
} until condio;
reset elimina todos os elementos da memria
shell temporalmente sai ao sistema operativo
solve envia o modelo atual a um solver e devolve a
soluo
unfix desfaz um comando fix

mjrider@dee.feis.unesp.br 47

24

Você também pode gostar