Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TRABAJO DE:
“TEORIA DE DESICIONES”
PRESENTADO POR:
PUNO – PERU
2017
2
Índice:
Introducción...........................................................................................................................3
Método de Vogel....................................................................................................................5
El mayor castigo entre filas y columnas se encuentra en la segunda columna. De ambas
celdas, la de mínimo costo es la de costo unitario de 7, buscando la máxima asignación por
fila y por columna controla la columna con una asignación máxima de 5 unidades.............6
Algoritmo del Metodo Vogel en Java.....................................................................................8
• Para minimizar el tiempo ocioso total de las máquinas............................................11
• Para minimizar el tiempo de procesamiento y establecer la secuencia de un grupo de
trabajos en dos centros de trabajo.....................................................................................11
• Minimizar el tiempo muerto total en los centros de trabajo......................................11
Fuente: Elaboración propia ..............................................................................................12
REGLA DE JOHNSON AMPLIADA.................................................................................12
Ejemplo............................................................................................................................12
Lista de referencias...............................................................................................................17
3
INTRODUCCIÓN
Asociados a los dos problemas antes descritos, se obtendrán los modelos correspondientes para
ser resueltos mediante el método de la esquina noroeste, método de Vogel y método de Modi
para el problema de transporte; mientras que utilizaremos el Método Húngaro para el problema
de asignación.
Dedicatoria
A mis profesores que día a día me enseñan y de esta manera salir bien preparado al campo laboral.
Método de Vogel
Vargas, J. R. (2014) dice que “Este método si considera los costos, por tanto, entrega
una mejor solución factible inicial que la esquina noroeste. El método consiste en la
realización de un algoritmo que consta de 3 pasos fundamentales y 1 más que asegura el
ciclo hasta la culminación del método”.
SUAREZ, A. (1972) dice que “Este método requiere mayores esfuerzos de cálculos
que el MEN; sin embargo, permite obtener una solución inicial mejor que en el caso anterior
puesto que tiene en cuenta la información de los costes de transporte, mediante los cálculos
de las llamadas penalizaciones de fila (pfi ) y columna (pc j ), los cuales representan el
posible coste de penalización que se obtendría por no asignar unidades a transportar a una
determinada posición. Ha sido el método más popular durante muchos años, en parte porque
es relativamente fácil hacerlo a mano. Este método también es denominado método de
BalasHammer”.
Paso 1. Para cada fila (columna) determine una medida de penalización restando el elemento
de costo unitario mínimo en la fila (columna) del siguiente elemento de costo mínimo en la
misma fila (columna).
Paso 2. Identifique la fila o columna con la penalización máxima, que rompa los empates
arbitrariamente. Asigne lo más posible a la variable con el costo unitario mínimo en la fila o
columna seleccionada. Ajuste la oferta y la demanda, y tache la fila o columna satisfecha. Si
una fila y una columna se satisfacen al mismo tiempo, sólo se tacha una de las dos, y a la fila
restante (columna) se le asigna una oferta (demanda) cero. Paso
3. (a) Si exactamente una fila o columna con oferta o demanda cero permanece sin tachar,
deténgase.
(b) Si una fila (columna) con oferta (demanda) positiva permanece sin tachar, determine las
variables básicas en la fila (columna) mediante el método del costo mínimo. Deténgase.
(c) Si todas las filas y columnas no tachadas tienen oferta y demanda cero (restantes),
determine las variables básicas cero por el método del costo mínimo. Deténgase.
El método comienza calculando por cada columna y por cada fila el castigo o penalti. El castigo
se calcula como la diferencia entre los dos costos menores en la columna o en la fila según
corresponda (Universidad Santarıa, 2002).
A continuación, se determina la fila o columna con un mayor valor de castigo. Luego, se
selecciona como variable basal la celda con menor costo de la fila o columna, según
corresponda, y se le asigna la máxima cantidad posible. Una vez realizada la asignación, se
descarta la fila o columna cuya oferta o demanda haya sido completa. Se recalcula la demanda u
oferta disponible en la fila o columna. La primera asignación se ha completado.
Se vuelven a calcular los castigos por fila y por columna y se repite el procedimiento descrito
hasta completar las asignaciones posibles en la tabla. La ventaja del método de Vogel por sobre
el de la Esquina Noroeste es que va adelante algunas iteraciones y por lo tanto se obtiene una
solución inicial mejor. Eventualmente puede ocurrir que aplicando el método se llegue
directamente a la solución óptima. La desventaja del método de Vogel radica en que sin duda es
más complejo que el de la esquina noroeste, por lo tanto, es más difícil de implementar y más
proclive a errores en la aplicación. Para ilustrar la aplicación del método veamos un ejemplo.
Consideremos el siguiente tablea de transporte:
De acuerdo al método, en primer lugar, se calculan los castigos por fila y por columna:
El mayor castigo entre filas y columnas se encuentra en la segunda columna. De ambas celdas,
la de mínimo costo es la de costo unitario de 7, buscando la máxima asignación por fila y por
columna controla la columna con una asignación máxima de 5 unidades.
De los castigos recalculados, el mayor corresponde a la tercera columna. En este caso la celda
de menor costo es la de la primera fila. Verificando la asignación máxima por fila y por
columna, controla la fila con una asignación máxima de 5 unidades.
Luego, el único castigo disponible (y por lo tanto el mayor) corresponde a la primera columna.
En este caso, el mínimo costo corresponde a la primera fila. La máxima cantidad posible a
asignar por columna es 15, pero por fila es 0. Por lo tanto, debemos asignar 0 unidades a la
celda de menor costo.
En los casos de maximización, es preciso alterar los métodos para obtener una solución inicial
factible. En el caso del método de la Esquina Noroeste, se debe intentar asignar la mayor
cantidad posible a las casillas con mayor cij. En el caso del método de Vogel, los castigos se
calculan entre los dos mayores beneficios por fila y por columna. Al igual que el método de la
Esquina Noroeste, se busca asignar la mayor cantidad posible a las casillas con mayor beneficio.
import org.gnu.glpk.*;
public class Final_ILP_GlpkSolverDemo
{
public static void main(String args[])
{
//Setting the classpath
//javac -classpath .;glpk.jar GlpkSolverDemo.java
//java -classpath .;glpk.jar GlpkSolverDemo
// . refers to current directory
int[] ia = new int[1+1000];
int[] ja = new int[1+1000];
double[] ar= new double[1+1000];
double z;
double x1;
double x2;
double x3;
GlpkSolver solver = new GlpkSolver();
solver.setClss(GlpkSolver.LPX_MIP);
solver.setObjName(“sample”);
solver.setObjDir(GlpkSolver.LPX_MAX);
solver.addRows(3);
solver.setRowName(1,”p”);
solver.setRowBnds(1,GlpkSolver.LPX_UP,0.0,100.0);
solver.setRowName(1,”q”);
solver.setRowBnds(2,GlpkSolver.LPX_UP,0.0,600.0);
solver.setRowName(1,”r”);
solver.setRowBnds(3,GlpkSolver.LPX_UP,0.0,300.0);
solver.addCols(3);
solver.setColName(1,”x1″);
solver.setColBnds(1,GlpkSolver.LPX_LO,0.0,0.0);
solver.setObjCoef(1,10.0);
solver.setColName(2,”x2″);
solver.setColBnds(2,GlpkSolver.LPX_LO,0.0,0.0);
solver.setObjCoef(2,6.0);
solver.setColName(3,”x3″);
solver.setColBnds(3,GlpkSolver.LPX_LO,0.0,0.0);
solver.setObjCoef(3,4.0);
solver.setColKind(1, GlpkSolver.LPX_IV);
solver.setColKind(2, GlpkSolver.LPX_IV);
solver.setColKind(1, GlpkSolver.LPX_IV);
ia[1]=1; ja[1]=1; ar[1]=1.0;
ia[2]=1; ja[2]=2; ar[2]=1.0;
ia[3]=1; ja[3]=3; ar[3]=1.0;
ia[4]=2; ja[4]=1; ar[4]=10.0;
ia[5]=3; ja[5]=1; ar[5]=2.0;
ia[6]=2; ja[6]=2; ar[6]=4.0;
ia[7]=3; ja[7]=2; ar[7]=2.0;
ia[8]=2; ja[8]=3; ar[8]=5.0;
ia[9]=3; ja[9]=3; ar[9]=6.0;
solver.loadMatrix(9,ia,ja,ar);
solver.simplex();
// These values give LP sol. Thats why, I am not printing them.
z=solver.getObjVal();
x1=solver.getColPrim(1);
x2=solver.getColPrim(2);
x3=solver.getColPrim(3);
solver.integer();
solver.printMip(“sol_ilp.txt”);
solver.deleteProb();
}
1 Algoritmo De Johnson
El algoritmo de Johnson es una forma de encontrar el camino más corto entre todos los
pares de vértices de un grafo dirigido disperso. Permite que las aristas tengan pesos negativos, si
bien no permite ciclos de peso negativo.
Consistente en ordenar n trabajos seriados independientes en 2 máquinas tal que minimice el
tiempo de fluido máximo; cada trabajo requiere de dos procesos secuenciales distintos,
realizándose el primero en una máquina y el siguiente en la otra. La secuencia de los procesos
no se altera.
Sea t [ij] el tiempo de proceso j (j=1,2), del trabajo i, (1, 2,…, n). El algoritmo que resuelve este
problema, diseñado por Johnson prosigue de la siguiente manera:
Regla de Johnson
PASOS
1. Todos los trabajos se deben colocar en una lista, así como el tiempo que requiere cada
a la primera máquina, el trabajo se programa primero. Si el menor tiempo cae con la segunda
4. Aplicar los pasos 2 y 3 para los trabajos restantes, trabajando hacia el centro de la
secuencia.
Fuente: Elaboración propia
1. El tiempo de proceso más corto en la máquina 1 es >= tiempo más largo en la máquina
2
2. El tiempo de proceso más corto en la máquina 3 es >= tiempo más largo en la máquina
2
Ejemplo
Seis trabajos deben pasar por dos máquinas herramientas diferentes, pero la secuencia
Maquina 1 4 8 1 7 4 5
Maquina 2 6 2 3 9 2 10
algoritmo de Johnson
Solución
Iteración 1
1.- Sea k =1 y p =6
2.- El mínimo valor tij corresponde a t31 = 1. Como j =1, se asigna el primer lugar (k
Iteración 2
1.- Sea k =2 y p =6
2.- El mínimo valor tij corresponde a t52 = 2. Como j =2, se asigna el sexto lugar (p =6)
al quinto trabajo.
1.- Sea k =2 y p =5
2.- El mínimo valor tij corresponde a t22 = 2. Como j =2, se asigna el quinto lugar (p
Iteración 4
1.- Sea k =2 y p =4
2.- El mínimo valor tij corresponde a t14 = 4. Como j =1, se asigna el segundo lugar (k
Iteración 5
1.- Sea k =3 y p =4
2.- El mínimo valor tij corresponde a t61 = 1. Como j =1, se asigna el tercer lugar (k =3)
al sexto trabajo.
Ejemplo en c++
#include<iostream>
#include<conio.h>
using namespace std;
Moodie and Young, cited in W Bolton, “Production planning and Control”, Longman, 1994