Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
Pacotes de otimizao so ferramentas para modelagem e
resoluo de problema de Programao Linear, Programao
Linear Inteira, Programao No Linear ...
Dados
Solver Soluo
Modelo
Exemplos de Solvers:
IBM CPLEX
Mais conhecido, rpido, robusto, interfaces amigveis;
Suporte a: C, C++, C#, Java e Python;
Licena: Software proprietrio;
Academic Initiative: Temos acesso.
Gorubi
Suporte a: C, C++, Java, .NET e Python;
Linguagem de modelagem: AIMMS, AMPL, GAMS, e
MPL.
Licena: Software proprietrio
Exemplos de Solvers:
GNU Linear Programming Kit (GLPK)
Suporte a: C, C++, Java
Linguagem de modelagem: GAMS e GMPL
(Subconjunto de AMPL).
Licena: Software Livre.
Outros:
XPRESS, Mosek, CERES, etc.
Solvers: benchmark
Soluo e
AMPL(GMPL)
Relatrios
Instncia Soluo
Solver
AMPL(GMPL)
Modelos AMPL envolvem variveis, restries, objetivos,
parmetros e conjuntos.
Declarao de variveis:
Ex.: var x >= 0 <= 20;
var x {i in V, j in V: i != j} binary;
var quantity{Foods} >= 0;
GMPL e GLPK
Declarao das restries
Ex.: subject to {
<desigualdade 1>;
<desigualdade 2>;
}
ou
suject to cardinality: sum {e in E} x[e] = n-1;
subject to blue_limit: 0 <= PaintB <= 1000;
ou
s.t. minnutr{i in Nutrients}:
sum{j in Foods} amount[i,j]*quantity[j] >= minimum[i];
GMPL e GLPK
Declarao da funo objetivo
maximize (minimize) <nome>: <funo>
Ex.:
maximize obj: sum{j in V} cost[j]*x[j];
or
minimize obj: sum{j in V} cost[j]*x[j];
Exemplo: Problema da Dieta
Uma ma contm: 5 unidades do nutriente A - 5 unidades do nutriente B
10 unidades do nutriente C - Custa R$ 2,00
Arquivo: dieta.data
Exemplo: Problema da Dieta (modelo)
# Declare sets
set Foods; Executar.
set Nutrients;
glpsol --model dieta.mod \
# Declare variables --data dieta.data \
var quantity{Foods} >= 0;
--output dieta.sol
# Declare parameters
param cost{Foods} >= 0;
param amount{Nutrients, Foods} >= 0;
param minimum{Nutrients} >= 0;
# Objective function
minimize obj: sum{j in Foods} cost[j]*quantity[j];
# Declare constraints
s.t. minnutr{i in Nutrients}:
sum{j in Foods} amount[i,j]*quantity[j] >= minimum[i];
end;
Arquivo: dieta.mod
Glpk e C/C++
Maximize obj: x1 + 2 x2 + 3 x3 + x4
Subject To
c1: - x1 + x2 + x3 + 10 x4 <= 20
c2: x1 - 3 x2 + x3 <= 30
c3: x2 - 3.5 x4 = 0
Bounds
0 <= x1 <= 40
2 <= x4 <= 3
General
x2, x3
End
Glpk e C/C++