Controladores Lógicos Programables Usos y Ventajas
programacion Lineal y Metodo simplex alvaro espinoza
1. Tema: Programación Lineal y Método Simplex
aplicado a la Informática.
Álvaro Andrey Espinoza Mena
Profesor: Agustín R. Monge Piedra
UNIVERSIDAD TÉCNICA NACIONAL
INGENIERÍA EN TECNOLOGÍAS DE
INFORMACIÓN
ÁLGEBRA LINEAL
2. PROGRAMACIÓN LINEAL Y MÉTODO SIMPLEX
• Historia de la Programación Lineal y sus
principales elementos.
• Modelo de programación lineal general
• Métodos de solución del modelo de programación
lineal
• Método Simplex
3.
4. HISTORIA DE LA PROGRAMACIÓN LINEAL
• A pesar de que la programación lineal se empezó a estudiar desde finales
del S.XIX no fue hasta mediados del presente siglo en que tuvo auge
como técnica matemática aplicable a los problemas de la empresa.
• El Dr. G. Damtzing desarrolló el método simplex y con ello hizo posible la
solución de grandes problemas modelados con programación lineal que
solo quedaban en la situación de estudios. Paralelamente a la invención
de este método a partir de mediados del siglo se desarrolló la
computación digital y se pudo tener resultados óptimos a los problemas
estudiados que se quedaron como modelos.
• La programación lineal es actualmente la técnica matemática utilizada
más actualmente gracias a que el algoritmo simplex es muy eficiente y al
desarrollo de la computación.
6. PROGRAMACIÓN LINEAL
• Lo que se busca con la aplicación de la
programación lineal es resolver problemas
comunes y a la vez muy variados de la empresa
en donde en general se tienen necesidades por
satisfacer con cierto número de recursos
limitados o escasos y con el objetivo de lograrlo
en forma óptima. Esto significa la búsqueda de
un valor máximo cuando se trata de beneficios; o
bien la búsqueda de un mínimo cuando se trata
de esfuerzos a desarrollar.
7. PROGRAMACIÓN LINEAL Y SUS PRINCIPALES
ELEMENTOS
• Un modelo de programación lineal es un conjunto de
expresiones matemáticas las cuales deben cumplir la
característica de linealidad que puede cumplirse siempre y
cuando las variables utilizadas sean de primer grado.
Además un modelo de P.L debe tener las propiedades de:
• Proporcionalidad
• Aditividad (adición)
• Divisibilidad
• Certidumbre (certeza)
8. PROGRAMACIÓN LINEAL Y SUS PRINCIPALES
ELEMENTOS
• Proporcionalidad: En el modelo de programación lineal los pagos
deben ser proporcionales.
El modelo de programación lineal es estático, plantea una situación
del momento.
x = progreso de la actividad
• Aditividad: Siempre los pagos se suman en requerimientos, costos y
Utilidades.
• Divisibilidad: Las variables involucradas en el modelo de
programación lineal pueden no ser un número entero.
Si los valores son muy pequeños no importa el redondeo.
Si son muy altos afecta el redondeo.
• Certidumbre: Todos los parámetros que se manejan deben ser
pasados con certeza.
9. MODELO DE PROGRAMACIÓN LINEAL GENERAL
• Definición de variables:
Sea xj = #.... ; j = 1, 2, 3....n
• Función objetivo: Términos del primer grado que se sumen.
Max. o Min. z = C1x1 + C2x2 + ... + Cjxj + ... + Cnxn
...donde n = # total de valores
j = ocurrencia.
• Sujeto a restricciones: i = 1, 2, 3, ... , m
a11x1 + a12x2 + ... + a1jxj + ... + a1nxn " = " b1
a21x1 + a22x2 + ... + a2jxj + ... + a2nxn " = " b2
ai1x1 + ai2x2 + ... + aijxj + ... + ainxn " = " bi
am1x1 + am2x2 + ... + amjxj + ... + amnxn " = " bm
10. MODELO DE PROGRAMACIÓN LINEAL GENERAL
• Condiciones de signo para variables:
• toda xj " 0
• Modelo general de programación lineal resumido en:
Sumatorias.
• Definición de variables: sea xj = # ; j = 1, 2, 3, ... , n
• Función objetivo: (Max./Min.) z = " cjxj
• ... sujeta a:
"aijxj " = " bi i = 1, 2, 3, ... , m
• ... condiciones de signo: " xj " 0
Con vectores.
(Max./Min.) z = Cx
• .. sujeto a: Ax " = " b
x " 0
12. MÉTODOS DE SOLUCIÓN DEL MODELO DE
PROGRAMACIÓN LINEAL
• El modelo de programación lineal se puede
resolver tanto gráfica como analíticamente, pero
para problemas de tamaño común que se
encuentran como aplicaciones, la solución
gráfica no es útil. En cambio, la solución analítica
utilizando el algoritmo SIMPLEX que se verá
posteriormente es el procedimiento normal para
la búsqueda de la solución óptima de un
problema.
13. MÉTODO DE SOLUCIÓN GRÁFICA
• El método grafico de solución de problemas de
programación lineal (PL) solo aplica a problemas con dos
variables de decisión; sin embargo, ilustra adecuadamente
los conceptos que nos permitirán entender la naturaleza
del problema PL y de allí entender los métodos de solución
algebraicos.
• Primeramente graficaremos la región factible. Después
ilustraremos el comportamiento de funciones lineales para
entender como determinar los puntos óptimos.
15. MÉTODO DE SOLUCIÓN GRÁFICA
• Nuestra primera meta es graficar en el plano la región factible; es decir,
graficar la totalidad de puntos del plano que satisfacen las restricciones.
Notemos que las restricciones se deben cumplir simultáneamente. Es
decir, que los puntos deben cumplir la restricción R1, la restricción R2, y
así sucesivamente hasta la restricción R5. Desde el punto de vista de
teoría básica de conjuntos, la región factible es la intersección de los
conjuntos que satisfacen por separado cada una de las restricciones.
Para avanzar en nuestra meta, debemos saber cómo determinar los
puntos del plano que satisfacen una desigualdad lineal. Distinguimos
dos casos:
• cuando en la desigualdad solo aparece una variable de decisión (es
decir, la otra variable tiene coeficiente cero)
• cuando en la desigualdad aparecen las dos variables de decisión (es
decir, ambas tienen coeficientes diferentes de cero en tal desigualdad)
16. MÉTODO DE SOLUCIÓN GRÁFICA
• Cuando solo aparece una variable:
• En este caso, cuando cambiamos el símbolo de
desigualdad por el símbolo de igualdad lo que
obtenemos es el conjunto frontera del conjunto de
puntos que cumple la desigualdad. En este caso,
dicha frontera es una línea horizontal o vertical: por
inspección, es fácil determinar el lado de dicha
frontera que cumple la desigualdad.
18. MÉTODO DE SOLUCIÓN GRÁFICA
• Cuando aparecen las dos variables:
• Nuevamente, cambiamos el símbolo de desigualdad por el
símbolo de igualdad y lo que obtenemos es una línea recta.
Esta recta es fácil de graficar usando la técnica de intersección
con los ejes: hacemos cero una de las variables y despejamos
para la otra variable. De nuevo, la recta es la frontera de
nuestro conjunto: por inspección, es fácil determinar el lado de
dicha frontera que cumple la desigualdad.
20. MÉTODO DE SOLUCIÓN GRÁFICA
• Región factible:
• Se forma haciendo una intersección de los
conjuntos de puntos que hemos encontrado (El
punto S (20, 60) se determina resolviendo el
sistema 2 x + y = 100 y x + y = 80; el punto R (20,
60) se determina resolviendo el sistema 2 x + y =
100 y x = 40).
22. MÉTODO DE SOLUCIÓN GRÁFICA
• Crecimiento de z = 3 x + 2 y:
• De momento, nos olvidamos de la región
factible y vemos en qué dirección crece la
función z: siendo el gradiente de la función
∇z =< ∂z ∂x = 3, ∂z ∂y = 2 > determinamos
que en tal dirección crece z; direcciones
perpendiculares a ∇z (< 2, −3 >) dan las
curvas de nivel.
24. MÉTODO DE SOLUCIÓN GRÁFICA
• Localización del Óptimo:
• Ahora graficamos las curvas de nivel de z
encima de la región factible y determinamos
aquel punto de la región factible que queda
en la curva de nivel de mayor valor (caso de
maximización).
27. HISTORIA DEL MÉTODO SIMPLEX
• En el año 1947 el doctor George Dantzig presentó el algoritmo
que desarrolló y que denominó SIMPLEX. A partir de este logro
se pudieron resolver problemas que por más de un siglo
permanecieron en calidad de estudio e investigación con
modelos formulados pero no resueltos. El desarrollo paralelo de
la computación digital, hizo posible su rápido desarrollo y
aplicación empresarial a todo tipo de problemas
28. MÉTODO SIMPLEX
• El método simplex disminuye sistemáticamente un número
infinito de soluciones hasta un número finito de soluciones
básicas factibles. El algoritmo simplex utiliza el conocido
procedimiento de eliminación en la solución de ecuaciones
lineales de Gauss- Jordan y, además aplica los llamados criterios
del simplex con los cuales se asegura mantener la búsqueda
dentro de un conjunto de soluciones factibles al problema; así
valora una función económica Z, exclusivamente en vértices
FACTIBLES (posibles). También se consigue con eficiencia,
debido a que se dirige la búsqueda haciendo cambios a una
solución básica factible adyacente, que se distingue al tener m-1
variables básicas iguales; es decir, dos vértices adyacentes sólo
difieren en una variable básica; seleccionando la ruta de mayor
pendiente, para mejorar el valor de Z, o por lo menos
conservarlo.
30. CONSTRUCCIÓN DE LA PRIMERA TABLA
SIMPLEX
• Las columnas de la tabla están dispuestas de la siguiente forma: la primera
columna de la tabla contiene las variables que se encuentran en la base (o
variables básicas), esto es, aquellas que toman valor para proporcionar una
solución; la segunda columna recoge los coeficientes que dichas variables
básicas tienen en la función objetivo (esta columna es llamada Cb); la tercera
muestra el término independiente de cada restricción (P0); a partir de ésta
aparece una columna por cada una de las variables de decisión y holgura
presentes en la función objetivo (Pj). Para tener una visión más clara de la
tabla, se incluye una fila que contiene los títulos de cada una de las columnas.
• Sobre esta tabla se agregan dos nuevas filas: una de ellas, que lidera la tabla,
donde aparecen los coeficientes de las variables de la función objetivo, y una
última fila que recoge el valor la función objetivo y los costes reducidos Zj - Cj.
• Los costes reducidos muestran la posibilidad de mejora en la solución Z0. Por
este motivo también son llamados valores indicadores.
• Se muestra a continuación el aspecto general de la tabla del método Simplex:
31.
32. CONSTRUCCIÓN DE LA PRIMERA
TABLA SIMPLEX
• Todos los valores incluidos en la tabla vendrán dados por el
modelo del problema salvo los valores de la fila Z (o fila
indicadora). Estos se obtienen de la siguiente forma: Zj =
Σ(Cbi·Pj) para i = 1..m, donde si j = 0, P0 = bi y C0 = 0, y en caso
contrario Pj = aij.
• Se observa, al realizar el método Simplex, que en esta primera
tabla ocupan la base todas las variables de holgura y por ello
(todos los coeficientes de las variables de holgura son 0 en la
función objetivo) el valor inicial de Z es cero.
• Por este mismo motivo tampoco es necesario realizar los
cálculos de los costes reducidos en la primera tabla, pudiéndose
determinar directamente como el cambio de signo de los
coeficientes de cada variable en la función objetivo, esto es, -Cj.
33. CONDICIÓN DE PARADA:
• Se cumple la condición de parada cuando la fila indicadora no
contiene ningún valor negativo entre los costes reducidos (cuando
el objetivo es la maximización), esto es, no existe posibilidad de
mejora.
• Si no se cumple la condición de parada es necesario realizar una
iteración más del algoritmo, esto es, determinar la variable que se
vuelve básica y la que deja de serlo, encontrar el elemento pivote,
actualizar los valores de la tabla y comprobar si se cumple
nuevamente la condición de parada.
• Es también posible determinar que el problema no se encuentra
acotado y su solución siempre resultará mejorable. En tal caso no es
necesario continuar iterando indefinidamente y se puede finalizar el
algoritmo. Esta situación ocurre cuando en la columna de la variable
entrante a la base todos los valores son negativos o nulos.
34. ELECCIÓN DE LA VARIABLE QUE ENTRA A LA
BASE:
• Cuando una variable se vuelve básica, es decir,
entra en la base, comienza a formar parte de la
solución. Observando los costes reducidos en la
fila Z, se decide que entra a la base la variable de
la columna en la que éste sea el de menor valor
(o de mayor valor absoluto) entre los negativos.
35. ELECCIÓN DE LA VARIABLE QUE SALE DE LA
BASE:
• Una vez obtenida la variable entrante, se determina que
sale de la base la variable que se encuentre en aquella fila
cuyo cociente P0/Pj sea el menor de los estrictamente
positivos (teniendo en cuenta que esta operación se hará
únicamente cuando Pj sea superior a 0).
36. ELEMENTO PIVOTE Y ACTUALIZACIÓN DE LA
TABLA
• Elemento pivote:
• El elemento pivote de la tabla queda marcado por la intersección entre la
columna de la variable entrante y la fila de la variable saliente.
• Actualización de la tabla:
• Las filas correspondientes a la función objetivo y a los títulos permanecerán
inalteradas en la nueva tabla. El resto de valores deberán calcularse como se
explica a continuación:
• En la fila del elemento pivote cada nuevo elemento se calcula como:
• Nuevo Elemento Fila Pivote = Anterior Elemento Fila Pivote / Pivote.
• En el resto de las filas cada elemento se calcula:
• Nuevo Elemento Fila = Anterior Elemento Fila - (Anterior Elemento Fila en
Columna Pivote * Nuevo Elemento Fila Pivote).
• De esta forma se consigue que todos los elementos de la columna de la
variable entrante sean nulos salvo el de la fila de la variable saliente cuyo
valor será 1. (Es análogo a utilizar el método de Gauss-Jordan para resolver
sistemas de ecuaciones lineales).
37. EJEMPLO DEL MÉTODO SIMPLEX:
• Resolver mediante el método simplex el siguiente problema:
Maximizar Z = f(x,y) = 3x + 2y
sujeto a: 2x + y ≤ 18
2x + 3y ≤ 42
3x + y ≤ 24
x ≥ 0 , y ≥ 0
38. REALIZAR UN CAMBIO DE VARIABLES Y
NORMALIZAR EL SIGNO DE LOS TÉRMINOS
INDEPENDIENTES.
• Se realiza un cambio en la nomenclatura de las variables.
Estableciéndose la correspondencia siguiente:
• x pasa a ser X1
• y pasa a ser X2
• Como los términos independientes de todas las
restricciones son positivos no es necesario hacer nada. En
caso contrario habría que multiplicar por "-1" en ambos
lados de la inecuación (teniendo en cuenta que esta
operación también afecta al tipo de restricción).
39. NORMALIZAR LAS RESTRICCIONES
• Se convierten las inecuaciones en ecuaciones
agregando variables de holgura, exceso y artificiales según la
tabla siguiente:
40. NORMALIZAR LAS RESTRICCIONES
• En este caso se introduce una variable de holgura (X3,
X4 y X5) en cada una de las restricciones del tipo ≤, para
convertirlas en igualdades, resultando el sistema de
ecuaciones lineales:
2·X1 + X2 + X3 = 18
2·X1 + 3·X2 + X4 = 42
3·X1 + X2 + X5 = 24
41. ESCRIBIR LA TABLA INICIAL DEL MÉTODO
SIMPLEX.
• Z - 3·X1 - X2 - 0·X3 - 0·X4 - 0·X5 = 0
IGUALAR LA FUNCIÓN OBJETIVO A CERO.
• La tabla inicial del método Simplex está compuesta por todos los
coeficientes de las variables de decisión del problema original y las de
holgura, exceso y artificiales agregadas en el paso 2 (en las columnas,
siendo P0 el término independiente y el resto de variables Pi coinciden
con Xi), y las restricciones (en las filas). La columna Cb contiene los
coeficientes de las variables que se encuentran en la base.
• La primera fila está formada por los coeficientes de la función objetivo,
mientras que la última fila contiene el valor la función objetivo y los
costes reducidos Zj - Cj.
• La última fila se calcula como sigue: Zj = Σ(Cbi·Pj) para i = 1..m, donde si
j = 0, P0 = bi y C0 = 0, y en caso contrario Pj = aij. Aunque al tratarse de
la primera tabla del método Simplex y ser todos los Cb nulos se puede
simplificar el cálculo, y por esta vez disponer Zj = -Cj.
43. CONDICIÓN DE PARADA
• Si el objetivo es la maximización, cuando en la última fila (fila
indicadora) no existe ningún valor negativo entre los costes
reducidos (columnas P1 en adelante) se alcanza la condición
de parada.
• En tal caso se llega al final del algoritmo ya que no existe
posibilidad de mejora. El valor de Z (columna P0) es la
solución óptima del problema.
• Otro caso posible es que en la columna de la variable
entrante a la base todos los valores son negativos o nulos.
Esto indica que el problema no se encuentra acotado y su
solución siempre resultará mejorable. Ante esta situación no
es necesario continuar iterando indefinidamente y también se
puede dar por finalizado el algoritmo.
• De no ser así, se ejecutan los siguientes pasos de forma
iterativa.
44. ELECCIÓN DE LA VARIABLE ENTRANTE Y
SALIENTE DE LA BASE
• Se determina en primer lugar la variable que entra en la base. Para ello se escoge la columna
cuyo valor en la fila Z sea el menor de entre todos los negativos. En este caso sería la variable
X1 (P1) de coeficiente -3.
• Si existiesen dos o más coeficientes iguales que cumplan la condición anterior (caso de
empate), entonces se optará por aquella variable que sea básica.
• La columna de la variable que entra en la base se llama columna pivote.
• Una vez obtenida la variable que entra en la base, se procede a determina cual será la variable
que sale de la misma. La decisión se toma en base a un sencillo cálculo: dividir cada término
independiente (columna P0) entre el elemento correspondiente de la columna pivote, siempre
que ambos elementos sean estrictamente positivos (mayores que cero). Se escoge la fila cuyo
resultado haya resultado mínimo.
• Si hubiera algún elemento menor o igual a cero no se realiza dicho cociente. En caso de que
todos los elementos de la columna pivote fueran de ésta condición se habría cumplido la
condición de parada y el problema tendría una solución no acotada.
• En este ejemplo: 18/2 [=9] , 42/2 [=21] y 24/3 [=8]
• El término de la columna pivote que en la división anterior dio lugar al menor cociente positivo
indica la fila de la variable de holgura que sale de la base. En este caso resulta ser X5 (P5), de
coeficiente 3. Esta fila se llama fila pivote.
• Si al calcular los cocientes, dos o más resultados cumplen la condición para elegir el elemento
saliente de la base (caso de empate), se escoge aquella que no sea variable básica (siempre que
sea es posible).
• La intersección de la fila pivote y columna pivote marca el elemento pivote, en este caso el 3
45. ACTUALIZAR LA TABLA
• Los nuevos coeficientes de la tabla se calculan de la
siguiente manera:
• En la fila del elemento pivote cada nuevo elemento se calcula
como:
• Nuevo Elemento Fila Pivote = Anterior Elemento Fila Pivote /
Pivote
• En el resto de las filas cada elemento se calcula:
• Nuevo Elemento Fila = Anterior Elemento Fila - (Anterior
Elemento Fila en Columna Pivote * Nuevo Elemento Fila
Pivote)
• Con esto se normaliza el elemento pivote y su valor pasa a
ser 1, mientras que el resto de elementos de la columna
pivote se anulan (análogo al método de Gauss-Jordan).
• Se muestran a continuación los cálculos para la fila P4:
46. ACTUALIZAR LA TABLA
Anterior fila P4 42 2 3 0 1 0
- - - - - -
Anterior Elemento Fila en Columna Pivote 2 2 2 2 2 2
x x x x x x
Nueva fila pivote 8 1 1/3 0 0 1/3
= = = = = =
Nueva fila P4 26 0 7/3 0 1 -2/3
48. • Al comprobar la condición de parada se observa que no se
cumple ya que entre los elementos de la última fila hay uno
negativo, -1. Se continúa iterando nuevamente los pasos 6 y
7.
• La variable que entra en la base es X2 (P2), por ser la variable
que corresponde a la columna donde se encuentra el
coeficiente -1.
• Para calcular la variable que sale, se dividen los términos de
la columna P0 entre los términos correspondientes de la
nueva columna pivote: 2 / 1/3 [=6] , 26 / 7/3 [=78/7] y 8 / 1/3
[=24]. Como el menor cociente positivo es 6, la variable que
sale de la base es X3 (P3).
• El elemento pivote es 1/3.
• Actualizando nuevamente los valores de la tabla se obtiene:
49. • Una nueva comprobación de la condición de parada revela
que entre los elementos de la fila indicadora vuelve a haber
uno negativo, -1. Significa que aun no se ha llegado a la
solución óptima y hay que seguir iterando (pasos 6 y 7):
• La variable que entra en la base es X5 (P5), por ser la variable
que corresponde al coeficiente -1.
• Se escoge la variable que sale calculando el cociente entre los
términos de la columna de términos independientes y los
términos correspondientes de la nueva columna pivote: 6/(-2)
[=-3] , 12/4 [=3], y 6/1 [=6]. En esta ocasión es X4 (P4).
• El elemento pivote es 4.
• Después de actualizar todas las filas, se obtiene la tabla
siguiente:
50. FIN DEL ALGORITMO
• Se observa que en la última fila todos los coeficientes son
positivos cumpliéndose, por tanto la condición de parada.
• La solución óptima viene dada por el valor de Z en la columna
de los términos independientes (P0), en este ejemplo: 33. En
la misma columna se puede ver el punto donde se alcanza,
observando las filas correspondientes a las variables de
decisión que han entrado en la base: X1 = 3 y X2 = 12.
• Deshaciendo el cambio de variables se obtiene x = 3 e y = 12.
51. VIDEO DE LA RESOLUCIÓN DEL MÉTODO
SIMPLEX EN EXCEL
• https://www.youtube.com/watch?v=6okA05Ktv2E
Aplicación para desarrollar el método simplex
• http://www.phpsimplex.com/simplex/simplex.htm?l=es
52. CONCLUSIONES
• El método simplex es un algoritmo eficiente y confiable para
resolver problemas de programación lineal. También
proporciona la base para llevar a cabo, en forma muy
eficiente, las distintas etapas del análisis pos óptimo.
Aunque tiene una interpretación geométrica útil, el método
simplex es un procedimiento algebraico. En cada iteración se
mueve de la solución básica factible actual a una adyacente
mejor eligiendo tanto la variable básica entrante como la que
sale y después usando la eliminación de Gauss para resolver
el sistema de ecuaciones lineales. Cuando la solución actual
no tiene una solución básica factible adyacente que sea
mejor, la solución actual es óptima y el algoritmo se detiene.