Julia para Otimização - Exemplo 6

« voltar para “Julia para Otimização”

Objetivo: escrever um modelo de otimização com restrições.

Considere o problema com restrições

\[\begin{align*} \min_x \, & (x_1-2)^2 + (x_2-1)^2\\ \text{s.a. } & x_1 + x_2 - 2\leq 0\\ &x_1^2-x_2\leq 0 \end{align*}\]

Este problema pode ser encontrado no livro de Karas e Ribeiro, ou no slide 2 deste link.

Siga as instruções do Exemplo 1 para criar o modelo, variáveis e função objetivo.

Antes de criar a estrutura MathOptNLPModel, você deve adicionar as restrições ao modelo P.

Adicionando a restrição linear:

julia> @constraint(P, x[1] + x[2] - 2 <= 0)

Adicionando a restrição não linear:

julia> @NLconstraint(P, x[1]^2 - x[2] <= 0)

Exibindo o modelo construído e transformando-o para NLPModels:

julia> println(P)
julia> nlp = MathOptNLPModel(P)

A estrutura nlp.meta contém propriedades do problema. Por exemplo, nlp.meta.nvar e nlp.meta.ifree contém o número de variáveis e o vetor de índices das variáveis livres, respectivamente. Consulte a página do pacote NLPModels para uma descrição de todas as opções.