Está en la página 1de 7

INTRODUCCIÓN

La Programación Lineal es tal vez la herramienta más famosa y utilizada de la Investigación de


Operaciones. A ella recurren los matem áticos, ingenieros de diferentes disciplinas, economistas,
administradores de empresas, estadísticos, veterinarios y en general cualquier profesional que
esté involucrado en la toma de decisiones con recursos escasos. Es por ello que en los planes
curriculares de diversos programas de formación a nivel de pregrado, especialización, maestría e
incluso doctorado, la incluyen directamente como asignatura o como tema en cursos de
investigación de operaciones.

La programación lineal es una técnica matemática que busca resolver problemas de


planificación. Principalmente ayuda a tomar decisiones de asignación de recursos (es decir
problemas de maximización o minimización). Optimización lineal o programación lineal (LP) es
un método matemático para determinar la forma de lograr el mejor resultado en un modelo con
varios requisitos (restricciones) que tienen una relación lineal.

La Programación Lineal es un procedimiento o algoritmo matemático mediante el cual se


resuelve un problema indeterminado, formulado a través de ecuaciones lineales, optimizando la
función objetivo, también lineal. Consiste en optimizar (minimizar o maximizar) una función
lineal, denominada función objetivo, de tal forma que las variables de dicha función estén
sujetas a una serie de restricciones que expresamos mediante un sistema de inecuaciones
lineales. Requerimientos de un problema de programación lineal. Primera propiedad: Los
problemas buscan maximizar o minimizar alguna cantidad, por lo general la utilidad o costo. Se
conoce esta propiedad como la función objetivo de un problema de PL. Segunda propiedad: Las
restricciones limitan el grado al cual el objetivo puede ser alcanzado. Tercera propiedad: Debe
haber alternativas disponibles para alcanzar el objetivo. Cuarta propiedad: Las relaciones
matemáticas (función objetivo y las restricciones), expresadas en ecuaciones y/o desigualdades,
son lineales. Supuestos básicos de programación lineal. Certeza: se conoce con certeza los
números en el objetivo y restricciones y no cambian durante el periodo que se está estudiando.
Proporcionalidad: Se supone existe proporcionalidad entre el objetivo y las restricciones. Esto
significa que si la producción de 1 unidad de un producto utiliza 3 horas de un recurso particular
escaso, entonces producir 10 de este producto utiliza 30 horas del recurso. Aditividad: El total de
todas las actividades es igual a la suma de las actividades individuales. Divisibilidad: Las
soluciones no tienen que ser números (enteros). En su lugar, son divisibles y pueden tomar
cualquier valor fraccionario. Este supuesto depende del tipo de problema en estudio. Si este no
admite, valores fraccionarios, estamos ante un problema de programación entera. No
negatividad: Se supone que todas las respuestas o variables son no negativas. No se puede
producir un número negativo de sillas.

Formulación de problemas de programación lineal. La formulación de un programa lineal implica


desarrollar un modelo matemático para representar al problema. Por lo tanto, es necesario
entender a cabalidad el problema a resolver. Una vez que éste se entiende, los pasos para
formular un programa lineal son los siguientes: 1. Entender por completo el problema que se
enfrenta. 2. Identificar los objetivos y las restricciones (de ser posible resumir los datos del
problema). 3. Definir las variables de decisión. 4. Utilizar las variables de decisión para escribir
las expresiones matemáticas de la función objetivo y de las restricciones. Pero la formulación del
problema es sólo el primer paso, luego hay que resolverlo. Existen varios formas para obtener la
solución al problema. Desde, métodos gráficos hasta la utilización de programas de
computadora. La solución gráfica, es la forma más fácil de resolver problemas de programación
lineal; siempre y cuando sólo se consideran dos variables de decisión en el problema. Además,
permite observar de manera visual y resumida lo que la técnica de la programación lineal busca
y por lo tanto es de gran ayuda para comprender como funcionan algunos de los métodos mas
complejos. Solución gráfica de un problema de programación lineal. Gráficamente, se puede
obtener la solución mediante al menos dos métodos: el de los puntos de equina y el de lineas de
isoutilidad o isocosto. Ambos son parecidos y comparten gran parte del procedimiento; difieren
únicamente en los pasos finales. A continuación, se describen estos dos métodos. Una vez que
se ha analizado, comprendido y formulado el problema; es decir cuando ya se tienen la función
objetivo y las restricciones expresadas en términos matemáticos (es decir cuando ya se tiene el
problema modelado), se procede a identificar un conjunto o región de soluciones factibles. Esto
se logra trazando cada una de las restricciones del problema en una gráfica. Como se recordará,
de acuerdo con el álgebra elemental una ecuación lineal con dos variables es una línea recta. La
forma más fácil de trazarla es encontrar dos puntos cualesquiera que satisfagan la ecuación; para
acto seguido trazar una línea recta a través de ellos (es decir unir estos dos puntos con una línea
recta). Por regla general (y por conveniencia ya que probablemente estos puntos sean esquinas
de la región factible) se encuentran los puntos en los cuales las líneas cortan los ejes horizontal y
vertical (normalmente llamados interceptos en X y en Y). Para esto decimos que una variable
vale cero y encontramos el valor de la otra variable despejando la ecuación de la restricción;
luego repetimos el proceso igualando a cero la otra variable. Hacemos esto mismo para las otras
restricciones. En algunas ocasiones las restricciones sólo afectan una variable, en estos casos la
recta será una paralela al eje vertical o paralela al eje horizontal, dependiendo a la variable que
afecten. La recta será paralela al eje de la variable que no aparece en dicha restricción. Hasta
ahora sólo hemos trazado líneas rectas, es decir sólo hemos graficado ecuaciones lineales; pero
las restricciones normalmente se expresan como desigualdades. Por lo tanto nos

