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.
![Exemplo](https://private-user-images.githubusercontent.com/50029136/354704115-b26ffbfc-3001-454d-99f9-c8d856fbeec4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxMjM2OTYsIm5iZiI6MTcyNjEyMzM5NiwicGF0aCI6Ii81MDAyOTEzNi8zNTQ3MDQxMTUtYjI2ZmZiZmMtMzAwMS00NTRkLTk5ZjktYzhkODU2ZmJlZWM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDA2NDMxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc0MWZiY2I3MzZmODAxNzlhODhiYTAzNzMxZGQ5YzRmYjdjZjhmNDU2OWJkMDNlNmIwNDg3OTQzMzQ0MGQyOGYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.e0KtWEPXNb6NKnPaMyl3HXAltRKaR0ZSO41lZIyYXCs)
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
![Passo 3](https://private-user-images.githubusercontent.com/50029136/354681966-7680d78f-0421-48c3-8f9c-363b8b9fe4bc.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxMjM2OTYsIm5iZiI6MTcyNjEyMzM5NiwicGF0aCI6Ii81MDAyOTEzNi8zNTQ2ODE5NjYtNzY4MGQ3OGYtMDQyMS00OGMzLThmOWMtMzYzYjhiOWZlNGJjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDA2NDMxNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTZlZjVjYjJlOTU5MjAyOGNmMGUwYjM3ZmY5YTBmYjVmMDA3YTFkMzhhNTY2MTUzOGU3OGMxNzYwMGNmNjU4YTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.6T7JbuYutbhv-9bbzZQhZb-t_9xug6GZaYJ3-ovqTe0)
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.