Implementação do algoritmo Branch and Bound para resolução de problemas de programação linear inteira binária, utilizando a biblioteca Python-Mip. Este projeto foi desenvolvido como parte do projeto final da disciplina de Pesquisa Operacional, lecionada pelo professor Teobaldo Bulhões.
- Douglas Veras
- Lucas Gabriel
Clone o repositório para sua máquina local.
git clone <URL_DO_REPOSITORIO>
cd <NOME_DA_PASTA_DO_REPOSITORIO>É recomendável utilizar um ambiente virtual para instalar as dependências do projeto e evitar conflitos com outras bibliotecas instaladas no sistema. Para criar o ambiente virtual, use o seguinte comando:
python -m venv .venvApós criar o ambiente, você precisa ativá-lo:
No Windows:
.venv\Scripts\activateNo macOS e Linux:
source .venv/bin/activateCom o ambiente virtual ativo, instale as dependências listadas no arquivo requirements.txt com o seguinte comando:
pip install -r requirements.txtO algoritmo espera um arquivo .txt contendo as informações do problema de programação linear inteira binária. O formato do arquivo deve seguir a estrutura ilustrada a seguir:
Maximizar:
5x₁ + 10x₂ + 8x₃
Sujeito a:
- 3x₁ + 5x₂ + 2x₃ ≤ 6
- 4x₁ + 4x₂ + 4x₃ ≤ 7
Onde:
- x₁, x₂, x₃ ∈ {0, 1}
O arquivo de entrada .txt deve seguir a estrutura ilustrada abaixo para o problema de exemplo acima:
3 2 # Número de variáveis e número de restrições
5 10 8 # Coeficientes das variáveis na função objetivo
3 5 2 6 # Coeficientes da primeira restrição, seguido do valor à direita da desigualdade
4 4 4 7 # Coeficientes da segunda restrição, seguido do valor à direita da desigualdade
Para rodar o algoritmo, você deve executar o arquivo principal main.py na raiz do projeto, passando o caminho do arquivo de entrada como parâmetro para a função main.
Na raiz do projeto, com o ambiente virtual ativo, rode:
python main.pyO caminho do arquivo .txt que contém as informações do problema pode ser especificado dentro do código no arquivo main.py, ou modificado de acordo com o nome do arquivo e seu local de armazenamento.