O algoritmo simplex implementado se baseia no algoritmo descrito por Arenales et al. (2007). Foi implementado o método Big M para obter uma base inicial.
A implementação foi feita utilizando Python3. É necessário ter instalado o pacote numpy.
Inicialmente o algoritmo considera o formato padrão:
Um algoritmo de inserção de variáveis de folga foi criado para que restrições de desigualdade (
Sendo
O arquivo de entrada deve conter os seguintes dados:
Valores reais devem estar separados por ponto, não por vírgula. Os valores possiveis para os operadores são qualquer string. Se o valor for "$\le$" ou "$\lt$", a restrição será considerada de menor igual. Analogamente, se o valor for "$\ge$" ou "$\gt$", a restrição será considerada de maior igual. Qualquer outro valor será considerado como igualdade. Por fim, o valor de
As linhas do arquivo é estruturado da seguinte forma
1
2
3
4
5
6
i+4
m+4
m+5
m+6
Cada linha da matriz
Este arquivo apresenta uma instância exemplo com a explicação de cada linha. Nele está apresentado o a seguinte instância do problema da dieta com mínimo e máximo de nutrientes:
Note que os operadores "$\le$" foi representado tanto por "$\le$" quanto por "$\lt$". O mesmo ocorre com "$\ge$", representador por "$\ge$" ou "$\gt$". No caso do operador "$=$", pois qualquer outra string diferente de "$\lt$", "$\le$", "$\gt$" e "$\ge$" é considerada o operador "$=$".
Por fim, o domínio das variáveis não é necessário. Assume-se que toda variável deve ser maior ou igual a zero.
Para executar a implementação do Simplex basta utilizar o seguinte comando na pasta do projeto:
python main.py <arquivo-de-entrada>
O parâmetro <arquivo-de-entrada> é o arquivo contendo o modelo no formato descrito pela Seção Arquivo de Entrada. Foram criados 5 exemplos para ilustrar o funcionamento do algoritmo. Eles se encontram na pasta exemplos.
Se desejar executar todos os exemplos de uma única vez, basta executar a seguinte linha de comando:
python run_examples.py
ARENALES, M.; ARMENTANO, V. A.; MORABITO, R.; YANASSE, H. H. Pesquisa operacional. Rio de Janeiro: Campus/elsevier, 2007. 523 p. ISBN 10-85-352-145-1454-2.