Pontos Interiores, também conhecido como Método da Barreira, é uma técnica de otimização linear utilizada para encontrar soluções de problemas de programação linear. Diferente do Método Simplex, que navega pelas bordas do espaço viável, o Método dos Pontos Interiores percorre o interior do espaço viável para encontrar a solução ótima.
É particularmente útil em problemas de larga escala devido sua eficiência computacional, bem como suas aplicações em Otimização Não-Linear.
A abordagem se baseia em uma função de barreira que impede que as iterações se aproximem das bordas do espaço viável, permitindo que o algoritmo se concentre nas regiões interiores. Como resultado, o Método dos Pontos Interiores pode convergir rapidamente para a solução ótima, tornando-se uma escolha preferida em muitas aplicações de otimização.
Os créditos da imagem são do autor Jeremy Bleyer em seu trabalho Advances in the simulation of viscoplastic fluid flows using interior-point methods
As implementações presentes neste repositório foram feitas com proposta educacional para aprendizado em Otimização Linear, e baseiam-se na metodologia do professor Marcos Arenales em seu livro Pesquisa Operacional.
- Acesso o Google Colab
- Abra o menu de contexto Arquivo e selecione a opção Abrir Notebook
- Selecione o contexto Github e insira o link: https://github.com/rafflezs/MetodoBarreira-OtmLinear-ICMC/blob/main/notebook/pontos-interiores.ipynb
Basta selecionar o arquivo e o mesmo será carregado à página.
Caso opte pela execução local, certifique-se de ter instalado Python 3 em seu computador, juntamente dos pacotes matplotlib e numpy. Apos isso, basta executar o arquivo src/main.py
Obviamente o projeto não está completo (sinceramente nem foi despendido um tempo tão grandioso assim), então existem pontos à serem melhorados, principalmente na computação do sistema KKT, onde é implementado um sistema grande com alto custo.
Caso tenha alguma proposta de melhoria, correção ou documentação, sinta-se a vontade para enviar uma pull request que irei avaliar.
Este código foi feito para própositos educativos, como método avaliativo na disciplina de Otimização Linear 2 - SME5902.
Por essa razão o mesmo não está completamente otimizado e pode apresentar erros ainda não testados, portanto não use-o em ambientes de produção.
Quaisquer problemas causados pelo uso desse projeto em ambientes não-educacionais ou de estudo são de responsabilidade do usuário.