Sunteți pe pagina 1din 27

Teoría del método Simplex

Preparando el modelo para adaptarlo al método Simplex


Tipo de optimización
Cambio de signo de los términos independientes
Normalización de las restricciones
Desarrollando el método Simplex
Método Simplex
Método de las Dos Fases
Identificando casos anómalos y soluciones
Método Gráfico
Ejemplo del método Simplex
Ejemplo del método Gráfico
Comparación del método Simplex y el método Gráfico

El método Simplex es un procedimiento iterativo que permite


mejorar la solución de la función objetivo en cada paso. El
proceso concluye cuando no es posible continuar mejorando
dicho valor, es decir, se ha alcanzado la solución óptima (el
mayor o menor valor posible, según el caso, para el que se
satisfacen todas las restricciones).

Partiendo del valor de la función objetivo en un punto


cualquiera, el procedimiento consiste en buscar otro punto que
mejore el valor anterior. Como se verá en el método Gráfico,
dichos puntos son los vértices del polígono (o poliedro o polícoro,
si el número de variables es mayor de 2) que constituye la región
determinada por las restricciones a las que se encuentra sujeto
el problema (llamada región factible). La búsqueda se realiza
mediante desplazamientos por las aristas del polígono, desde el
vértice actual hasta uno adyacente que mejore el valor de la
función objetivo. Siempre que exista región factible, como su
número de vértices y de aristas es finito, será posible encontrar
la solución.

El método Simplex se basa en la siguiente propiedad: si la


función objetivo Z no toma su valor máximo en el vértice A,
entonces existe una arista que parte de A y a lo largo de la cual
el valor de Z aumenta.

Será necesario tener en cuenta que el método Simplex


únicamente trabaja con restricciones del problema cuyas
inecuaciones sean del tipo "≤" (menor o igual) y sus coeficientes
independientes sean mayores o iguales a 0. Por tanto habrá que
estandarizar las restricciones para que cumplan estos requisitos
antes de iniciar el algoritmo del Simplex. En caso de que después
de éste proceso aparezcan restricciones del tipo "≥" (mayor o
igual) o "=" (igualdad), o no se puedan cambiar, será necesario
emplear otros métodos de resolución, siendo el más común el
método de las Dos Fases.

Preparando el modelo para


adaptarlo al método Simplex
La forma estándar del modelo de problema consta de una
función objetivo sujeta a determinadas restricciones:

Función objetivo: c1·x1 + c2·x2 + ... + cn·xn


Sujeto a: a11·x1 + a12·x2 + ... + a1n·xn = b1
a21·x1 + a22·x2 + ... + a2n·xn = b2
...
am1·x1 + am2·x2 + ... + amn·xn = bm
x1,..., xn ≥ 0

El modelo debe cumplir las siguientes condiciones:

1. El objetivo consistirá en maximizar o minimizar el valor de


la función objetivo (por ejemplo, incrementar ganancias o
reducir pérdidas, respectivamente).

2. Todas las restricciones deben ser ecuaciones de igualdad


(identidades matemáticas).

3. Todas las variables (xi) deben tener valor positivo o nulo


(condición de no negatividad).

4. Los términos independientes (bi) de cada ecuación deben


ser no negativos.

Hay que adaptar el problema modelado a la forma estándar


para poder aplicar el algoritmo del Simplex.

Tipo de optimización.
Como se ha comentado, el objetivo del método consistirá en
optimizar el valor de la función objetivo. Sin embargo se
presentan dos opciones: obtener el valor óptimo mayor
(maximizar) u obtener el valor óptimo menor (minimizar).

Además existen diferencias en el algoritmo entre el objetivo


de maximización y el de minimización en cuanto al criterio de
condición de parada para finalizar las iteraciones y a las
condiciones de entrada y salida de la base. Así:

 Objetivo de maximización

Condición de parada: cuando en la fila Z no aparece


ningún valor negativo.

Condición de entrada a la base: el menor valor


negativo en la fila Z (o el de mayor valor absoluto entre los
negativos) indica la variable Pjque entra a la base.

Condición de salida de la base: una vez obtenida la


variable entrante, la variable que sale se determina
mediante el menor cociente P0/Pjde los estrictamente
positivos.

 Objetivo de minimización

Condición de parada: cuando en la fila Z no aparece


ningún valor positivo.

Condición de entrada a la base: el mayor valor


positivo en la fila Z indica la variable Pj que entra a la base.

Condición de salida de la base: una vez obtenida la


variable entrante, la variable que sale se determina
mediante el menor cociente P0/Pjde los estrictamente
negativos.

No obstante, es posible normalizar el objetivo del problema


con el fin de aplicar siempre los mismos criterios en lo referente
a la condición de parada del algoritmo y a las condiciones de
entrada y salida de las variables de la base. De esta forma, si el
objetivo es minimizar la solución, se puede cambiar el problema
a otro equivalente de maximización simplemente multiplicando la
función objetivo por "-1". Es decir, el problema de minimizar Z es
equivalente al problema de maximizar (-1)·Z. Una vez obtenida la
solución será necesario multiplicarla también por (-1).

Ventajas: No hay que preocuparse por nuevos criterios de


parada, condición de entrada y salida de la base ya que se
mantienen.

Inconvenientes: En el caso de que la función tenga todos


