# Resolvedor do problema de transporte (fluxo de custo mínimo)

Resolve o problema de transporte balanceado como um fluxo de custo mínimo (2–8 origens × 2–8 destinos; exige oferta total = demanda total): cada aumento envia pelo caminho mais curto da rede residual (SPFA tolera custos negativos de arcos residuais) e os opostos das distâncias acumuladas são exatamente os duais MODI (u_i, v_j). Mostra cada caminho de aumento, o plano completo de envios, os totais por linha/coluna e a matriz de custos reduzidos com o certificado de optimalidade (todos ≥ 0, = 0 nas células básicas). Clássico: ofertas [30,40,30], demandas [20,30,30,20], custos [[2,3,1,4],[4,2,5,3],[3,1,4,2]] → custo total mínimo 200.

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

- **Categoria:** Math & Numbers

- **Palavras-chave:** problema de transporte, fluxo de custo mínimo, método modi, método uv, variáveis duais, pesquisa operacional, logística, plano de envios, oferta demanda

## Visão geral

O Resolvedor do Problema de Transporte calcula a distribuição ótima de mercadorias entre múltiplas origens e destinos com base no algoritmo de fluxo de custo mínimo. A ferramenta processa matrizes de custos unitários e vetores de oferta e demanda balanceados (de 2 a 8 origens e destinos), gerando o plano de envio com o menor custo total possível, os caminhos de aumento na rede residual e o certificado de optimalidade com os multiplicadores duais MODI (u, v).

## Entradas

- **Matriz de custos (linhas = origens, uma por linha)** (textarea): Unit shipping cost from each source (row) to each destination (column). 2–8 rows × 2–8 columns.
- **Oferta (por origem)** (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).
- **Casas decimais** (number)

## Quando usar

- Quando for necessário encontrar a alocação de menor custo entre múltiplos centros de distribuição e pontos de demanda equilibrados.
- Para verificar passos intermediários de pesquisa operacional, incluindo variáveis duais MODI e custos reduzidos.
- Ao comparar rotas logísticas e validar se uma solução de transporte atingiu a optimalidade matemática global.

## Como funciona

- Insira a matriz de custos unitários de transporte separada por linhas para cada origem e colunas para cada destino.
- Informe as quantidades disponíveis em cada linha (oferta) e as quantidades requeridas em cada coluna (demanda), garantindo que a soma de ambas seja idêntica.
- Ajuste a precisão decimal desejada e execute o algoritmo, que resolve o modelo por meio de caminhos mais curtos sucessivos na rede residual.
- Analise o plano completo de envios gerado, os totais conferidos por linha/coluna, o custo total mínimo e os valores das variáveis duais (u_i, v_j).

## Casos de uso

- Otimização da malha de frete entre fábricas e centros de distribuição regionais com capacidades fixas.
- Resolução e verificação de exercícios acadêmicos de Pesquisa Operacional e Programação Linear.
- Alocação de estoque entre armazéns intermediários e lojas de varejo com custos variáveis por rota.

## Perguntas frequentes

### O que fazer se a oferta total for diferente da demanda total?

O problema precisa ser balanceado antes da execução, adicionando uma origem ou destino fictício (dummy) com custo zero para absorver a diferença.

### Qual é o limite de tamanho para a matriz de transporte?

A ferramenta aceita entre 2 e 8 origens (linhas) e entre 2 e 8 destinos (colunas).

### Como os custos reduzidos comprovam que o resultado é ótimo?

Pelo método MODI, a solução é comprovadamente ótima quando todos os custos reduzidos nas células não básicas são maiores ou iguais a zero e iguais a zero nas células básicas.

### O resolvedor aceita números decimais na matriz e nas demandas?

Sim, valores com casas decimais são aceitos nas matrizes de custo, na oferta e na demanda.

### O que significa cada etapa de aumento no relatório de saída?

Cada aumento indica a quantidade de fluxo enviada pelo caminho de menor custo identificado na rede residual até que toda a demanda seja atendida.

## Ferramentas relacionadas

