Sei sulla pagina 1di 5

Aplicación del algoritmo The Ford-Fulkerson en la

Optimización de la red de Abastecimiento de la


empresa PetroPerú
Aldahir Rojas Matos, Alfredo Vilca Callata, Alonso Meza Quevedo, Mauricio Romero Alania

Asignatura: Matemática Discreta

Escuela Profesional de Ingeniería Industrial

Facultad de Ingeniería Industrial y de Sistemas

Universidad Nacional de Ingeniería

RESUMEN Por ello en este trabajo estudiaremos lo que es la


investigación operativa en redes y qué mecanismos
La empresa PetroPerú es una empresa de propiedad podemos utilizar para resolver algunos de los
del Estado peruano y de derecho privado dedicada al problemas que se estudian en esta disciplina.
transporte, la refinación, la distribución y la
Para la elaboración del siguiente trabajo hemos
comercialización de combustibles y otros productos
aplicado lo aprendido en el curso de matemática
derivados del petróleo. Es la empresa estatal más
discreta, sobre máximo flujo, en la empresa
importante del Perú. Desde su creación, ha cumplido
PetroPerú. De esta manera podremos trabajar
la enorme responsabilidad de abastecer combustible
objetivamente, además se conocerá con mayor
a todo el territorio nacional, y de mantener una política
claridad el manejo y funcionamiento de una de las
de mejora continua y protección ambiental como parte
técnicas más usadas en este tipo de problemas.
de la estrategia de desarrollo sostenible.

Actualmente se ha inaugurado 2 tanques de


almacenamiento en el Terminal Callao, esto puede
PRESENTACIÓN DEL PROBLEMA
generar una desaceleración y estancamiento en las
áreas productivas de la empresa, sino se optimiza de PetroPerú surte gasolina que es enviada a los
la mejor manera su red de abastecimiento. Este diferentes tanques de almacenamiento a través de
suceso conlleva a que en el siguiente estudio se oleoductos.
realice una investigación aplicativa a la red de
abastecimiento de Petroperú, de manera que se En el mes de septiembre se han inaugurado 2 nuevos
pueda intervenir apropiadamente y desarrollar tanques, debido a que se espera un incremento en la
estrategias para el desarrollo óptimo del sistema de la demanda y producción del producto para así después
empresa. poder distribuirlo, sin embargo se tiene conocimiento
que esto puede generar retrasos y estancamiento en
INTRODUCCIÓN la producción. Por ello se ha decidido plantear la
siguiente problemática:
Los problemas de flujos en redes, a pesar de tener
antecedentes históricos como el problema de los ● ¿Qué modelo se puede implementar a la red
puentes de Konigsberg, tratado por Euler en el siglo de suministro de gasolina en la empresa
XVIII, o problemas de flujos eléctricos, analizados por PetroPerú con la finalidad de optimizar y
Gustav Kirchhoff en el siglo XIX, son estudiados como
automatizar ésta?
tales a partir de la década de los años cincuenta en el
marco de la investigación operativa.

Actualmente en consecuencia al enorme crecimiento


de las ciudades, la industria y el comercio se han
presentado problemas tal como lo es la operatividad
en las redes residuales.
OBJETIVOS una ruta de penetración con un flujo positivo neto que
una los vértices origen y destino. Este algoritmo se
Objetivo general: basa en dos conceptos intuitivos, el de una red
residual y el de una trayectoria aumentada. Algunas
Realizar el análisis, diseño e implementación
de sus características son:
de un software que permita obtener la
solución automatizada al problema del flujo ● El flujo es siempre positivo y con unidades
máximo, para lo cual se hará uso del enteras.
algoritmo de Ford-Fulkerson. ● El flujo a través de una arista es menor o igual que
l0061 capacidad.
Objetivo específico 1:
● El flujo que entra en un vértice es igual al que sale
Establecer los módulos que tendrá el de él.
software, así como la interacción entre ellos. Red residual.

Objetivo específico 2: Intuitivamente, dada una red de flujo y un flujo, la red


residual está formada por aristas que admiten más
Establecer las estructuras de datos a utilizar flujo. Más formalmente, supongamos que tenemos
para la implementación del algoritmo. una red de flujo G = (V, E) con una fuente s y un
sumidero t. Sea f un flujo en G y sean un par de
Objetivo específico 3:
vértices u, v V. La cantidad de flujo adicional que
Implementar el algoritmo de Ford-Fulkerson, podemos enviar de u a v sin exceder la
y explicar los principales conceptos y capacidad c(u, v) es la capacidad residual expresada
teoremas en los cuales se basa. como: cf(u, v) = c(u, v) - f (u, v).
Se define como como la red donde la capacidad de
cada una de las aristas se define como Cf (u, v) = c (u,
DESCRIPCIÓN DE LA SOLUCIÓN v) – f (u, v).

Se debe realizar el análisis para conocer cuál es el Camino de aumento. Dada una red de flujo G =
flujo máximo de abastecimiento (V, E) y un flujo f, un camino de aumento p es un
camino simple de s a t en la red residual Gf. Cada
Análisis de algunos conceptos básicos arista (u, v) en un camino de aumento admite un flujo
adicional positivo de u a v sin violar la restricción de
Flujo: Circulación de unidades homogéneas de un
capacidad de la arista.
lugar a otro.
Dada una red de flujo G = (V, E) con una fuente s y un
Capacidad de flujo: es la capacidad de unidades que
sumidero t y un flujo f, se puede demostrar que f es un
pueden entrar por el nodo fuente y salir por el nodo
flujo máximo en G si y solo si la red residual Gf no
destino.
contiene ningún camino de aumento.

Origen o fuente de flujo: nodo por el cual el flujo