resta definir cuál de las dos regiones (de nuestra gráfica) en las que parten cada una de la
restricciones hacen verdadera la desigualdad. Basta con observar el signo de la desigualdad, si
las variables están a la izquierda de < o de ≤, entonces la parte que hace verdadera la
desigualdad está a la izquierda/abajo de la recta que representa la restricción. Si el signo es > o
≥ (y las variables siempre están a la izquierda), la región solución esta a la derecha/arriba de la
recta que representa la restricción. Otra forma de saber cual de las dos partes en que la
restricción divide la gráfica es la que hace verdadera la desigualdad, basta con probar cualquier
punto en el plano y observar si en esa parte de la gráfica se cumple la desigualdad, si es así todos
los puntos de esa parte también satisfacen la restricción; sino la zona que nos interesa es la del
otro extremo de la gráfica. Cuando hemos terminado de graficar las desigualdades, el área que
satisface todas las restricciones se conoce como región factible o región solución. Todos los
puntos dentro de esta región son las soluciones alternativas a las que hace referencia la tercera
propiedad; es decir cualquier combinación de las variables de decisión que ubiquen un punto
dentro de esta región factible son una posible solución para el problema. Nota: Sin importar la
forma que utilizamos para determinar el área de la desigualdad que nos interesa, sugiero
colorear dicha región y repetir esto para todas las restricciones utilizando un color diferente para
cada restricción. Ya que al terminar de colorear, la región factible o solución, sería el área que
contendría todos los colores. Sin embargo, todavía no sabemos cual es la respuesta o respuestas
que maximizan o minimizan nuestro problema. Para ello, como se explico anteriormente, existen
dos técnicas o métodos: mediante curvas de isoutilidad (o isocosto en el caso de minimización) y
el método de los puntos de esquina (abreviado a método de las esquinas). El método de
isoutilidad se basa en que las pendientes de curvas paralelas son iguales; se parte igualando la
función objetivo a un numero cualquiera (normalmente bajo, pero mayor que cero); luego se
gráfica esta función objetivo. Es decir, por ejemplo si nuestra función objetivo es: Max. Z = 2x +
3y Podemos hacer que el valor de Z sea 50 (en realidad el valor a utilizar no importa); puede
incluso ocurrir que la gráfica de la función objetivo resultante no pase o no toque a la región
factible. Sin embargo, la solución óptima será una función objetivo cuya gráfica sea paralela a
esta y que además tocara a la región solución en un punto extremo a la derecha/arriba en el
caso de la maximización y a la izquierda/abajo en el caso de la minimización. Volviendo al
ejemplo, se procede a graficar esta función objetivo de 50 = 2x + 3y (recuerden que el método
más fácil para trazar un recta es mediante los interceptos); para encontrar la solución óptima
trazamos rectas paralelas a esta función objetivo buscando el punto más a la derecha/arriba que
toque a una de estas rectas paralelas si el problema es de maximización y el punto más a la
izquierda si es de minimización. Alternativamente se puede solo desplazar la regla, siempre en
sentido paralelo a la gráfica de esta función objetivo y también buscando la derecha/arriba de la
región factible si el problema es de maximización y la izquierda/abajo si es de minimización. La
solución óptima corresponde al punto mas extremo de la región factible y solo resta encontrar
los valores de las variables de decisión y de la función objetivo en ese

