# Solucionador del problema de transporte (flujo de costo mínimo)

Resuelve el problema de transporte balanceado como un flujo de costo mínimo (2–8 orígenes × 2–8 destinos; exige oferta total = demanda total y avisa si hay que añadir filas/columnas ficticias): cada aumento envía por el camino más corto de la red residual (SPFA tolera costos negativos en arcos residuales) y los negativos de las distancias acumuladas son exactamente los duales MODI (u_i, v_j). Muestra cada camino aumentante, el plan completo de envíos, los totales por fila/columna y la matriz de costos reducidos con el certificado de optimalidad (todos ≥ 0, = 0 en celdas básicas). Clásico: ofertas [30,40,30], demandas [20,30,30,20], costos [[2,3,1,4],[4,2,5,3],[3,1,4,2]] → costo total mínimo 200.

> Página canónica: https://elysiatools.com/es/tools/transportation-problem

- **Categoría:** Math & Numbers

- **Palabras clave:** problema de transporte, flujo de costo mínimo, método modi, método uv, variables duales, investigación de operaciones, logística, plan de envíos, oferta demanda

## Descripción general

El solucionador del problema de transporte optimiza la distribución de bienes entre múltiples orígenes y destinos minimizando el costo total mediante algoritmos de flujo de costo mínimo. La herramienta procesa matrices de costos de 2 a 8 orígenes por 2 a 8 destinos con oferta y demanda balanceadas, detallando los aumentos por caminos residuales más cortos, las variables duales MODI (u_i, v_j), la tabla de asignación final y la matriz de costos reducidos que certifica la optimalidad.

## Entradas

- **Matriz de costos (filas = orígenes, una por línea)** (textarea): Unit shipping cost from each source (row) to each destination (column). 2–8 rows × 2–8 columns.
- **Oferta (por origen)** (text): Amount available at each source, one per matrix row (non-negative).
- **Demanda (por destino)** (text): Amount required at each destination, one per matrix column (non-negative).
- **Decimales** (number)

## Cuándo usarlo

- Cuando necesitas diseñar un plan de distribución logística de costo mínimo entre almacenes y puntos de venta con oferta y demanda conocidas.
- Para verificar ejercicios académicos de investigación de operaciones mediante el método MODI, el método u-v o algoritmos de flujo en redes.
- Al auditar rutas de transporte para comprobar si la asignación actual cumple con el certificado de optimalidad de costos reducidos.

## Cómo funciona

- Introduce la matriz de costos unitarios de transporte por filas (de 2×2 hasta 8×8 celdas).
- Ingresa los valores numéricos correspondientes a la oferta total de cada origen y la demanda de cada destino, asegurándote de que ambas sumas sean equivalentes.
- Configura la precisión decimal deseada (entre 0 y 8 decimales) para la salida de los cálculos.
- Ejecuta el cálculo para obtener el desglose paso a paso de los caminos aumentantes, el plan de asignación óptimo, las variables duales y la matriz de costos reducidos.

## Casos de uso

- Planificación de despacho desde centros de distribución regionales hacia tiendas minoristas locales con capacidades fijas.
- Resolución y validación paso a paso de asignaciones de transporte en asignaturas universitarias de investigación operativa.
- Evaluación del impacto en los costos logísticos totales ante variaciones en las tarifas de envío por ruta.

## Preguntas frecuentes

### ¿Qué ocurre si la oferta total no coincide con la demanda total?

La herramienta requiere que la instancia esté balanceada; si hay discrepancias, debes agregar una fila o columna ficticia con costo cero para compensar la diferencia.

### ¿Cuál es el tamaño máximo de matriz soportado?

Soporta redes desde 2 orígenes × 2 destinos hasta un máximo de 8 orígenes × 8 destinos.

### ¿Cómo calcula el solucionador las variables duales MODI (u_i, v_j)?

Las variables duales se obtienen a partir de los negativos de las distancias acumuladas en el camino más corto de la red residual (SPFA).

### ¿Cómo se comprueba que el resultado es óptimo?

El resultado incluye una matriz de costos reducidos donde todos los valores son mayores o iguales a cero, y exactamente cero en las celdas básicas asignadas.

### ¿Se admiten valores decimales en los costos o capacidades?

Sí, el solucionador acepta cantidades y costos con decimales, permitiendo ajustar la precisión del resultado final entre 0 y 8 decimales.

