viernes, 20 de junio de 2014

Publicado viernes, 20 de junio de 2014 por con 18 comentarios

Método Coste Mínimo Java

En esta ocasiona comparto el método del coste mínimo en un problema de transporte.

Modelos de Asignación y transporte.
El modelo de transporte es un tipo particular o especial de los modelos de programación lineal, busca determinar un plan de transporte de una mercancía de varias fuentes a varios destinos. Los componentes del modelo son:
1.- Nivel o cantidad de oferta en cada fuente.
2.- Nivel o cantidad de demanda en cada destino.
3.- El costo de transporte unitario de la mercancía desde las fuentes cada destino.

Al haber sólo una mercancía, un destino puede recibir su demanda de una o más fuentes. El objetivo del modelo es el de determinar la cantidad que se enviará de cada fuente a cada destino, tal que se minimice el costo del transporte total.
El modelo parte de la siguiente suposición básica:

“El costo del transporte en una ruta o dirección es directamente proporcional al número de unidades transportadas”. El tipo de unidad de transporte variará dependiendo del tipo de mercancía que se transporte.

Un modelo de transporte se puede representar como una red o grafo, con m fuentes y n destinos. Cada fuente y cada destino están representados por un nodo, estos nodos se unen por un arco que representa la ruta por la cual se transporta la mercancía.

Si tenemos:
ai= Cantidad de oferta en la fuente i.
bj = Cantidad de demanda en el destino j.
Cij= Costo de transporte unitario entre la fuente i y el destino j.
Xij = Cantidad transportada desde la fuente i al destino j,

Entonces, el modelo general de Programación Lineal que representa el modelo de transporte es:


Comparto la solucion del metodo del coste minimo, implementado en java graficamente con swing.

Este proyecto lo hice como trabajo para la universidad, asi que puede puede estar sujeto a correcciones, espero sea de utilidad

ALGORITMO DE RESOLUCIÓN DEL COSTO MÍNIMO

PASO 1:

De la matriz se elige la ruta (celda) menos costosa (en caso de un empate, este se rompe arbitrariamente) y se le asigna la mayor cantidad de unidades posible, cantidad que se ve restringida ya sea por las restricciones de oferta o de demanda. En este mismo paso se procede a ajustar la oferta y demanda de la fila y columna afectada, restándole la cantidad asignada a la celda.

PASO 2:

En este paso se procede a eliminar la fila o destino cuya oferta o demanda sea 0 después del "Paso 1", si dado el caso ambas son cero arbitrariamente se elige cual eliminar y la restante se deja con demanda u oferta cero (0) según sea el caso.

PASO 3:

Una vez en este paso existen dos posibilidades, la primera que quede un solo renglón o columna, si este es el caso se ha llegado al final el método, "detenerse".

La segunda es que quede más de un renglón o columna, si este es el caso iniciar nuevamente el "Paso 1".


EJEMPLO DEL MÉTODO DEL COSTO MÍNIMO

Por medio de este método resolveremos el problema de transporte propuesto y resuelto en módulos anteriores mediante programación lineal.

EL PROBLEMA

Una empresa energética colombiana dispone de cuatro plantas de generación para satisfacer la demanda diaria eléctrica en cuatro ciudades, Cali, Bogotá, Medellín y Barranquilla. Las plantas 1,2,3 y 4 pueden satisfacer 80, 30, 60 y 45 millones de KW al día respectivamente. Las necesidades de las ciudades de Cali, Bogotá, Medellín y Barranquilla son de 70, 40, 70 y 35 millones de Kw al día respectivamente.

Los costos asociados al envío de suministro energético por cada millón de KW entre cada planta y cada ciudad son los registrados en la siguiente tabla.

Formule un modelo de programación lineal que permita satisfacer las necesidades de todas las ciudades al tiempo que minimice los costos asociados al transporte.

SOLUCIÓN PASO A PASO