punto. Esto se puede inferir de la gráfica (si esta esta legible y en una buena escala) o se pueden
buscar mediante procedimientos matemáticos. Encontrar el valor de la función objetivo, en este
contexto, es como solucionar sistemas de ecuaciones lineales en dos variables (para obtener los
valores de las variables de decisión) y luego sustituir los valores encontrados en la función
objetivo para encontrar el valor del punto máximo/mínimo. El método de las esquinas, consiste
en encontrar la utilidad en cada esquina, es decir el valor de la función objetivo en cada esquina;
la teoría de la programación lineal dice que la solución se encontrará en una esquina. La que
genere un mayor valor en la función objetivo, para el caso de la maximización o menor valor en
el caso de la minimización. Para encontrar los valores de Z necesitamos conocer los valores de
las variables de decisión, por lo tanto es posible que se necesite igualar las restricciones para
encontrar los valores de las variables que nos brindaran el valor de Z en esa esquina. Algunas
veces esto implica utilizar alguna técnica para resolver sistemas de ecuaciones lineales en dos
variables. En clase vimos el de reducción y el de sustitución. En la sección de enlaces
encontrarán un par de sitios que explican con mucho detalle estos y otros métodos de
resolución de ecuaciones lineales.

Pasos para resolver problemas de PL utilizando el método gráfico. 1. Analizar el problema hasta
entenderlo. 2. Ordenar y resumir los datos numéricos. 3. Elaborar la tablita resumen. 4. Encontrar
los interceptos de las restricciones para graficarlas. 5. Determinar el área solución observando los
signos de cada una de las restricciones. 6. El área factible o solución, es la parte de nuestra
gráfica que satisface todas las restricciones. 7. Mediante el método de las esquinas buscar la
solución óptima a nuestro problema. Si el problema es de maximización la solución óptima será
la esquina que nos dé el mayor valor de Z. En el caso de minimización, será la esquina que nos dé
el menor valor de Z. 8. Para encontrar los valores de Z necesitamos conocer los valores de las
variables de decisión, por lo tanto es posible que se necesite igualar las restricciones para
encontrar los valores de las variables que nos brindaran el valor de Z en esa esquina.

Sem´antica de los programas l´ogicos

La sem´antica da significado a los programas y nos permite describir