los coeficientes de sus variables básicas positivos, y además las
restricciones sean del tipo de desigualdad "≤", al hacer el cambio
dichos coeficientes quedan negativos cumpliéndose la condición
de parada en la primera iteración (en la fila del valor de la función
objetivo todos los valores son positivos o cero). Obteniéndose en
este caso por defecto un valor óptimo para la función igual a 0.

Solución: Realmente no existe este problema dado que


para que la solución sea superior a 0 es necesario que alguna
restricción tenga impuesta la condición "≥" (y se trataría de un
modelo para el método de las Dos Fases). En el caso planteado,
la solución real debe ser cero.

Cambio de signo de los términos


independientes
También se ha dicho que los términos independientes (bi) de
cada ecuación deben ser no negativos para poder emplear el
método Simplex. A tal fin, si alguna de las restricciones presenta
un término independiente menor que 0 habrá que multiplicar por
"-1" ambos lados de la inecuación (teniendo en cuenta que esta
operación también afecta al tipo de restricción).

Ventajas: Con ésta simple modificación de signos en las


restricciones correspondientes se posibilita la aplicación del
método Simplex al problema modelado.

Inconvenientes: Puede resultar que en las restricciones


donde tengamos que modificar los signos de las constantes, los
tipos de desigualdad fueran "≤" (quedando tras la operación del
tipo "≥") siendo necesario desarrollar el método de las Dos Fases.
Este inconveniente no es controlable, aunque podría ocurrir el
caso contrario y resultar beneficioso si los términos
independientes negativos se presentan en todas aquellas
restricciones con desigualdad de tipo "≥". Si existe alguna
restricción del tipo "=" no supondría ninguna ventaja ni desventaja
puesto que siempre sería de necesaria aplicación el método de
las Dos Fases.

Normalización de las restricciones


Otra de las condiciones del modelo estándar del problema
es que todas las restricciones sean ecuaciones de igualdad
(también llamadas restricciones de igualdad), por lo que hay que
convertir las restricciones de desigualdad o inecuaciones en
dichas identidades matemáticas.

La condición de no negatividad de las variables (x1,..., xn ≥


0) es la única excepción y se mantiene tal cual.

 Restricción de tipo "≤"


Para normalizar una restricción con una desigualdad del
tipo "≤", hay que añadir una nueva variable, llamada
variable de holgura xs (con la condición de no negatividad:
xs ≥ 0). Esta nueva variable aparece con coeficiente cero
en la función objetivo, y sumando en la ecuación
correspondiente (que ahora sí será una identidad
matemática o ecuación de igualdad).

a11·x1 + a12·x2 ≤ b1 a11·x1 + a12·x2 + 1·xs = b1

 Restricción de tipo "≥"

En caso de una desigualdad del tipo "≥", también hay que


añadir una nueva variable llamada variable de
exceso xs (con la condición de no negatividad: xs ≥ 0).
Esta nueva variable aparece con coeficiente cero en la
función objetivo, y restando en la ecuación
correspondiente.

Surge ahora un problema con la condición de no


negatividad con esta nueva variable del problema. Las
inecuaciones que contengan una desigualdad de tipo "≥"
quedarían:

a11·x1 + a12·x2 ≥ b1 a11·x1 + a12·x2 - 1·xs = b1

Al realizar la primera iteración con el método Simplex,


las variables básicas no estarán en la base y tomarán
valor cero. En este caso la nueva variable xs, tras hacer
cero a x1 y x2, tomará el valor -b1 y no cumpliría la
condición de no negatividad. Es necesario añadir otra
nueva variable xr, llamada variable artificial, que también
aparecerá con coeficiente cero en la función objetivo y
sumando en la restricción correspondiente. Quedando
entonces de la siguiente manera:

a11·x1 + a12·x2 ≥ b1 a11·x1 + a12·x2 - 1·xs +


1·xr = b1

 Restricción de tipo "="

Al contrario de lo que cabría pensar, para las restricciones


de tipo "=" (aunque ya son identidades) también es
necesario agregar variables artificiales xr. Como en el
caso anterior, su coeficiente será cero en la función
objetivo y aparecerá sumando en la restricción
correspondiente.

a11·x1 + a12·x2 = b1 a11·x1 + a12·x2 + 1·xr = b1


En el último caso se hace patente que las variables
artificiales suponen una violación de las leyes del álgebra, por lo
que será necesario asegurar que dichas variables artificiales
tengan un valor 0 en la solución final. De esto se encarga
el método de las Dos Fases y por ello siempre que aparezcan
este tipo de variables habrá que realizarlo.

En la siguiente tabla se resume según la desigualdad el tipo


de variable que aparece en la ecuación normalizada, así como
su signo:

Tipo de
Tipo de variable que aparece
desigualdad
≥ - exceso + artificial
= + artificial
≤ + holgura

Desarrollando el método Simplex


Una vez estandarizado el modelo puede ocurrir que sea
necesario aplicar el método Simplex o el método de las Dos
Fases. Véase en la figura la forma de actuación para llegar a la
solución del problema modelado.
A continuación se explican paso a paso los puntos de cada
método, concretando los aspectos a tener en cuenta.

Método Simplex
 Construcción de la primera tabla:

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:

