manual lindo

2
Manual de LINDO Un escueto prontuario Miguel Mata erez  miguel @yalma. fime.ua nl.mx Versi´ on 0.2, 27 de diciembre de 2013 LINDO es un intuitivo programa para resolver proble- mas de optimizaci´ on matem´ atica, en particular de progra- maci´ on lineal (continuos, enteros y binarios). El nombre de LINDO es un acr´ onimo de  Line ar, INter acti ve, and Dis- crete Optimizer . El presente pretende ser un escueto man- ual de LINDO, por lo cual aborda lo m´ as general de este progra ma sin detenerse en detalles. El programa LINDO puede conseguirse desde su p´ agina ocial,  http://www.lindo.com/ donde se puede descargar una versi´ on de prueba limitada a 300 variables continuas, 30 variables discre tas (ente ras o binari as) y 150 restric- ciones. Ideal para estudiantes. Iniciemos con nuestro manual. Supongamos que tenemos el siguiente problema de programaci´ on lineal: ax  z = 3x 1  +  x 2 s.a:  x 1  + 3 x 2  ≤ 6 x 1  x 2  ≤ 4 x 1 , x 2  ≥ 0 En LINDO podemos escribirlo con el siguiente c´ odigo: MA X 3X1 + X2 S.T. X1 + 3X2 < 6 X1 - X2 < 4 Con base en este primer ejemplo, podemos mencionar las siguie ntes caracte r ´ ıstica s. 1.  Sensibilidad a mausculas:  LINDO es insensible a ma usculas y min´ us culas , por lo cual es cr ibir la * El pre sen te mat eria l es libre y pue de ser usado , dis trib uid o y comunicado bajo las ´ unicas condiciones de  atribuci´ on (dar cr´ edi to y citar apropiadamente) y no comercializaci´on (no lucrar u obtener benecio algun o de su uso). Cualquie r asunto relacio nado con este material, puede ponerse en contacto con el autor en la direcci´on de correo electr´ onico proporcionada. funci´ on objetivo de la forma  MAX 3X1 + X2  es com- pleta men te equiv alen te a  Max 3X1 + X2  o a  max 3x1 + x2 . En este manual, por claridad utilizaremos may´ uscula s en genera l. 2.  M´ ax o ın:  Respecto al sentido de la optimizaci´ on, la palabra clave con que inicia la funci´on objetivo es MAX  para maximizar y  MIN  para minimizar. 3.  Suj eto a:  La palabr a clav e  S.T.  en el segund o rengl´ on proviene de  subje ct to  (sujeto a, en ingl´ es) o de such that  (tal que , e n i ngl´ es). Tambi´ en p uede usa rse ST ,  SUBJE CT TO  o  SUCH THAT . 4.  Desigualdades:  Par a LINDO, las de sig ualdades siempre incluyen la igualdad, por lo cual escribir sim- plemente  <  en el c´ odigo es equivalente al operador matem´atico , pero si se preere, LINDO tambi´ en ad- mite  <= . Similarmente para  ≥. 5.  No negatividad:  Para LINDO, por defecto las vari- ables son siempre no negativas, por lo cual no ha sido neces ario especic ar en el odigo las restricciones l´ ogi- cas  x 1 , x 2  ≥ 0. Des pu´ es de lo asico, cuyo uso ha podido apreciarse en nuestro primer ejemplo, conviene mencionar algunas cosas ´ utiles adicionales. 6.  Nombres de las variables: Los nombres de las vari- ables deben comenzar con un car´ acter alfab´ etico (A a la Z) seguido de hasta siete caracteres m´ as que ex- cluyan los ımbolo s  ! ) + - = > < . Por ejemplo, X ,  Y12 ,  DEM.MX  o  VAR X  son v´ alidas mientras que 2INICIA ,  DEMASIADOLARGO ,  UN-GION  y  EUREKA!  no lo son. 7.  T ´ ıtulo:  A cada modelo puede a˜ nadirs e un t´ ıtulo me- diante la palabra clave  TITLE  al inicio del c´ odigo. 8.  Nombres en restricciones: En LINDO cada restric- ci´ on puede tener un nombre, el cual debe escribirse al inicio de la restricci´ on y concluir con un cierre de paent esi s ( ) ). 1

Upload: luis-miguel-chavez-huaccha

Post on 17-Oct-2015

13 views

Category:

Documents


0 download

