Relación de programas pertenecientes al libro Optimización Lineal: teoría, métodos y modelos.
|
| Algoritmos Simplex para filas ordinario (pag 233) |
| elsimplex.zip |
Este programa resuelve el problema de programacion
lineal dado en la forma Min c'x, s.a.: a*x>=b. Se ejecuta como una
funcion cuyos argumentos son la matriz a, el vector de segundos miembros,
b, y la funcion objetivo, c. La matriz de restricciones las contiene
todas, incluso las que hubiera de signo. Utiliza el metodo de las dos
fases descrito en Goberna, Jornet, Puente de 2004. En su ejecución el
programa principal llama (dos veces) a "simplexf1.m", que ejecuta el
algoritmo del pivote y a "codimensión.m", que decide cuando una semirrecta
de mejora es arista.
|
| simplex2.zip |
Resuelve
el problema de PL(Programación Lineal):
Min c'*x
s.a. A*x>= b'
donde ,"A" es una matriz de orden nxk con los coeficientes de todas las
restricciones(>=), "b" es el vector fila de términos
independientes
y "c" es el vector fila de los coeficientes de la función
objetivo.
Es un metodo de descripcion completa de vertices. Es muy eficiente
cuando se aplica a problemas con un numero reducido de ecuaciones
(hasta 40), pero salvo en casos de inconsistencia, tambien lo es para
cuando el numero de ecuaciones es bastante mayor.. |
| Algoritmo de eliminación de Fourier (pag 107) |
| fourier.zip |
Programa: met_fourier.m.
Este programa proporciona una solución, si existe, de un sistema de inecuaciones
lineales. En caso de ser inconsistente, también lo advierte.
|
| Algoritmo de relajación (pag 277) |
| relajacion.zip |
xs=relajacion(A,b,x0,l,tol) ,obtiene un punto de la región factible del siguiente sistema
de inecuaciones lineales:
A*x>=b'
donde "A" es una matriz de orden nxk con los coeficientes de las restricciones,
y "b" es el vector fila de términos independientes.
Y este punto de la región factible
lo obtiene a partir de un punto genérico,x0, introducido como vector
fila.
|
| Algoritmo de purificación (pag 210) |
| purificacion.zip |
xr=purification(A,b,x0) ,obtiene un vértice del siguiente sistema de inecuaciones lineales:
A*x>= b'
donde "A" es una matriz de orden nxk con los coeficientes de las restricciones(>=),
y "b" es el vector fila de términos independientes.
Y este vértice lo obtiene a partir de un punto factible, x0, que se introduce como vector fila.
|
| Métodos interiores (pag 303) |
| newtoncompleto.zip |
Algoritmo primal-dual con paso de Newton completo. Función principal: newton_completo.m
Se parte de un programa de P.L. en forma canónica
(P) Min c'x
s.a. a(i)'x >= b(i) , i perteneciente a I
y se busca determinar una solución óptima del mismo mediante la generación de una sucesión de
puntos que se aproximan al camino central del problema y cuyo límite es dicha solución óptima.
El programa solicita primeramente los coeficientes de las restricciones, los vectores ai, que deben
ser introducidos en una matriz como vectores fila. A continuación se debe introducir el vector de
términos independientes, como un vector fila. Además el programa solicita el vector de costes de la
función objetivo, el cual debe ser introducido como un vector fila. Finalmente, el usuario, tras
solicitárselo el programa, debe indicar que valor de precisión desea utilizar para aplicar el
método. Éste debe ser del orden de 0.00001.
El programa en el caso de que sea posible devuelve la solución óptima del problema así como un
valor que si es positivo el problema, y su dual asociado habrán resultado ser consistentes. Si el
valor está muy cercano a cero el problema podría ser inconsistente. Finalmente el programa devuelve
el tiempo de ejecución del metodo.
En el caso de que no se haya podido determinar una solución óptima el programa indica si el
problema ha resultado inconsistente, en el caso de que se haya podido determinar, o la inconsistencia
del problema dual asociado.
|
| newtonparametrico.zip |
Algoritmo primal-dual de barrera logaritmica con busqueda lineal. Función principal: busqueda_lineal.m
Partimos de un problema de P.L. arbitrario de la forma:
(P) Min c'x
s.a. Ax >= b
Se busca determinar una solución óptima del mismo mediante la generación de una sucesión de
puntos que se aproximan al camino central del problema y cuyo límite es dicha solución óptima.
El programa solicita primeramente los coeficientes de las restricciones, los vectores ai, que deben
ser introducidos en una matriz como vectores fila. A continuación se debe introducir el vector de
términos independientes, como un vector fila. Además el programa solicita el vector de costes de
la función objetivo, el cual debe ser introducido como un vector fila. Finalmente, el usuario,
tras solicitárselo el programa, debe indicar que valor de precisión desea utilizar para aplicar el
método. Éste debe ser del orden de 0.00001.
El programa en el caso de que sea posible devuelve la solución óptima del problema así como un
valor que si es positivo el problema, y su dual asociado habrán resultado ser consistentes. Si el
valor está muy cercano a cero el problema podría ser inconsistente. Finalmente el programa devuelve
el tiempo de ejecución del metodo.
En el caso de que no se haya podido determinar una solución óptima el programa indica si el
problema ha resultado inconsistente en el caso de que se haya podido determinar o la inconsistencia
del problema dual asociado.
|