Tabla
C1 C2 ... Cn
Base Cb P0 P1 P2 ... Pn
P1 Cb1 b1 a11 a12 ... a1n
P2 Cb2 b2 a21 a22 ... a2n
... ... ... ... ... ... ...
Pm Cbm bm am1 am2 ... amn
Z Z0 Z1-C1 Z2-C2 ... Zn-Cn
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.

 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.

Una vez cumplida la condición de parada, el valor de


cada variable que logra la solución óptima se encuentra
en la columna P0, indicándose en la base a qué variable
correnponde dicho valor. Si una variable no aparece en la
base, significa que su valor es cero. De la misma forma el
valor óptimo de la función objetivo (Z) se encuentra en la
columna P0, fila Z.

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.

 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.

 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/Pjsea el menor de los estrictamente
positivos (teniendo en cuenta que esta operación se hará
únicamente cuando Pj sea superior a 0).

 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).

Método de las Dos Fases


El método de las Dos Fases se utiliza cuando aparecen
variables artificiales en la forma canónica o estándar del
problema. La primera fase trata de resolver el problema auxiliar
Z' de minimizar la suma de las variables artificiales y conseguir
que sea cero (con objeto de evitar incongruencias matemáticas).
Una vez resuelto este primer problema, y siempre y cuando el
resultado sea el esperado, se reorganiza la tabla resultante para
utilizarla en la segunda fase sobre el problema original.

En caso contrario el problema no es factible, es decir, no


tiene solución y no será necesario continuar con la segunda fase.

FASE 1

Esta primera fase es muy similar al método Simplex, con la


excepción de la construcción de la primera tabla, además de la
necesidad de estudiar el resultado obtenido para determinar si se
desarrolla la segunda fase.

En tal caso, la última tabla de esta fase será, con algunas


modificaciones, la utilizada como tabla inicial para la segunda
fase.

 Construcción de la primera tabla:

Se elabora de manera análoga a la tabla inicial del método


Simplex, pero con algunas diferencias.

Como se ha comentado, en esta primera fase se


resuelve un problema auxiliar (la minimización de la suma
de las variables artificiales) con una función objetivo
auxiliar. Por lo tanto en la primera fila de la tabla, donde
se muestran los coeficientes de las variables de la función
objetivo, aparecerán todos los términos a cero excepto los
coeficientes de variables artificiales. El valor de cada uno
de estos coeficientes es "-1" debido a que se está
minimizando la suma de dichas variables (recuerde que
minimizar Z' es igual que maximizar (-1)·Z').

La otra diferencia para la primera tabla radica en que


ahora sí es necesario calcular la fila Z (o fila indicadora).

Tabla
C0 C1 C2 ... Cn-k ... Cn
Base Cb P0 P1 P2 ... Pn-k ... Pn

P1 Cb1 b1 a11 a12 ... a1n- ... a1n


k

P2 Cb2 b2 a21 a22 ... a2n- ... a2n


k
Tabla
... ... ... ... ... ... ... ... ...

Pm Cbm bm am1 am2 ... amn- ... amn


k

Z Z0 Z1 Z2 ... Zn-k ... Zn

Siendo Zj = Σ(Cbi·Pj) - Cj para i = 1..m, donde si j = 0,


P0 = bi y C0 = 0, y en caso contrario Pj = aij.

 Condición de parada y paso a la fase 2:

La condición de parada es la misma que en el método