formalmenteloquecalculan.Haytresmanerasbienconocidasdedarsignificado o sem´antica a
los programas l´ogicos: la sem´antica declarativa, la sem´antica operacional y la sem´antica
denotacional (comu´nmente llamada sem´antica de punto fijo). En esta secci´on
presentamos algunas nociones y teoremas b´asicos relacionados a la sem´antica de los
programas l´ogicos definidos (para mayor detalle, ver [2, 1, 4, 5]). Donde sea posible
seguiremos la terminolog´ıa de Lloyd [4]. Definici´on 2 Sea L un lenguaje de primer orden. 1.
El universo de Herbrand de L, denotado HL, es el conjunto de todos los t´erminos de base
que pueden formarse a partir de las constantes y los s´ımbolos de funci´on que ocurren en L.
Ejemplo Sea L={0,suc,nat} donde 0 es una constante, suc es un s´ımbolo de funci´on de
aridad 1 y nat es un predicado de aridad 1. En los pr´oximos tres ejemplos nos referiremos a
este lenguaje. El universo de Herbrand de L es: HL ={0,suc(0),suc(suc(0),...,suci(0),...} 2. La
base de Herbrand de L, denotada BL, es el conjunto de todos los ´atomos que pueden
formarse a partir de los predicados que ocurren en L y los t´erminos en HL.

Ejemplo La base de Herbrand de L es: BL ={nat(0),nat(suc(0)),...,nat(suci(0)),...}. 3. Una


estructura A para L es una estructura de Herbrand si su dominio es HL y, para cada s´ımbolo
de funci´on f de L y elementos t1 ...,tn de A, fA(t1,...,tn) = f(t1,...,tn). Para cada constante c en
L, cA = c. Ejemplo Una estructura de Herbrand para L es: A = hHL,0A,sucA,BLi, donde 0A =
0 y sucA(t) = suc(t) para todo t ∈HL. 4. Si Γ un conjunto de sentencias, un modelo de
Herbrand de Γ es una estructura de Herbrand que es un modelo para Γ. Debido a que en los
modelos de Herbrand la interpretaci´on de las constantes y los s´ımbolos de funci´on son
fijas, es posible identificar un modelo de Herbrand con un subconjunto de la base de
Herbrand.

Consideremos un programa l´ogico P. P induce un lenguaje de primer orden donde las


constantes, los s´ımbolos de funci´on y los predicados son, respectivamente, las constantes,
los s´ımbolos de funci´on y los predicados que ocurren en P. Entonces, podemos hablar del
universo de Herbrand de P, denotado HP. Asimismo podemos hablar de la base de Herbrand
de P, denotada BP. Ejemplo Sea P el siguiente programa: p(a)← p(b)← q(a)←
r(f(x))←p(x),q(x) El universo y la base de Herbrand de P son, respectivamente: HP
={a,b,,f(a),f(b),f(f(a)),f(f(b)),f(f(f(a))),...}

BP ={p(a),p(b),q(a),q(b),p(f(a)),p(f(b)),q(f(a)),p(f(b)),p(f(f(a))),
p(f(f(b))),q(f(f(a)),q(f(f(b))...}

Sem´antica declarativa. Desde el punto de vista l´ogico, un programa P puede verse como
una teor´ıa l´ogica formada por las cl´ausulas del programa. Los modelos de Herbrand de
esta teor´ıa son considerados los modelos del programa P. Por ejemplo, la base de Herbrand
del programa P, BP, es un modelo de P.

Entre las estructuras de Herbrand que son modelos de P, se destaca el que contiene
exactamente los ´atomos que son consecuencia l´ogica de P. Este modelo corresponde al
significado “entendido” o “est´andar” del programa y es llamado el modelo m´ınimo de P, MP.
El modelo MP se define como sigue: MP ={A ∈ BP : P |= A} Ejemplo El modelo m´ınimo del
programa P es: MP ={p(a),p(b),q(a),r(f(a))} Sem´antica operacional. Est´a definida por el
proceso de inferencia utilizado para probar que un objetivo puede ser derivado del
programa. En la pr´oxima secci´on estudiaremos en detalle este punto.

Sem´antica denotacional. Esta sem´antica asigna significado a un programa asoci´andole un


funci´on sobre el dominio calculado por el programa. El significado viene dado entonces por
el punto fijo de la funci´on, si existe. En este documento no entramos en detalle de este tema
(remitimos al lector interesado a [7]).

Representación clausada del conocimiento

La representación del conocimiento y el razonamiento es un área de la inteligencia artificial cuyo


objetivo fundamental es representar el conocimiento de una manera que facilite la inferencia
(sacar conclusiones) a partir de dicho conocimiento. Analiza cómo pensar formalmente - cómo
usar un sistema de símbolos para representar un dominio del discurso (aquello de lo que se
puede hablar), junto con funciones que permitan inferir (realizar un razonamiento formal) sobre
los objetos. Generalmente, se usa algún tipo de lógica para proveer una semántica formal de
como las funciones de razonamiento se aplican a los símbolos del dominio del discurso, además
de proveer operadores como cuantificadores, operadores modales, etc. Esto, junto a una teoría
de interpretación, dan significado a las frases en la lógica.

Cuando diseñamos una representación del conocimiento (y un sistema de representación del


conocimiento para interpretar frases en la lógica para poder derivar inferencias de ellas)
tenemos que hacer elecciones a lo largo de un número de ámbitos de diseño. La decisión más
importante que hay que tomar es la expresividad de la representación del conocimiento. Cuanto
más expresiva es, decir algo es más fácil y más compacto. Sin embargo, cuanto más expresivo es
un lenguaje, más difícil es derivar inferencias automáticamente de él. Un ejemplo de una
representación del conocimiento poco expresiva es la lógica proposicional. Un ejemplo de una
representación del conocimiento muy expresiva es la lógica autoepistémica. Las
representaciones del conocimiento poco expresivas pueden ser tanto completas como
consistentes (formalmente menos expresivas que la teoría de conjuntos). Las representaciones
del conocimiento más expresivas pueden ser ni completas ni consistentes.

El principal problema es encontrar una representación del conocimiento y un sistema de


razonamiento que la soporte que pueda hacer las inferencias que necesite tu aplicación dentro
de los límites de recursos del problema a tratar. Los desarrollos recientes en la representación
del conocimiento han sido liderados por la web semántica, y han incorporado el desarrollo de
lenguajes y estándares de representación del conocimiento basados en XML, que incluyen
Resource Description Framework (RDF), RDF Schema, DARPA Agent Markup Language (DAML), y
Web Ontology Language (OWL).

Consulta de una base de datos de clausulas.

Bibliografia y referencias

Libro utilizado: Métodos cuantitativos para los negocios. Novena Edición. Por: Barry Render,
Ralph M. Stair, Jr. y Michael E. Hanna.

Referencias

[1] K. R. Apt. Logic programming. In J.van Leeuwen., editor, Handbook of Theoretical


Computer Science, pages 493–574. Elsevier Science Publishers B.V., 1990. [2] K. R. Apt and
M.H. van Emden. Contributions to the theory of logic programming. The Journal of ACM,
29(3):841–862, 1982. [3] R.A. Kowalski. Predicate logic as a programming language.
Information Processing Letters 74, pages 569–574, 1974. [4] J. W. Lloyd. Foundations of
Logic Programming. Springer-Verlag, 2nd edition, 1987. [5] Anil Nerode and Shore Richard
A. Logic for applications. SpringerVerlag, 1993. [6] L. Sterling and EG. Shapiro. The art of
Prolog. The MIT Press, 1994. [7] van Emden, M.H. and R.A. Kowalski. The semantics of
predicate logic as a programming language. Journal of ACM, 23(4):733–742, 1976

También podría gustarte