TRANSCRIPT

  • 5/27/2018 Manual Lindo

    1/3

    Manual de LINDO

    Un escueto prontuario

    Miguel Mata Perez

    [email protected]

    Version 0.2, 27 de diciembre de 2013

    LINDO es un intuitivo programa para resolver proble-mas de optimizacion matematica, en particular de progra-macion lineal (continuos, enteros y binarios). El nombre deLINDO es un acronimo de Linear, INteractive, and Dis-crete Optimizer. El presente pretende ser un escueto man-ual de LINDO, por lo cual aborda lo m as general de este

    programa sin detenerse en detalles.

    El programa LINDO puede conseguirse desde su paginaoficial,http://www.lindo.com/donde se puede descargaruna version de prueba limitada a 300 variables continuas,30 variables discretas (enteras o binarias) y 150 restric-ciones. Ideal para estudiantes.

    Iniciemos con nuestro manual. Supongamos que tenemosel siguiente problema de programacion lineal:

    max z= 3x1+ x2

    s.a: x1+ 3x2 6

    x1 x2 4

    x1, x2 0

    En LINDO podemos escribirlo con el siguiente codigo:

    MAX 3X1 + X2

    S.T.

    X 1 + 3 X 2 < 6

    X 1 - X 2 < 4

    Con base en este primer ejemplo, podemos mencionar lassiguientes caractersticas.

    1. Sensibilidad a mayusculas: LINDO es insensiblea mayusculas y minusculas, por lo cual escribir la

    *El presente material es libre y puede ser usado, distribuido ycomunicado bajo las unicas condiciones de atribucion(dar credito ycitar apropiadamente) y no comercializacion(no lucrar u obtenerbeneficio alguno de su uso). Cualquier asunto relacionado con estematerial, puede ponerse en contacto con el autor en la direcci on decorreo electronico proporcionada.

    funcion objetivo de la forma MAX 3X1 + X2 es completamente equivalente a Max 3X1 + X2 o a m3x1 + x2 . En este manual, por claridad utilizaremmayusculas en general.

    2. Max o mn: Respecto al sentido de la optimizacio

    la palabra clave con que inicia la funcion objetivo MAX para maximizar y MIN para minimizar.

    3. Sujeto a: La palabra clave S.T. en el segunrenglon proviene de subject to (sujeto a, en ingles)desuch that(tal que, en ingles). Tambien puede usarST , SUBJECT TO o SUCH THAT .

    4. Desigualdades: Para LINDO, las desigualdadsiempre incluyen la igualdad, por lo cual escribir simplemente < en el codigo es equivalente al operadmatematico , pero si se prefiere, LINDO tambien amite < . Por ejemp

    X , Y12 , DEM.MX o VAR X son validas mientras q2INICIA , DEMASIADOLARGO , UN-GION y EUREKA! lo son.

    7. Ttulo: A cada modelo puede anadirse un ttulo mdiante la palabra clave TITLE al inicio del codigo.

    8. Nombres en restricciones:En LINDO cada restrcion puede tener un nombre, el cual debe escribiral inicio de la restriccion y concluir con un cierre parentesis ( ) ).

    1

    http://-/?-http://www.lindo.com/http://www.lindo.com/http://-/?-
  • 5/27/2018 Manual Lindo

    2/3

    Manual de LINDO M. Mata

    9. Fin:Aunque en el ejemplo presentado no fue incluido,en ocasiones sera necesario indicar a LINDO que elmodelo ha concluido mediante la palabra clave END alfinalizar las restricciones.

    10. Comentarios: El signo de cierre de exclamacion ( ! )es interpretado como el inicio de un comentario, el cualdebera ser ignorado por el optimizador. Dicho signopuede iniciar o no un renglon, por lo que solo el textoque se encuentre a la derecha sera considerado comocomentario.

    Con estas nuevas caractersticas, nuestro primer ejemplopuede quedar de la siguiente manera:

    TITLE Ejemplo 2 - Un problema de produccion

    MAX 3X1 + X2 ! Maximizar ganancias

    S.T.

    CAP) X1 + 3X2 < 6 ! Capacidad

    DEM1) X1 - X2 < 4 ! Demanda del producto 1

    ! Las variables deben ser no negativas

    END

    Observe que hemos agregado un ttulo descriptivo delmodelo y que hemos nombrado las restricciones CAP yDEM1 , ademas de que hemos colocado algunos comentar-ios.

    Ahora conviene comentar un par de puntos tecnicos adi-cionales:

    11. Operadores: LINDO solo reconoce cinco operadoresmatematicos: + - > < y = .

    12. Estructura de las restricciones: En cada restric-cion las variables deben aparecer a la izquierda deloperador de comparacion ( > = < ) y a la derecha solodebe aparecer una constante. Por ejemplo, la restric-cion X < Y sera rechazada por el optimizador, por loque debera reescribirse como X - Y < 0 (o tambienY - X > 0 ).

    Por ultimo, dado que para lindo las variables siempre sonno negativas, conviene saber como modificar este compor-

    tamiento por defecto. Las siguientes instrucciones debenescribirse despues del END .

    13. Variables sin restriccion de signo: La palabraclave FREE permite a la variable indicada tenercualquier valor entre y , es decir, FREE X1 esel equivalente de x1 R.

    14. Variables enteras: La palabra clave GIN indica alprograma que la variable debe tener un valor entero,es decir, GIN Y1 es el equivalente a y1 Z, y1 0.

    15. Variables binarias: La palabra clave INT indial programa que la variable elegida debe tener uvalor binario, es decir, INT X2 es el equivalentex2 {0, 1}.

    16. Cotas:Las palabras clave SLB y SUB indican que lvariables seleccionadas tienen una cota inferior o suprior, respectivamente, el cual tambien debe ser indicdo. Por ejemplo, SLB Y4 3 indica al programa quevariable Y4 no debe tomar un valor menor a 3. Similarmente, SUB Y5 12 indica que la variable Y5 debe tomar un valor mayor a 12.

    Los anteriores atributos pueden combinarse en una mma variable para emplearse como en el siguiente ejemplo

    mn z=x1+ x2+ 2x3

    s.a: x1+ 2x2+ 2x3 6 (R

    x1+ x3 9 (R

    x1 x2+ 2x3 (R

    2 x1 7

    x2 0 (variable no positiva)

    3 x1 5

    TITLE Ejemplo 3 - Variables con atributos

    MIN X1 + X2 + 2X3

    S.T.

    R1) X1 + 2X2 + 2X3 > 6

    R2) X1 + X3 > 9

    R3) X1 - X2 - 2X3 > 0 ! Despejando

    ! Las restricciones logicas en seguida

    END

    ! 2 < = X 1 < = 7

    SLB X1 2

    SUB X1 7

    ! X2 no positiva

    FREE X2

    SUB X2 0

    ! - 3 < = X 3 < = 5

    FREE X3 ! Para que pueda tomar valores negativos

    SLB X3 -3SUB X3 5

  • 5/27/2018 Manual Lindo

    3/3