Simplex normal. Esto es, cuando en la fila indicadora
ninguno de los valores de los costes reducidos es negativo
(ya que tal y como se ha planteado el objetivo es la
maximización de (-1)·Z').

Cumplida la condición de parada es necesario


determinar si es posible pasar a la segunda fase para
obtener la solución óptima del problema original. Esto se
hace observando el resultado obtenido en la primera fase:
si su valor es 0, significa que el problema original tiene
solución y es posible calcularla, en caso contrario indica
que se trata de un problema no factible y no tiene solución.

FASE 2

La segunda fase del método de las Dos Fases se desarrolla


exactamente igual que el método Simplex, con la salvedad de
que antes de iniciar las iteraciones hay que eliminar las columnas
correspondientes a las variables artificiales, y reconstruir la tabla
inicial.

 Eliminar Columna de variables artificiales:

Si hemos llegado a la conclusión de que el problema


original tiene solución, debemos preparar nuestra tabla
para la segunda fase. Este paso es muy sencillo, se trata
únicamente de eliminar las columnas correspondientes a
las variables artificiales.

 Construcción de la tabla inicial:

La tabla inicial en este caso se mantiene casi igual a la


última tabla de la primera fase. Únicamente habrá que
modificar la fila de la función objetivo por la del problema
original y calcular nuevamente la fila Z (de la misma forma
que en la primera tabla de la fase 1).

A partir de este punto, todas las iteraciones hasta llegar a la


solución óptima del problema no presentan ninguna diferencia
con el método Simplex.

Identificando casos anómalos y


soluciones
Solución óptima: cuando se cumple la condición de parada
y no hay variables artificiales en la base con valor positivo (los
valores se indican en la columna P0), se ha conseguido la
optimización. El valor Z0 actual es la solución óptima del
problema, cumpliéndose para las variables que se encuentran en
la base. Si se trata de un problema de minimización, el valor
óptimo obtenido se multiplicará por "-1".

Infinitas soluciones: cumplida la condición de parada, si


alguna variable de decisión no básica tiene un valor 0 en la fila Z,
significa que existe otra solución que aporta el mismo valor
óptimo para la función objetivo. Es este caso el problema admite
infinitas soluciones, estando todas ellas comprendidas dentro del
segmento (o porción del plano, región del espacio, etc.
dependiendo del número de variables del problema) definido por
A·X1 + B·X2 = Z0. Mediante una nueva iteración y haciendo que
la variable de decisión que tiene el 0 en la fila Z entre en la base
se obtendrá otra solución diferente para el mismo valor óptimo.

Solución ilimitada (no acotada): si toda la columna de la


variable que entra a la base tiene todos sus elementos negativos
o nulos se trata de problema no acotado, es decir, que tiene
solución ilimitada. No hay valor óptimo concreto para la función
objetivo sino que a medida que se aumenta el valor de las
variables también se incrementa el valor Z sin violar ninguna
restricción.

No existe solución: cuando ningún punto satisface todas


las restricciones del problema se produce la infactibilidad no
existiendo ninguna solución posible para él. En este caso, una
vez terminadas todas las iteraciones del algoritmo, existen en la
base variables artificiales cuyo valor es superior a cero.

Empate de variable entrante: cuando se produce un


empate en la condición de decisión de la variable entrante se
puede optar por cualquiera de ellas sin que esto afecte a la
solución final. Por contra si influye en el número de iteraciones
necesarias para obtener dicha solución. Se aconseja optar a
favor de las variables básicas ya que ellas son las que formarán
parte de la solución óptima.

Empate de variable saliente: se puede nuevamente optar


por cualquiera de ellas. Sin embargo, a fin de no alargar el
problema y evitar la entrada en un bucle infinito (caso
degenerado), se discrimina a favor de las variables de decisión
haciendo que permanezcan en la base. En el caso de estar en la
primera fase del método de las Dos Fases, se optará por sacar
de la base las variables artificiales.

Curiosidad en la Fase 1: al finalizar la fase 1, si el problema


original tiene solución, todas las variables artificiales en la fila
indicadora deben tener el valor "1".

¿El elemento pivote puede ser nulo?: No, el elemento


pivote siempre será estrictamente positivo ya que únicamente se
realizan los cocientes entre valores no negativos y mayores que
cero (ante un problema de maximización).

Método simplex paso a paso –


Programación lineal
El método simplex es un algoritmo creado por George Dantzig que permite la
solución de muchos problemas de programación lineal.
Muy popular, es bien aceptado en las zonas donde las diferentes necesidades y
limitaciones influencia en un valor que necesita ser aumentado o disminuido al
máximo.

El algoritmo puede ser implementado de varias maneras diferentes, pero el principio


es básicamente el mismo. A continuación se muestra el enfoque utilizado por
[Papadmitriou].
Al final del texto se le puede asignar una implementación de lenguaje de
programación en Python está disponible en Github.

Contenido
o 0.1 Visión general
 0.1.1 Operación
 0.1.2 Minimización
 0.1.3 Cuadro
 0.1.4 Matrices
 0.1.5 En el espacio de dimensión N
 0.1.6 Complejidad
o 0.2 Con un algoritmo de Tableau
 1 Programación lineal
o 1.1 Ejemplo
o 1.2 Teoría
o 1.3 Algoritmos
o 1.4 Variables enteras
VISIÓN GENERAL
El método Simplex permite encontrar los valores óptimos en situaciones donde
deben respetarse muchos aspectos. Ante un problema, las desigualdades se
establecen limitaciones que representan a las variables. A partir de ahí, se prueba
posibilidades con el fin de optimizar el resultado tan pronto como sea posible.
El uso más común de la Simplex es maximizar el resultado, es decir, encontrar el valor
más grande posible para un total. Los problemas típicos de resolver con Simplex están
buscando cantidades óptimas de productos para ser vendidos, con restricciones en el
almacenamiento y la producción de los mismos.

La idea es para aislar una función como el objetivo. Las cantidades que desee
optimizar están representados por las variables aquí llamados , y la función objetivo
se presenta como siendo los coeficientes de las variables. Estos muestran la
proporcionalidad entre ellos.

Por lo general son números racionales obtenidos en el problema que desea


resolver.
Las restricciones se presentan como las desigualdades. Peculiaridades indican el
hecho de que una empresa sólo es capaz de almacenar un determinado peso o
volumen de los productos, por ejemplo.

Entre las posibilidades de los valores de las variables que satisfagan las limitaciones,
el algoritmo debe encontrar a los que dan la función objetivo el total más alto posible.

OPERACIÓN
Relacionado con la programación lineal, se trabaja con funciones de 1º grado, la idea
del algoritmo es bastante simple. Inicialmente, se asigna el valor cero a variables, sería
muy lejos de la solución.

A continuación, se incrementa gradualmente a la variable que tiene la interferencia


más positivo en los resultados de la función objetivo, es decir, el que tiene el
coeficiente más alto. Esto se llama “la variable activa” y tiene una gran importancia
inicial, ya que es el más “rentable” ellos, es decir, que nos lleva más cerca de
optimización.

A medida que este valor aumenta, el algoritmo comprueba todas las restricciones,
hasta que uno de ellos no se cumple. Esta restricción se llama la “restricción activa”.
En este momento, se sabe la variable activa máxima.

El procedimiento se desplaza a la siguiente variable que nos trae buena solución,


siempre teniendo en cuenta la cantidad máxima que el primero podría lograr. Cada
uno de estos cambios, el Simplex convierte todos los coeficientes (incluyendo la
función objetivo) de acuerdo con los límites que se encuentran en las sucesivas
restricciones activas.

El procedimiento se repite hasta que el incremento de las variables se presente como


una disminución en total alcanzado. Esto se identifica con el signo negativo delante de
los coeficientes de la función objetivo. Al final, los valores buscados son conocidos por
medio de un sistema de ecuaciones, los derivados de la problema original.

MINIMIZACIÓN
Aunque los ejemplos son casi siempre maximizando el Simplex también comprende
los casos en que desea encontrar el valor más pequeño posible. Los costos y gastos
son algunos de los resultados buscados comúnmente en estas situaciones.

Para ello, el algoritmo puede ser perfectamente adaptado con el fin de resolver un
problema en el que desea encontrar un pequeño resultado. Sin embargo, lo que se
hace a menudo es simplemente invertir todas las relaciones, multiplicando los
coeficientes por -1 y haciendo que el problema original es visto como un simple
maximización.

CUADRO
Ya implementada en varios idiomas diferentes, el Simplex también se puede aplicar de
forma manual. El método, conocido como Tableau, es poner toda la información
organizada de forma correcta en un marco, haciendo exactamente lo que el software
lo haría. En muchos lugares, el Simplex se enseña en este camino, por lo que la gente
tiene un buen campo de la técnica de optimización.

MATRICES
El algoritmo de procesamiento puede ser realizado por un producto de matriz. Una
vez que los coeficientes están correctamente dispuestos en filas y columnas, es
suficiente que este se multiplica por una versión modificada de la “identidad Matrix”,
de tamaño igual al número de variables.

La versión modificada tiene una línea formada por los coeficientes simétricos de la
línea relativa a la limitación violado dividido por el coeficiente de la variable violada.
Esta línea se corresponderá, en orden, a la variable que violó la restricción.

Este producto hace que las matrices siempre tiene una lista de coeficientes ya
modificados de acuerdo con las restricciones y los mejores valores posibles para las
variables hasta la fecha. El proceso se repite hasta que encuentre el resultado óptimo,
es decir, cuando ya no es posible mejorar el total sin violar las restricciones.

EN EL ESPACIO DE DIMENSIÓN N
Si se considera a la óptica geométrica, el Simplex trabajando en la construcción de un
politopo con un número de dimensiones igual al número de variables del problema. La
solución óptima será siempre un conjunto de coordenadas de los vértices del politopo.
Cada incrementar una variable, es como el Simplex percorresse uno de los bordes,
siempre en busca de la punta perfecta.

COMPLEJIDAD
Formalmente, se cree que la complejidad del algoritmo Simplex ser exponencial.
Muestra que en una aplicación ingenua, cada iteración en busca de la mejor solución
es, en principio, la complejidad en términos de variables y restricciones.

Sin embargo, utilizando el enfoque de procesamiento lineal en cada iteración de la


totalidad del sistema se enciende de manera que el vértice anterior es el nuevo origen
de la complejidad por iteración se convierte.
Por supuesto, la pregunta es ¿cuántas iteraciones son necesarias para alcanzar los
criterios de parada. Un límite superior para este número es, el extremo que conduce a
la complejidad exponencial en a.

Afortunadamente, tanto Papadimitriou como informó de que, en la práctica, pocos


problemas tomando esta complejidad y, por lo tanto, el algoritmo Simplex es muy
utilizado.

CON UN ALGORITMO DE TABLEAU


Estos procedimientos son válidos para problemas de maximización:

 Introduzca las variables de holgura, uno para cada desigualdad;


 Establecer un marco para los cálculos mediante la colocación de los coeficientes de todas
las variables con sus signos y, en la última línea, incluyen los coeficientes de la función
objetivo transformado;
 Establecer una solución básica inicial, por lo general mediante la asignación de valor cero
a las variables originales y la búsqueda de valores positivos para las variables de holgura;
 Como siguiente variable para entrar en la base, elegir no variable básica que proporciona,
en la última línea, la mayor contribución al aumento de la función objetivo (es decir, tiene
el valor más negativo). Si todas las variables que están fuera de la base tienen cero o
positivos coeficientes en esta línea, la solución actual es óptima. Si cualquiera de estas
variables tienen coeficiente cero, esto significa que se puede insertar en la base sin
incrementar el valor de la función objetivo. Esto significa que tenemos una gran solución
con el mismo valor de la función objetivo.
 Para elegir la variable que debe salir de la base, debe realizar lo siguiente:
 Dividir los elementos de la última columna de los elementos positivos correspondientes
de la columna de la variable que va a entrar en la base. Si no hay elemento positivo en
esta columna, el proceso debe detenerse, ya que la solución sería ilimitado.
 La proporción menor indica la ecuación cuya variable básica respectiva que ser anulada,
por lo que es variable no básica.
 El uso de las operaciones válidas con filas de la matriz, la transformación de la mesa de
cálculos con el fin de encontrar una nueva solución alcalina. La columna de la nueva
variable básica debe convertirse en una identidad vectorial, donde se anularon los
elementos 1 aparece en la línea correspondiente a la variable.
Vuelva al paso 4 para iniciar otra iteración.

PROGRAMACIÓN LINEAL
En las matemáticas , un problema de programación lineal (LP) son problemas de
optimización en el que la función objetivo y las restricciones son lineales.
Programación lineal es un campo importante de la optimización por varias razones.
Muchos de los problemas prácticos en la investigación de operaciones se pueden
expresar como problemas de programación lineal.
Ciertos casos especiales de programación lineal, tales como problemas de flujo de red
y problemas de flujo multiservicio se consideran lo suficientemente importante que si
una gran cantidad de investigación se ha generado en los algoritmos especializados
para sus soluciones. Varios algoritmos para otros tipos de trabajo resolver problemas
de optimización problemas de PL como sub-problemas.

Históricamente, las ideas de programación lineal han inspirado a muchos de los


conceptos centrales de la teoría de optimización, tales como la dualidad, la
descomposición , y la importancia de la convexidad y sus generalizaciones.

EJEMPLO
Aquí está un ejemplo de un problema de programación lineal. Supongamos que un
agricultor tiene un pedazo de tierra que decir, el km 2 , para ser sembrada con trigo o
cebada, o una combinación de ambos.

El agricultor haya una cantidad limitada de fertilizantes F permitido y insecticida P


permitida para ser utilizados, cada uno que se requiera en diferentes cantidades por
unidad de superficie para el trigo ( F 1 , P 1 ) y cebada ( F 2 , P 2 ).
Sea S 1 precio de venta de trigo, y S 2 de la cebada. Si llamamos a la superficie
sembrada con trigo y cebada x 1 y x 2 , respectivamente, a continuación, el número
óptimo de km 2 de siembra con trigo vs. La cebada se puede expresar como un
problema de programación lineal:

maximizar (Maximizar el beneficio – esta es la “función objetivo”)


sujeto a (Límite de la superficie total)
(Límite de fertilizantes)
(Límite de insecticida)
(No se puede sembrar un área negativa)

TEORÍA
Geométricamente, las restricciones lineales definen un poliedro convexo , que se llama
el conjunto de puntos factibles . Dado que la función objetivo también es lineal, es un
fantástico lugar automáticamente un óptimo global.

Para ser función objetivo lineal también implica que una solución óptima sólo puede
ocurrir en un punto del conjunto de puntos factibles frontera.

Hay dos situaciones en las que una solución óptima no se puede encontrar. En primer
lugar, si las restricciones se contradicen entre sí (por ejemplo, x ≥ 2 y x ≤ 1), entonces
la región factible está vacía y no puede haber ninguna solución óptima, ya que no
puede haber solución. En este caso, la PL se dice no factible .

Alternativamente, el poliedro puede ser ilimitada en la dirección de la función objetivo


(por ejemplo, maximizar x 1 + 3 x 2 sujetos a x 1 ≥ 0, x 2 ≥ 0, x 1 + x 2 ≥ 10), en este
caso no existe una solución óptima desde arbitrariamente grandes soluciones de la
función objetivo puede ser construido, y el problema se dice a ilimitado .

Aparte de estas dos condiciones patológicas (que a menudo se eliminan por las
limitaciones de recursos inherentes en el problema que se modela como arriba), el
óptimo se alcanza siempre un vértice poliedro.

Sin embargo, la óptima no siempre es único: es posible tener un conjunto de


soluciones óptimas que cubren un borde o cara del poliedro, o incluso todo el poliedro
(Esta última situación puede ocurrir si la función objetivo es uniformemente igual a
una constante).

ALGORITMOS
El algoritmo simplex resuelve problemas de PL por la construcción de una solución
admisible en vértice poliedro, y entonces corre a través de los vértices del poliedro
que tienen valores sucesivamente más altos de la función objetivo para encontrar el
máximo.
Aunque este algoritmo es muy eficiente en la práctica, y está garantizado para
encontrar un óptimo global si ciertas condiciones para evitar los ciclos se toman, es
débil en el peor de los casos: Usted puede construir un problema de programación
lineal práctico para los que el método simplex realiza un número exponencial de
pasos en relación con el tamaño de la emisión.

De hecho, desde hace algún tiempo no se sabía si los problemas de programación


lineal fueron NP-completo o ha tenido solución en tiempo polinómico.

El primer algoritmo de programación lineal en el tiempo polinomio en el peor caso fue


propuesto por Leonid Khachiyan en 1979 . Se basaba en optimización no lineal de
Naum Shor, que es una generalización del método de elipsoide Arkadi Nemirovski,
uno de los ganadores del Premio de Teoría John von Neumann en 2003 , y D. Yudin.
Sin embargo, el rendimiento práctico es decepcionante algoritmo Khachiyan: en
general, el método simplex es más eficiente. Su importancia es que fomenta la
investigación de métodos de punto interior.A diferencia de algoritmo simplex, que
sólo avanza a lo largo puntos en el límite de la región factible, los métodos de punto
interior pueden moverse por el interior de la región factible.

En 1984 , Narendra Karmarkar propuso su método proyectivo, que se convirtió en el


primer algoritmo para un buen desempeño en la teoría y en la práctica: el peor de los
casos es la complejidad polinómica y los problemas prácticos de la experiencia
muestra que es razonablemente eficiente en comparación con el algoritmo simplex.

Dado que el método Karmarkar, se han propuesto y analizado muchos otros métodos
de punto interior. Un método popular es el método predictor-corrector de Mehrotra,
cuya actuación tiene un buen rendimiento en la práctica, aunque se sabe poco acerca
de ello en teoría.

La última opinión entre los estudiosos es que la eficiencia de las buenas


implementaciones de los métodos basados en simplex y los puntos interiores son
similares a la aplicación rutinaria de la programación lineal.

La solución de programación lineal se están utilizando diversos problemas de


optimización generalizados en la industria, tales como la optimización del flujo de
transporte, que puede transformarse en problemas de programación lineal sin
demasiadas dificultades.

VARIABLES ENTERAS
Si ninguna de las variables de problemas pertenecen al conjunto de los números
enteros, tenemos una programación lineal subclase llamada Programación Entera (IP)
o la programación lineal entera. A diferencia de la PL que se puede encontrar la
solución óptima en un tiempo razonable, muchos problemas de programación entera
se consideran NP-duro.

Si las variables son binarias, es decir, teniendo sólo los valores 0 (cero) o 1, tienen un
caso especial de PI, que también puede ser clasificado como NP-duro.
Cuando sólo algunas de las variables son números enteros y otra continua, tenemos la
“Programación Entera Mixta” (PIM).

Sin embargo, hay algunas clases de problemas que se pueden resolver perfectamente
en tiempo polinómico, tienen su propia estructura de la matriz llama matrices
totalmente unimodulares.

Si la estructura del problema permiten también es posible aplicar un algoritmo de


generación de columnas

Método del simplex

Es un procedimiento iterativo que permite ir mejorando la solución a


cada paso. El proceso concluye cuando no es posible seguir El método del simplex fue creado en
mejorando más dicha solución. 1947 por el matemático George
Dantzig .

Partiendo del valor de la función objetivo en un vértice cualquiera, el


El método del simplex se utiliza,
método consiste en buscar sucesivamente otro vértice que mejore al sobre todo, para resolver problemas
anterior. La búsqueda se hace siempre a través de los lados del de programación lineal en los que
polígono (o de las aristas del poliedro, si el número de variables es intervienen tres o más variables.
mayor). Cómo el número de vértices (y de aristas) es finito, siempre
se podrá encontrar la solución. El álgebra matricial y el proceso de
eliminación de Gauss-Jordan para
resolver un sistema de ecuaciones
El método del simplex se basa en la siguiente propiedad: si la función lineales constituyen la base del
método simplex.
objetivo, f, no toma su valor máximo en el vértice A, entonces hay una
arista que parte de A, a lo largo de la cual f aumenta.

Vamos a resolver mediante el método del 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

Se consideran las siguientes fases:

1. Convertir las desigualdades en igualdades


Se introduce una variable de holgura por cada una de las restricciones, para convertirlas en
igualdades, resultando el sistema de ecuaciones lineales:

2x + y + h = 18
2x + 3y + s = 42
3x +y + d = 24

2. Igualar la función objetivo a cero

- 3x - 2y + Z = 0

3. Escribir la tabla inicial simplex

En las columnas aparecerán todas las variables del problema y, en las filas, los coeficientes de las
igualdades obtenidas, una fila para cada restricción y la última fila con los coeficientes de la función
objetivo:

Tabla I . Iteración nº 1
Base Variable de decisión Variable de holgura Valores solución
x y h s d
h 2 1 1 0 0 18
s 2 3 0 1 0 42
d 3 1 0 0 1 24
Z -3 -2 0 0 0 0

4. Encontrar la variable de decisión que entra en la base y la variable de holgura que sale de
la base

A. Para escoger la variable de decisión que entra en la base, nos fijamos en la última fila, la
de los coeficientes de la función objetivo y escogemos la variable con el coeficiente
negativo mayor (en valor absoluto).
En nuestro caso, la variable x de coeficiente - 3.

Si existiesen dos o más coeficientes iguales que cumplan la condición anterior, entonces
se elige uno cualquiera de ellos.

Si en la última fila no existiese ningún coeficiente negativo, significa que se ha alcanzado


la solución óptima. Por tanto, lo que va a determinar el final del proceso de aplicación del
método del simplex, es que en la última fila no haya elementos negativos.

La columna de la variable que entra en la base se llama columna pivote (En color verde).

B. Para encontrar la variable de holgura que tiene que salir de la base, se divide cada término
de la última columna (valores solución) por el término correspondiente de la columna
pivote, siempre que estos últimos sean mayores que cero. En nuestro caso:
18/2 [=9] , 42/2 [=21] y 24/3 [=8]
Si hubiese algún elemento menor o igual que cero no se hace dicho cociente. En el caso
de que todos los elementos fuesen menores o iguales a cero, entonces tendríamos una
solución no acotada y no se puede seguir.

El término de la columna pivote que en la división anterior dé lugar al menor cociente


positivo, el 3, ya 8 es el menor, indica la fila de la variable de holgura que sale de la
base, d. Esta fila se llama fila pivote (En color verde).

Si al calcular los cocientes, dos o más son iguales, indica que cualquiera de las variables
correspondientes pueden salir de la base.

C. En la intersección de la fila pivote y columna pivote tenemos el elemento pivote


operacional, 3.

5. Encontrar los coeficientes de la nueva tabla.

Los nuevos coeficientes de x se obtienen dividiendo todos los coeficientes de la fila d por el pivote
operacional, 3, que es el que hay que convertir en 1.

A continuación mediante la reducción gaussiana hacemos ceros los restantes términos de su


columna, con lo que obtenemos los nuevos coeficientes de las otras filas incluyendo los de la
función objetivo Z.

También se puede hacer utilizando el siguiente esquema:

Fila del pivote:

Nueva fila del pivote= (Vieja fila del pivote) : (Pivote)

Resto de las filas:

Nueva fila= (Vieja fila) - (Coeficiente de la vieja fila en la columna de la variable entrante) X
(Nueva fila del pivote)

Veámoslo con un ejemplo una vez calculada la fila del pivote (fila de x en la Tabla II):

Vieja fila de s 2 3 0 1 0 42

- - - - - -

Coeficiente 2 2 2 2 2 2

x x x x x x

Nueva fila pivote 1 1/3 0 0 1/3 8

= = = = = =

Nueva fila de s 0 7/3 0 1 -2/3 26


Tabla II . Iteración nº 2
Base Variable de decisión Variable de holgura Valores solución
x y h s d
h 0 1/3 1 0 -2/3 2
s 0 7/3 0 1 -2/3 26
x 1 1/3 0 0 1/3 8
Z 0 -1 0 0 1 24

Como en los elementos de la última fila hay uno negativo, -1, significa que no hemos llegado
todavía a la solución óptima. Hay que repetir el proceso:

A. La variable que entra en la base es y, por ser la variable que corresponde al coeficiente -1
B. Para calcular la variable que sale, dividimos los términos de la última columna entre los
términos correspondientes de la nueva columna pivote:
2:1/3 [=6] , 26:7/3 [=78/7] y 8:1/3 [=8]
y como el menor cociente positivo es 6, tenemos que la variable de holgura que sale es h.
C. El elemento pivote, que ahora hay que hacer 1, es 1/3.

Operando de forma análoga a la anterior obtenemos la tabla:

Tabla III . Iteración nº 3


Base Variable de decisión Variable de holgura Valores solución
x y h s d
y 0 1 3 0 -2 6
s 0 0 -7 0 4 12
x 1 0 -1 0 1 6
Z 0 0 3 0 -1 30

Como en los elementos de la última fila hay uno negativo, -1, significa que no hemos llegado
todavía a la solución óptima. Hay que repetir el proceso:

A. La variable que entra en la base es d, por ser la variable que corresponde al coeficiente -1
B. Para calcular la variable que sale, dividimos los términos de la última columna entre los
términos correspondientes de la nueva columna pivote:
6/(-2) [=-3] , 12/4 [=3], y 6:1 [=6]
y como el menor cociente positivo es 3, tenemos que la variable de holgura que sale es s.
C. El elemento pivote, que ahora hay que hacer 1, es 4.

Obtenemos la tabla:

Tabla IV . Final del proceso


Base Variable de decisión Variable de holgura Valores solución
x y h s d
y 0 1 -1/2 0 0 12
d 0 0 -7/4 0 1 3
x 1 0 -3/4 0 0 3
Z 0 0 5/4 0 0 33

Como todos los coeficientes de la fila de la función objetivo son positivos, hemos llegado a la
solución óptima.

Los solución óptima viene dada por el valor de Z en la columna de los valores solución, en nuestro
caso: 33. En la misma columna se puede observar el vértice donde se alcanza, observando las
filas correspondientes a las variables de decisión que han entrado en la base: D(3,12)

* Si en el problema de maximizar apareciesen como restricciones inecuaciones de la forma: ax


+ by c; multiplicándolas por - 1 se transforman en inecuaciones de la forma - ax - by - c y
estamos en el caso anterior

* Si en lugar de maximizar se trata de un problema de minimizar se sigue el mismo proceso,


pero cambiando el sentido del criterio, es decir, para entrar en la base se elige la variable cuyo
valor, en la fila de la función objetivo, sea el mayor de los positivos y se finalizan las iteraciones
cuando todos los coeficientes de la fila de la función objetivo son negativos

Interpretación geométrica del método del simplex

Las sucesivas tablas que hemos construido van proporcionando el valor de la función objetivo en
los distintos vértices, ajustándose, a la vez, los coeficientes de las variables iniciales y de holgura.

En la primera iteración (Tabla I) han permanecido todos los coeficientes iguales, se ha calculado el
valor de la función objetivo en el vértice A(0,0), siendo este 0.

A continuación se desplaza por la arista AB, calculando el valor de f , hasta


llegar a B.
Este paso aporta la Tabla II.
En esta segunda iteración se ha calculado el valor que corresponde al vértice
B(8,0): Z=f(8,0) = 24

Sigue por la arista BC, hasta llegar a C, donde se para y despliega los datos
de la Tabla III.
En esta tercera iteración se ha calculado el valor que corresponde al vértice
C(6,6) : Z=f(6,6)=30.

Continua haciendo cálculos a través de la arista CD, hasta llegar al vértice D. Los datos que se
reflejan son los de la Tabla IV.
Concluye con esta tabla, advirtiendo que ha terminado (antes ha comprobado que la solución no
mejora al desplazarse por la arista DE)
El valor máximo de la función objetivo es 33, y corresponde a x = 3 e y = 12 (vértice D).

Si calculas el valor de la función objetivo en el vértice E(0,14), su valor no supera el valor 33.

S-ar putea să vă placă și