Está en la página 1de 2

Manual de LINDO

Un escueto prontuario

Miguel Mata Prez


miguel.matapr@uanl.edu.mx
Versin 0.3, 7 de agosto de 2015

LINDO es un intuitivo programa para resolver proble- x2 . En este manual, por claridad, utilizaremos mays-
mas de optimizacin matemtica, en particular de progra- culas en general.
macin lineal (continuos, enteros y binarios). El nombre de
LINDO es un acrnimo de Linear, INteractive, and Discre- 2. Mx o mn: Respecto al sentido de la optimizacin,
te Optimizer. El presente pretende ser un escueto manual la palabra clave con que inicia la funcin objetivo es
de LINDO, por lo cual aborda lo ms general de este pro- MAX para maximizar y MIN para minimizar.
grama sin detenerse en detalles. 3. Sujeto a: La palabra clave S.T. en el segundo
El programa LINDO puede conseguirse desde su pgina rengln proviene de subject to (sujeto a, en ingls) o
oficial, http://www.lindo.com/ donde se puede descargar de such that (tal que, en ingls). Tambin puede usarse
una versin de prueba limitada a 300 variables continuas, ST , SUBJECT TO o SUCH THAT .
30 variables discretas (enteras o binarias) y 150 restriccio- 4. Desigualdades: Para LINDO, las desigualdades
nes. Ideal para estudiantes. siempre incluyen la igualdad, por lo cual escribir sim-
plemente < en el cdigo es equivalente al operador
Iniciemos con nuestro manual. Supongamos que tenemos
matemtico , pero si se prefiere, LINDO tambin ad-
el siguiente problema de programacin lineal:
mite <= . Similarmente para .
max z = 3x1 + x2
5. No negatividad: Para LINDO, por defecto las va-
s.a: x1 + 3x2 6
riables son siempre no negativas, por lo cual no ha
x1 x2 4 sido necesario especificar en el cdigo las restricciones
x1 , x2 0 lgicas x1 , x2 0.
En LINDO podemos escribirlo con el siguiente cdigo: Despus de lo bsico, cuyo uso ha podido apreciarse en
nuestro primer ejemplo, conviene mencionar algunas cosas
MAX 3X1 + X2 tiles adicionales.
S.T.
X1 + 3X2 < 6
6. Nombres de las variables: Los nombres de las varia-
bles deben comenzar con un carcter alfabtico (A a la
X1 - X2 < 4
Z) seguido de hasta siete caracteres ms que excluyan
los smbolos ! ) + - = > < . Por ejemplo, X , Y12 ,
Con base en este primer ejemplo, podemos mencionar las DEM.MX o VAR_X son vlidas mientras que 2INICIA ,
siguientes caractersticas. DEMASIADOLARGO , UN-GION y EUREKA! no lo son.

1. Insensibilidad a maysculas: LINDO es insensible 7. Ttulo: A cada modelo puede aadirse un ttulo me-
a maysculas y minsculas, por lo cual escribir la fun- diante la palabra clave TITLE al inicio del cdigo.
cin objetivo de la forma MAX 3X1 + X2 es comple-
tamente equivalente a Max 3X1 + X2 o a max 3x1 + 8. Nombres en restricciones: En LINDO cada restric-
cin puede tener un nombre, el cual debe escribirse al
* El presente material es libre y puede ser usado, distribuido y
inicio de la restriccin y concluir con un cierre de pa-
comunicado bajo las nicas condiciones de atribucin (dar crdito y
citar apropiadamente) y no comercializacin (no lucrar u obtener rntesis ( ) ).
beneficio alguno de su uso). Cualquier asunto relacionado con este
material, puede ponerse en contacto con el autor en la direccin de 9. Fin: Aunque en el ejemplo presentado no fue incluido,
correo electrnico proporcionada. en ocasiones ser necesario indicar a LINDO que el

1
Manual de LINDO M. Mata 2

modelo ha concluido mediante la palabra clave END al 15. Variables binarias: La palabra clave INT indica
finalizar las restricciones. al programa que la variable elegida debe tener un
valor binario, es decir, INT X2 es el equivalente a
10. Comentarios: El signo de cierre de exclamacin ( ! ) x2 {0, 1}.
es interpretado como el inicio de un comentario, el cual
deber ser ignorado por el optimizador. Dicho signo 16. Cotas: Las palabras clave SLB y SUB indican que las
puede iniciar o no un rengln, por lo que slo el texto variables seleccionadas tienen una cota inferior o su-
que se encuentre a la derecha ser considerado como perior, respectivamente, el cual tambin debe ser indi-
comentario. cado. Por ejemplo, SLB Y4 3 indica al programa que
la variable Y4 no debe tomar un valor menor a 3. Si-
Con estas nuevas caractersticas, nuestro primer ejemplo milarmente, SUB Y5 12 indica que la variable Y5 no
puede quedar de la siguiente manera: debe tomar un valor mayor a 12.

Los anteriores atributos pueden combinarse en una mis-


TITLE Ejemplo 2 - Un problema de produccion ma variable para emplearse como en el siguiente ejemplo:
MAX 3X1 + X2 ! Maximizar ganancias
mn z = x1 + x2 + 2x3
S.T.
CAP) X1 + 3X2 < 6 ! Capacidad s.a: x1 + 2x2 + 2x3 6 (R1)
DEM1) X1 - X2 < 4 ! Demanda del producto 1 x1 + x3 9 (R2)
! Las variables deben ser no negativas
x1 x2 + 2x3 (R3)
END
2 x1 7
x2 0 (variable no positiva)
Observe que hemos agregado un ttulo descriptivo del
3 x3 5
modelo y que hemos nombrado las restricciones CAP y
DEM1 , adems de que hemos colocado algunos comentarios.
TITLE Ejemplo 3 - Variables con atributos
Ahora conviene comentar un par de puntos tcnicos adi-
cionales: MIN X1 + X2 + 2X3
S.T.
11. Operadores: LINDO slo reconoce cinco operadores R1) X1 + 2X2 + 2X3 > 6
matemticos: + , - , = , > y < . R2) X1 + X3 > 9
R3) X1 - X2 - 2X3 > 0 ! Despejando
12. Estructura de las restricciones: En cada restric- ! Las restricciones logicas en seguida
cin las variables deben aparecer a la izquierda del
END
operador de comparacin ( > = < ) y a la derecha slo
! 2 <= X1 <= 7
debe aparecer una constante. Por ejemplo, la restric-
cin X < Y ser rechazada por el optimizador, por lo SLB X1 2
que debera reescribirse como X - Y < 0 (o tambin SUB X1 7
Y - X > 0 ). ! X2 no positiva
FREE X2
Por ltimo, dado que para lindo las variables siempre son SUB X2 0
no negativas, conviene saber cmo modificar este compor- ! -3 <= X3 <= 5
tamiento por defecto. Las siguientes instrucciones deben FREE X3 ! Para que pueda tomar valores negativos
escribirse despus del END . SLB X3 -3
SUB X3 5
13. Variables sin restriccin de signo: La palabra cla-
ve FREE permite a la variable indicada tener cualquier
valor entre y , es decir, FREE X1 es el equiva-
lente de x1 R.

14. Variables enteras: La palabra clave GIN indica al


programa que la variable debe tener un valor entero
(no negativo), es decir, GIN Y1 es el equivalente a
y1 Z, y1 0.

También podría gustarte