Vous êtes sur la page 1sur 2

LINGO - Guia rpido de utilizao

LINGO um programa da Lindo Systems Inc. http://www.lindo.com para resoluo de problemas de


programao matemtica linear (LP), no-linear (NLP), inteiro misto linear (MILP) e programao inteiro
misto no-linear (MINLP).

Exemplo de utilizao:
min Z = 1,5.Y1 + 2,5.Y2 + 0,5.Y3 + X12 + X22
sujeito a (X1 2,3)2 X2 0
X1 X2 + 4,1.(1 Y2) 0
X1 + X2 + 3.Y3 1,3.X3 = 0
ln(X1) X3 0
X1 5
X2 5
X1 - 10.Y1 0
Y1 + Y2 1
com X1, X2, X3 0 reais
Y1, Y2 = {0, 1} binrias
Y3 0 inteira

Formulao no LINGO:

! Problema de otimizao ;

MODEL:
[Z] MIN = 1.5*Y1 + 2.5*Y2 + 0.5*Y3 + X1^2 + X2^2 ;

[r1] (X1 -2.4)^2 -X2 <= 0 ;


[r2] X1 -X2 +4.1*(1 -Y2) <= 0 ;
[r3] X1 +X2 +3*Y3 -1.3*X3 = 0 ;
[r4] @LOG(X1) -X3 <= 0 ;
[r5] X1 <= 5 ; ! limite superior ;
[r6] X2 <= 5 ; ! limite superior ;
[r7] X1 -10*Y1 <= 0 ; ! Big-M ;
[r8] Y1 +Y2 >= 1 ; ! restrio lgica ;

@BIN(Y1);
@BIN(Y2);
@GIN(Y3);

INIT:
X1 = 1;
X2 = 2;
ENDINIT

END

Jos M. Pinto, Jorge A. W. Gut, EPUSP 2016 1


- A seo principal do arquivo a de modelo, iniciada com MODEL e finalizada em END.
- Qualquer nome pode ser atribudo s variveis na formulao do problema.
- Comentrios comeam com ponto de exclamao e terminam em ponto-e-vrgula.
- Pode-se dar nomes para as restries e para a funo objetivo, entre colchetes no incio da linha.
- Na linha da funo objetivo use MIN para minimizar e MAX para maximizar.
- Uma linha s finalizada efetivamente aps o ponto-e-vrgula. Para uma equao longa, pode-se dividi-
la por duas ou mais linhas, desde que ela seja finalizada com um ponto-e-vrgula na ltima linha.
- Todas as variveis so assumidas como contnuas e no-negativas, a no ser quando especificadas como:
@BIN( ) = varivel inteira binria do tipo 01 (binary).
@GIN( ) = varivel inteira no-negativa (general integer).
@FREE( ) = varivel contnua irrestrita.
- Para definir chutes iniciais, usar o comando opcional INIT, como no exemplo.
- LINGO possui funes matemticas, financeiras e de probabilidade inclusas, como por exemplo:
@ABS( ): valor absoluto.
@COS( ), @SIN( ), @TAN( ): coseno, seno e tangente.
@LOG( ), @EXP( ): logaritmo natural e exponencial.
@SMIN( ), @SMAX( ): mnimo e mximo de uma lista de variveis.
- Para definir limites das vaiveis, pode-se usar o comando @BND( ) ao invs de criar restries.
Exemplo: 1X5 @BND(1,X,5) ;
- Resultado do LINGO:
Local optimal solution found.
Objective value: 7.236568
Model Class: MINLP

Variable Value Reduced Cost


Y1 1.000000 1.500000
Y2 1.000000 -1.523429
Y3 0.000000 0.5000000
X1 1.272118 0.000000
X2 1.272118 0.000000
X3 1.957105 0.000000

Row Slack or Surplus Dual Price


Z 7.236568 -1.000000
R1 0.000000 1.562912
R2 0.000000 0.9813242
R3 0.000000 0.000000
R4 1.716421 0.000000
R5 3.727882 0.000000
R6 3.727882 0.000000
R7 8.727882 0.000000
R8 1.000000 0.000000
- Na coluna Slack or Surplus encontram-se as folgas das restries escritas como g(x)0.
- Na coluna Dual Price encontram-se os multiplicadores de Lagrange e de Kuhn-Tucker para equaes
escritas na formato h(x)=0 ou g(x)0 e que tenham apenas variveis contnuas.

Jos M. Pinto, Jorge A. W. Gut, EPUSP 2016 2

Vous aimerez peut-être aussi