Optimización de Rutas para el Transporte de Energía con Python

 

Optimización de Rutas para el Transporte de Energía con Python

Introducción:

En esta novena entrada, abordaremos la optimización de rutas para el transporte de energía utilizando Python. Exploraremos cómo la programación lineal puede ser aplicada para minimizar costos y maximizar la eficiencia en la distribución de energía.

Optimización de Rutas para el Transporte de Energía con Python:

1. Definición del Problema:

  • Supongamos que tenemos una red de distribución de energía con diferentes nodos de generación y consumo. Definiremos datos ficticios para representar los costos de transporte entre nodos y las capacidades de generación y demanda:

import pandas as pd
from scipy.optimize import linprog # Crear datos ficticios de la red de distribución
nodos = ['Generador1', 'Generador2', 'Generador3', 'Consumidor1', 'Consumidor2']
capacidad_generacion = [200, 150, 180, 0, 0]
demanda = [0, 0, 0, 120, 100] costos_transporte = pd.DataFrame({
'Desde': ['Generador1', 'Generador1', 'Generador2', 'Generador2', 'Generador3'],
'Hasta': ['Consumidor1', 'Consumidor2', 'Consumidor1', 'Consumidor2', 'Consumidor2'],
'Costo': [8, 10, 6, 7, 9]
})

2. Formulación del Problema de Optimización:

  • Utilizaremos la biblioteca scipy para formular y resolver el problema de programación lineal:

# Formular el problema de optimización lineal
c = costos_transporte['Costo'].values
A_eq = [
[1, 0, 0, -1, 0],
[0, 1, 0, 0, -1],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1]
]
b_eq = capacidad_generacion + demanda
# Resolver el problema de optimización
resultado_optimizacion = linprog(c, A_eq=A_eq, b_eq=b_eq)


3. Interpretación de Resultados:

  • Interpretaremos los resultados de la optimización para determinar las cantidades óptimas de transporte entre nodos:

# Extraer resultados
cantidades_optimas = resultado_optimizacion.x
coste_total_optimo = resultado_optimizacion.fun
# Mostrar resultados
print("Cantidades Óptimas de Transporte:")
for i, (desde, hasta) in enumerate(zip(costos_transporte['Desde'], costos_transporte['Hasta'])):
print(f"{desde} -> {hasta}: {cantidades_optimas[i]} unidades")
print(f"\nCosto Total Óptimo de Transporte: {coste_total_optimo} unidades")

4. Visualización de Rutas Óptimas:

  • Utilizaremos Matplotlib y NetworkX para visualizar las rutas óptimas en la red de distribución:

import networkx as nx
import matplotlib.pyplot as plt
# Crear un grafo dirigido ponderado
G = nx.DiGraph()
for i, row in costos_transporte.iterrows():
G.add_edge(row['Desde'], row['Hasta'], weight=row['Costo'])
# Visualización de la red y las cantidades óptimas de transporte
plt.figure(figsize=(10, 8))
pos = nx.spring_layout(G)
nx.draw(G, pos, with_labels=True, node_size=800, node_color='lightblue', font_size=8, font_color='black')
edge_labels = {(row['Desde'], row['Hasta']): f"{cantidades_optimas[i]:.2f}" for i, row in costos_transporte.iterrows()}
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_color='red')
plt.title('Rutas Óptimas de Transporte de Energía')
plt.show()

Conclusión:

Hemos abordado la optimización de rutas para el transporte de energía, minimizando costos y maximizando eficiencia. Python, con sus bibliotecas especializadas, se revela como una herramienta poderosa para abordar problemas de optimización en el campo de la distribución de energía. En futuras entradas, exploraremos aplicaciones más avanzadas de la programación lineal en la industria de la energía.

¡Sigue explorando las capacidades de Python en la optimización de rutas!



Comentarios