JuMP

JuMP

JuMP é a biblioteca que usamos para resolver os problemas de otimização que escrevemos com a ajuda de um computador, JuMP não é a única biblioteca que faz isso, e nem Julia é a única linguagem com esse tipo de biblioteca.

Existem inclusve linguagens e softwares criados unica e exclusivamente para isso:

A melhor forma de descobrir as ferramentas oferecidas pela biblioteca é pela documentação

Basic Example

Formulation

Usaremos o exemplo da produção de berços e armários para mostrar as ferramentas básicas do JuMP, o modelo pode ser formulado da seguinte forma:

\[\begin{align} % \max_{x \geq 0} & 4x_1 + 3x_2\\ % \mbox{s.a.: } & \nonumber \\ & 2x_1 + x_2 \leq 4 \\ & x_1 + 2x_2 \leq 4 \\ % \end{align}\]

Criando e resolvendo o modelo

Para escrever o problema no JuMP deveremos usar as macros (funções que tem @ na frente) para definir variáveis (@variables), restrições (@constraint) e a função objetivo (@objective)

using JuMP, GLPK

model = Model(with_optimizer(GLPK.Optimizer))

@variable(model, x[i = 1:2] >= 0)

@constraint(model, armarios, 2*x[1] + x[2] <= 4)
@constraint(model, bercos, x[1] + 2*x[2] <= 4)

@objective(model, Max, 4*x[1] + 3*x[2])

JuMP.optimize!(model) 

JuMP.value.(x) 
JuMP.objective_value(model)