Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 2

Este código resolve um problema de transporte utilizando a biblioteca PuLP em

Python. O problema consiste em determinar a quantidade de produtos a serem


transportados de fábricas para armazéns de forma a minimizar o custo total de
transporte, respeitando as capacidades de produção das fábricas e as demandas
dos armazéns.

Vou explicar as partes do código:

1. **Importação da biblioteca pulp**: `import pulp` - Isso importa a biblioteca


PuLP, que é uma ferramenta de modelagem linear em Python.

2. **Definição do problema de minimização**: `prob = pulp.LpProblem("Problema de


Transporte", pulp.LpMinimize)` - Cria um objeto `LpProblem` chamado `prob` que
representa o problema de transporte a ser resolvido, onde o objetivo é minimizar
o custo total de transporte.

3. **Definição de fábricas e armazéns**: `fabricas = ['F1', 'F2']` e `armazens =


['A1', 'A2', 'A3']` - Define listas de fábricas e armazéns.

4. **Capacidades de produção**: `capacidades = {'F1': 350, 'F2': 300}` - Define


um dicionário que mapeia cada fábrica à sua capacidade de produção.

5. **Demandas dos armazéns**: `demandas = {'A1': 150, 'A2': 180, 'A3': 250}` -
Define um dicionário que mapeia cada armazém à sua demanda.

6. **Custos de transporte**: `custos = {('F1', 'A1'): 5, ('F1', 'A2'): 6, ('F1',


'A3'): 8, ...}` - Define um dicionário que mapeia cada par (fábrica, armazém) ao
custo de transporte entre eles.

7. **Variáveis de decisão**: `var = pulp.LpVariable.dicts("Transporte",


(fabricas, armazens), lowBound=0, cat='Integer')` - Define variáveis de decisão
que representam a quantidade de produtos a serem transportados de cada fábrica
para cada armazém.

8. **Função objetivo**: `prob += pulp.lpSum(var[f][a] * custos[(f, a)] for f in


fabricas for a in armazens), "Custo Total de Transporte"` - Define a função
objetivo do problema, que é minimizar o custo total de transporte.

9. **Restrições de capacidade**: `for f in fabricas: prob +=


pulp.lpSum(var[f][a] for a in armazens) <= capacidades[f], f"Capacidade de {f}"`
- Define restrições que garantem que a quantidade total de produtos
transportados por cada fábrica não exceda sua capacidade de produção.

10. **Restrições de demanda dos armazéns**: `for a in armazens: prob +=


pulp.lpSum(var[f][a] for f in fabricas) >= demandas[a], f"Demanda de {a}"` -
Define restrições que garantem que a demanda de cada armazém seja atendida.

11. **Resolução do problema**: `prob.solve()` - Resolve o problema de


transporte.

12. **Impressão dos resultados**:


- Status da solução: `print("Status:", pulp.LpStatus[prob.status])`.
- Quantidade de produtos transportados de cada fábrica para cada armazém.
- Custo total de transporte: `print("Custo Total de Transporte: ",
pulp.value(prob.objective))`.

Este código é uma implementação básica de um problema de transporte, utilizando


a biblioteca PuLP para modelagem linear em Python. Ele fornece uma solução
otimizada para a quantidade de produtos a serem transportados, considerando as
capacidades de produção das fábricas e as demandas dos armazéns, minimizando o
custo total de transporte.

Você também pode gostar