You are on page 1of 3

Introduo linguagem de modelamento

matemtico AMPL

AMPL uma linguagem de programao matemtica em que podem ser


escritos modelos matemticos que representam problemas de otimizao. AMPL
um acrnimo de A Modeling Language for Mathematical Programming e foi
desenhado com o objetivo de ser muito prximo forma como so escritos os
modelos matemticos.

AMPL permite modelar os seguintes tipos de problemas:

Programao Linear (PL).


Programao No-Linear (PNL).
Programao Quadrtica com Restries Quadrticas (PCRC).
Programao Linear Inteira Mista (PLIM).
Programao No-Linear Inteira Mista (PNLIM).

AMPL e Solvers

AMPL pode ser entendido como uma interface entre o modelo matemtico de
um problema, dados que representam uma instncia ou caso particular de esse
problema e um software especializado em resolver problemas de otimizao
(solver).

Alguns dos solvers compatveis com AMPL so:

MINOS (PL, PNL).


CPLEX (PL, PCRC, PLIM).
GUROBI (PL, PLIM).
BONMIN (PNL, PNLIM).
KNITRO (PNL, PNLIM).
Sintaxe de AMPL

Componentes de um modelo em AMPL:

set: conjuntos usados para agrupar elementos do modelo (produtos, barras


ou circuitos em um sistema de potncia).
param: parmetros (constantes) que aparecem no modelo.
var: variveis que representam as decises consideradas no modelo.
funo objetivo (que deve ser maximizada o minimizada).
restries: expresses que representam condies que devem ser satisfeitas
no modelo.

A forma mais comum de usar AMPL por meio de um script, que um arquivo
de texto em que se escrevem as instrues ou comandos usados por AMPL.

Um script simples define o modelo aps o comando model; e logo os dados


so escritos aps o comando data;. possvel carregar o modelo e os dados
por meio de outros arquivos de texto. Assim:

reset;
model arquivo_modelo.mod;
data arquivo_datos.dat;
option solver cplex;
solve funcao_objetivo;

O smbolo # indica o inicio de um comentrio.


As variveis devem ser declaradas usando a palavra reservada var.
Todas as linhas de cdigo terminam com ponto e vrgula (;).
A funo objetivo comea com minimize ou maximize, seguido por um
nome e dois pontos (:). Aps isso se escreve a expresso propriamente.
As restries se declaram com subject to, seguido pelo nome, dois pontos
(:) e a expresso que representa a restrio.
Os nomes de variveis, parmetros e restries devem ser nicos e sem
espaos. Variveis e restries no podem ter o mesmo nome.
O parmetro custo pode ser considerado como um vetor com N posies,
sendo declarado como: param custo {1..N};
N
A somatria a
i 1
i representada como: sum{i in 1..N} a[i].
Um conjunto de restries do tipo:
N

a x
i 1
i ij bi j 1,,m

em que o ndice j define m restries, variando desde 1 at m,


representado usando esse ndice aps o nome da restrio e antes dos dois
pontos (:), assim:

subject to restricao_A {j in 1..m}:

sum{i in 1..M} a[i] x[i,j] <= b[i];

SETs (conjuntos) so componentes fundamentais de um modelo escrito em


AMPL. Os parmetros, variveis e restries so indexados usando sets,
permitindo que um modelo matemtico extenso seja escrito de forma concisa.

Alternativa 1 Alternativa 2 Alternativa 3 Alternativa 4


model; model; model; model;
set Produtos; set Produtos := 10 .. 16 by 2; param inicio; set Produtos;
param custo {Produtos}; param custo {Produtos}; param final > inicio; param custo {Produtos};
param intervalo;
set Produtos := inicio .. final
by intervalo;
param custo {Produtos};

data; data; data; data;


set Produtos := 10 12 14 16; param inicio := 10;
param final := 16;
param intervalo := 2;

param custo := param custo := param custo := param: Produtos: custo :=


10 3 10 3 10 3 10 3
12 2 12 2 12 2 12 2
14 5 14 5 14 5 14 5
16 8 16 8 16 8 16 8
; ; ; ;

You might also like