Luego esa cantidad asignada se resta a la demanda de Bogotá y a la oferta de la "Planta 3", en un proceso muy lógico. Dado que Bogotá se queda sin demanda esta columna desaparece, y se repite el primer proceso.

Nuevo proceso de asignación

Nuevo proceso de asignación

Nuevo proceso de asignación

Una vez finalizado el cuadro anterior nos daremos cuenta que solo quedará una fila, por ende asignamos las unidades y se ha terminado el método.

El cuadro de las asignaciones (que debemos desarrollarlo paralelamente) queda así:

Los costos asociados a la distribución son:

      edit

18 comentarios:

  1. Hola amigo buen tuto.
    ¿podrias pasar el codigo fuente porfavor? te lo agradeceria mucho.
    Es para uso academico mi correo es martin90sanchez@gmail.com
    saludos!!

    ResponderBorrar
  2. javierch_1994@hotmail.com amigo enviame el codigo por favor

    ResponderBorrar
  3. Me podrias pasar el codigo fuente por favor amigo mi correo es ds9_316@hotmail.com por favor

    ResponderBorrar
  4. Estaba pensando encomo implementar esto en un java... tienes el codigo por ahi amigo?

    ResponderBorrar
  5. Me podrias pasar el codigo fuente por favor amigo mi correo es saulmejia1994@gmail.com por favor

    ResponderBorrar
  6. estaria agradecido eternamente si pudieras enviarme el codigo para fines educativos kedahevi@hotmail.com

    ResponderBorrar
  7. porfavor enviame el codigo fuente a mi correo lu_lu_lu_lu@outlook.com

    ResponderBorrar
  8. Podrias pasarme el codigo fuente a mi coreo por favor es: miguelchile.95@gmail.com

    ResponderBorrar
    Respuestas
    1. Viejo...tenes el codigo que me pudieras hacer favor de pasarmelo, urge y es para fines academicos... te lo agradeceria bastante

      Borrar
    2. no recibí ninguna respuesta en mi correo lo siento

      Borrar
    3. Hola no he podido responder, no sabia que estaba caído el link de Dropbox, me han eliminado la cuenta, resubi a drive el ejecutable del método, el código no pude recuperarlo, en el siguiente link pueden descargar el ejecutable https://drive.google.com/file/d/0ByJyTQMNYbY-dXZZY3pvdWlFTDQ/view?usp=sharing

      Borrar
  9. Es de mucha ayuda tu informacion y te lo agradezco, porfavor amigo enviame el archvio es para tarea de la U y tengo demasiados por el momento necesito ayuda... Mi correo es luishd96.85@gmail.com te lo agradeceria mucho viejo y muchas gracias

    ResponderBorrar
    Respuestas
    1. Hola no he podido responder, no sabia que estaba caído el link de Dropbox, me han eliminado la cuenta, resubi a drive el ejecutable del método, el código no pude recuperarlo, en el siguiente link puedes descargar el ejecutable https://drive.google.com/file/d/0ByJyTQMNYbY-dXZZY3pvdWlFTDQ/view?usp=sharing

      Borrar
    2. Esta bien, muchas gracias, te lo agradezco (Y)

      Borrar
  10. hola amigo
    me podrias mandar el programa ejecutable por email te lo voy agradecrer mucho mi email es franny_00@hotmail.es

    ResponderBorrar
  11. hola amigo muy buen tuto me podrias pasar tu codigo este es mi correo ramsherjes09@gmail.com te agradeceria muchisimo

    ResponderBorrar
  12. ¿Podrías compartirme el código?, por favor
    Mi correo es janyjoj8@gmail.com

    ResponderBorrar
  13. Con el Java Decompiler sacan el codigo hombre.... pero se ve que ese codigo no es nada del autor...en solucion.java se ve codigo tomado de otros >> favor de referenciar SIEMPRE en los comentarios la FUENTE del codigo y ser mas honestos...

    ResponderBorrar