Aplicaciones del Algoritmo de Ford-Fulkerson
ingresa.
Los problemas para resolver en esta edición son los
Destino o Sumidero de flujo: nodo por el cual el flujo de flujo máximo en una red de flujo.
sale.
❖ Redes de distribución de mercancías.
Capacidades residuales: capacidades restantes Una empresa tiene diferentes puntos de producción,
una vez que el flujo pasa el arco. diferentes puntos de almacenamiento y diferentes
puntos de venta. Las mercancías de trasladan desde
los puntos de producción a los puntos de
Algoritmo de Ford Fulkerson
almacenamiento, y posteriormente se distribuyen
El algoritmo de Ford-Fulkerson propone buscar entre los puntos de venta. Todo este proceso se
caminos en los que se pueda aumentar el flujo, hasta realiza a través de una red de distribución en la cual
que se alcance el flujo máximo. La idea es encontrar cada conexión tiene una capacidad determinada. El
problema de flujo máximo permite determinar cuál es Iteración 1: 1,5
el flujo de mercancías que se debe establecer entre
los diferentes puntos de conexión de tal manera que
no falten productos en los puntos de venta. Kmin : ( ,7): K=7

Otras posibles aplicaciones relacionadas son redes 𝐶15,51 : (7-7,0+7): (0,7)


de transmisión de datos, control de tráfico, problemas
de planificación, problemas de geometría que
encuentran aplicación en sistemas de radar,
localización de puntos débiles en una red de
distribución, de suministro, etc.
La distribución se presenta acorde al siguiente
diagrama

DIAGRAMA DE DISTRIBUCIÓN DE RED

Iteración 2: 1, 4, 3,5

Kmin : ( ,4,4): K=4

𝐶14,41 : (4-4,0+4): (0,4)

𝐶43,34 : (4-4,5+4): (0,9)

𝐶35,53 : (6-4,0+4): (2,4)


Iteración 0: 1, 2, 5

Kmin : ( ,8,5) K=5

𝐶12,21 : (8-5,0+5): (3,5)

𝐶25,52 : (5-5,0+5): (0,5)


𝐾𝑚𝑖𝑛 = ∑𝑛𝑖=1 5 + 7 + 4 + 2 + 1 = 19 galones por
hora
Iteración 3: 1,2,3,4,5

Kmin : ( ,3,5,5,9,2) K=2 Implementación del algoritmo en Python

𝐶12,21 : (3-2,5+2): (1,7) class Grafo:


def __init__(self,graf):
𝐶23,32 : (5-2,0+2): (3,2)
self.graf=graf
𝐶34,43 : (9-2,0+2): (7,2) self.fila=len(graf)

def BFS(self,ini,f,padre):
𝐶45,54 : (2-2,0+2): (0,2)
visitado=[False]*(self.fila)
c=[]
c.append(ini)
visitado[ini]=True

while c:

u=c.pop(0)

for i,val in enumerate(self.graf[u]):


if visitado[i]==False and val>0:
c.append(i)
visitado[i]=True
padre[i]=u

Iteración 4: 1,2,3,5 return True if visitado[f] else False

def fordfuck(self,origen,termino):
Kmin : ( ,1,3,2): K=1
padre=[-1]*(self.fila)
𝐶12,21 : (1-1,7+1): (0,8)
maxflujo=0
𝐶23,32 : (3-1,2+1): (2,3)
while self.BFS(origen,termino, padre):
𝐶35,53 : (2-1,4+1): (1,5) rutaflu=float("Inf")
s=termino
while (s!=origen):
rutaflu=min(rutaflu,self.graf[padre[s]][s])
s= padre[s]

maxflujo+=rutaflu
v=termino
while v!=origen:
u=padre[v]
self.graf[u][v]-=rutaflu
self.graf[v][u]+=rutaflu
v=padre[v]

return maxflujo

grafico=[[0,8,0,4,7],[0,0,5,0,5],[0,0,0,5,6],[0,0,4,0,2],[0
,0,0,0,0]]

g=Grafo(grafico)
origen=0 ● Red de flujo, disponible en:
termino=4 https://es.wikipedia.org/wiki/Red_de_flujo
● Capítulo 5: Redes de flujo, disponible en:
print("El maximo flujo es ", g.fordfuck(origen,termino))
http://hydrogeologistswithoutborders.org/wor
dpress/1979-espanol/capitulo-5/

CONCLUSIONES

● Dada la cantidad de información e iteraciones


que se utilizan en el problema del flujo
máximo, y en los problemas de investigación
de operaciones en general, se hace casi
imposible la solución de dichos problemas
manualmente, por lo cual se hace necesario
que estos sean resueltos a través de
programas computacionales.

● Asimismo, dada la cantidad de datos que


puede contener una red, ya sea para el
problema del flujo máximo o para otros
problemas de la investigación de
operaciones, podría darse el caso que los
métodos que calculan la solución exacta no
encuentren resultado por la cantidad de
recursos que requerirían, por lo que podría
ser necesario que se requieran nuevos
algoritmos que, si bien no obtengan la
solución exacta, encuentren soluciones
aproximadas suficientemente adecuadas.

● En base al resultado la empresa del sector


hidrocarburos o cualquier otra empresa
tendrá un panorama claro, en donde de
acuerdo con el incremento que se tendrá de
su producto poder decidir hasta donde se
puede comprometer sin tener problemas para
su abasto y de esta forma maximizar sus
ganancias, además de una mejora en la
logística.

BIBLIOGRAFÍA

● Algoritmo de Ford-Fulkerson, disponible en:


http://arodrigu.webs.upv.es/grafos/doku.php?
id=algoritmo_ford_fulkerson
● Ford-Fulkerson algorithm, disponible en:
https://en.wikipedia.org/wiki/Ford%E2%80%9
3Fulkerson_algorithm

Potrebbero piacerti anche