- [Resolvedor de programação linear por simplex (duas fases)](https://elysiatools.com/pt/tools/linear-programming-simplex): Resolve programas lineares pequenos (2–6 variáveis, 1–8 restrições) pelo método simplex de duas fases: suporta max/min e restrições ≤/≥/= (lado direito negativo é normalizado; ≥/= passam pela fase 1 com variáveis artificiais) e usa a regra de Bland contra ciclagem; cada iteração mostra a variável entrante/saindo e o valor objetivo, e são reportados a solução ótima x*, o valor objetivo e o status (ótimo/ilimitado/inviável), verificados por substituição. Clássicos: max 3x+5y s.a. x≤4, 2y≤12, 3x+2y≤18 → (2,6), z=36; min 2x+3y s.a. x+y≥4, x+3y≥6 → (3,1), z=9.
- [Calculadora de Velocidade Crítica do Eixo](https://elysiatools.com/pt/tools/shaft-critical-speed): Calcula a velocidade crítica (de ressonância) de um eixo. ω_n = √(k/m), n_cr = (60/2π)·√(k/m) rpm. Inclui a frequência natural f_n (Hz).
- [Assinador de certificado PAdES PDF](https://elysiatools.com/pt/tools/pdf-pades-certificate-signer): Assina PDFs com certificado PKCS#12 usando uma assinatura CAdES destacada da ETSI.
- [Buscador de raízes primitivas módulo n](https://elysiatools.com/pt/tools/primitive-root-finder): Busca raízes primitivas módulo n: verifica se n ∈ {2, 4, p^k, 2p^k} (grupo multiplicativo cíclico), encontra a menor raiz primitiva com certificado g^(φ/q) ≠ 1 para cada primo q | φ(n), conta as raízes como φ(φ(n)), lista até 50 delas ou verifica se a ordem de um candidato g é igual a φ(n). Até 10¹².
- [Verificador de resíduo quadrático (símbolos de Legendre/Jacobi)](https://elysiatools.com/pt/tools/quadratic-residue-checker): Calcula o símbolo de Jacobi (a/n) (n ímpar até 10¹⁸; Legendre se n for primo): módulo um primo, a^((n−1)/2) ≡ 1 indica resíduo quadrático e Tonelli–Shanks (ou a fórmula direta se p ≡ 3 (mod 4)) fornece as raízes ±√a; o símbolo −1 certifica que a NÃO é resíduo. Com módulo composto o símbolo é só necessário: −1 prova não-resíduo e +1 é inconclusivo (resolvido por força bruta quando n ≤ 10⁵). Clássico: 10 é resíduo quadrático mod 13 com raízes ±6.
- [Calculadora Científica](https://elysiatools.com/pt/tools/scientific-calculator): Calculadora científica avançada com suporte para funções matemáticas complexas e expressões
- [Calculadora de Rigidez de Mola](https://elysiatools.com/pt/tools/spring-rate-calculator): Calcula a rigidez de uma mola helicoidal cilíndrica. k = G·d⁴ / (8·D³·n) (N/mm). Inclui valores predefinidos de G para materiais comuns.
- [Calculadora de Módulo de Young](https://elysiatools.com/pt/tools/youngs-modulus-calculator): Módulo de Young na região elástica linear E = σ/ε (lei de Hooke). Escolha módulo, tensão ou deformação: para E informe σ e ε; para σ informe E e ε; para ε informe E e σ. Cada direção toma os outros dois valores positivos e calcula o terceiro; resultado em MPa com leitura em GPa.

## Exemplos

- [Exemplos de Processamento de Imagem Android Java](https://elysiatools.com/pt/samples/android-image-processing-java): Exemplos de processamento de imagem Android Java incluindo leitura/escrita, dimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Android Kotlin](https://elysiatools.com/pt/samples/android-image-processing-kotlin): Exemplos de processamento de imagem Android Kotlin incluindo leitura/escrita, dimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Web Python](https://elysiatools.com/pt/samples/web-image-processing-python): Exemplos de processamento de imagem Web Python usando PIL/Pillow incluindo leitura, salvamento, redimensionamento e conversão de formato
- [Exemplos de Processamento de Imagem Web Rust](https://elysiatools.com/pt/samples/web-image-processing-rust): Exemplos de processamento de imagem Web Rust incluindo leitura/gravação, redimensionamento e conversão de formato