## Herramientas relacionadas

- [Solucionador de programación lineal por simplex (dos fases)](https://elysiatools.com/es/tools/linear-programming-simplex): Resuelve programas lineales pequeños (2–6 variables, 1–8 restricciones) con el método simplex de dos fases: soporta max/min y restricciones ≤/≥/= (rhs negativa se normaliza; ≥/= pasa por la fase 1 con variables artificiales) y usa la regla de Bland contra el ciclado; muestra variable entrante/saliente y valor objetivo de cada iteración, e informa la solución óptima x*, el valor objetivo y el estado (óptimo/ilimitado/infactible), con verificación por sustitución. Clásicos: max 3x+5y s.t. x≤4, 2y≤12, 3x+2y≤18 → (2,6), z=36; min 2x+3y s.t. x+y≥4, x+3y≥6 → (3,1), z=9.
- [Calculadora de Velocidad Crítica del Eje](https://elysiatools.com/es/tools/shaft-critical-speed): Calcula la velocidad crítica (de resonancia) de un eje. ω_n = √(k/m), n_cr = (60/2π)·√(k/m) rpm. Incluye la frecuencia natural f_n (Hz).
- [Firmador de certificados PAdES PDF](https://elysiatools.com/es/tools/pdf-pades-certificate-signer): Firma PDF con un certificado PKCS#12 usando una firma CAdES separada de ETSI.
- [Buscador de raíces primitivas módulo n](https://elysiatools.com/es/tools/primitive-root-finder): Busca raíces primitivas módulo n: comprueba si n ∈ {2, 4, p^k, 2p^k} (grupo multiplicativo cíclico), encuentra la raíz primitiva mínima con su certificado g^(φ/q) ≠ 1 para cada primo q | φ(n), cuenta las raíces como φ(φ(n)), lista hasta 50 de ellas o verifica si el orden de un candidato g es φ(n). Hasta 10¹².
- [Comprobador de residuo cuadrático (símbolos de Legendre/Jacobi)](https://elysiatools.com/es/tools/quadratic-residue-checker): Calcula el símbolo de Jacobi (a/n) (n impar hasta 10¹⁸; Legendre si n es primo): con módulo primo, a^((n−1)/2) ≡ 1 implica residuo cuadrático y Tonelli–Shanks (o la fórmula directa si p ≡ 3 (mod 4)) entrega las raíces ±√a; el símbolo −1 certifica que a NO es residuo. Con módulo compuesto el símbolo solo es condición necesaria: −1 prueba no-residuo y +1 es inconcluso (se resuelve por fuerza bruta cuando n ≤ 10⁵). Clásico: 10 es residuo cuadrático mod 13 con raíces ±6.
- [Calculadora Científica](https://elysiatools.com/es/tools/scientific-calculator): Calculadora científica avanzada con soporte para funciones matemáticas complejas y expresiones
- [Calculadora de Rigidez de Muelle](https://elysiatools.com/es/tools/spring-rate-calculator): Calcula la rigidez de un muelle helicoidal cilíndrico. k = G·d⁴ / (8·D³·n) (N/mm). Incluye valores predefinidos de G para materiales comunes.
- [Calculadora de Módulo de Young](https://elysiatools.com/es/tools/youngs-modulus-calculator): Módulo de Young en la zona elástica lineal E = σ/ε (ley de Hooke). Elija calcular módulo, tensión o deformación: para E dé σ y ε; para σ dé E y ε; para ε dé E y σ. Cada dirección toma los otros dos valores positivos y despeja el tercero; resultado en MPa con lectura en GPa.

## Ejemplos

- [Ejemplos de Procesamiento de Imágenes Android Java](https://elysiatools.com/es/samples/android-image-processing-java): Ejemplos de procesamiento de imágenes Android Java incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Android Kotlin](https://elysiatools.com/es/samples/android-image-processing-kotlin): Ejemplos de procesamiento de imágenes Android Kotlin incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Python](https://elysiatools.com/es/samples/web-image-processing-python): Ejemplos de procesamiento de imágenes Web Python usando PIL/Pillow incluyendo lectura, guardado, redimensionamiento y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Rust](https://elysiatools.com/es/samples/web-image-processing-rust): Ejemplos de procesamiento de imágenes Web Rust incluyendo lectura/escritura, escalado y conversión de formato
