LiSimplex – Simplex Solver – Implementação de um Solver Simplex em Java


Durante a disciplina de Pesquisa Operacional, tive grandes dificuldades com relação à um trabalho: implementar um solver simplex que seria capaz de resolver sistemas com restrições de igualdade e desigualdade (<=, =, >=). Tal problema pode ser resolvido implementando, em java, uma aplicação capaz de resolver tal proglema, E isso foi feito!

Desenvolvemos, então, o solver LiSimplex. O LiSimplex resolve, via Big M (M Grande), o problema formado pela funcão objetivo, as restrições e a forma de resolução (Maximizar ou minimizar).

O Download do binãrio pode ser feito nesse link: Download Aplicação LiSimplex

De modo geral, o solver simplex recebe um arquivo que descreve o problema. Esse arquivo deve ser descrito da seguinte forma:

[MAX | MIN] {OBJECTIVE FUNCTION}
[SUBJECT TO]
{CONSTRAINT 1}
{CONSTRAINT 2}
{CONSTRAINT 3}
...
{CONSTRAINT n}
[END]

Um exemplo de arquivo pode ser escrito assim:

MAX 50X1+60X2+65X3
SUBJECT TO
2X1 + 3X2 + 2.5X3 <= 600
3X1 + 2X2 + 2.5X3 >= 500
X1 + 2X2 + X3 = 100
X1 >=0
X2 >=0
X3 >=0
END

Sendo assim, devemos fazer algumas considerações apartir do arquivo de entrada:

  • Não é possível utilizar as palavras reservadas (MAX, MIN, SUBJECT, TO, END) como identificadores,
  • Os identificadores não são CaseSensitive, ou seja, heLLoWORLd = HELLOworlD,
  • Todas as variáveis devem, necessariamente, conter sua condição de Não-Negatividade. A implentação do problema utilizando variável livre ainda está em fase de desenvolvimento.

A solução factível é gerada em um arquivo chamado solucao.sol. Tal arquivo se encontra no mesmo diretório do arquivo do problema.

Qualquer dúvida acerca do funcionamento da aplicação, crítica, comentário ou sugestão, poste um comentário.

Obrigado e bom Simplex.

Anúncios

7 respostas em “LiSimplex – Simplex Solver – Implementação de um Solver Simplex em Java

  1. Estou testando teu programa LiSimplex.
    No pouco que testei por enquanto, percebi que o programa é simples por fora e sofisticado por dentro. Parabéns pelo teu trabalho.
    Localizei teu programa procurando um que funcionasse num smartphone, pois tenho o G1 da HTC, o primeiro google phone, que como deves saber tem plataforma Linux.
    Tenho minha wish list para fazer sugestões.
    Então lá vão algumas sugestões.
    1-Produzir uma versão que funcione no G1 e seus compatíveis e disponibilizar no Market.
    2-Acrescentar uma interface para digitar diretamente o texto de entrada.
    3-Criar opção para apresentar todos os Tableaux.

    Observações:
    -Não localizei o arquivo solucao.sol.
    -Sou Tutor no EAD de Administração da UFG e estamos neste semestre com a disciplina Pesquisa Operacional. Gostaria de usar teu software para os estudantes do UFG/EAD/Adm. Gostaria de conversar contigo sobre esta possibilidade.

    • Olá Otávio, entrarei em contato com você para vermos a possibilidade de utilização do software.
      Obrigado pelo feedback! Fico feliz em ajudar…

  2. Amigo Ricardo Gobbo sou aluno de graduação em Ciência da Computação e gostaria de sua ajuda. Primeiramente parabens por seu trabalha um programa com uma interfase muito simple porém muto eficiente. Estou com o mesmo problema do nosso amigo Otávio Souza não estou encontrando o arquivo “solucao.sol” .Estou desenvolvendo um trabalho que usa a programação linear na eleboração de horários escolares como esse problema envolve uma quantidade enorme de variáveis não é possível visualizar o resultado na tela. Gostaria de sua ajuda porque gostaria de fazer alguns teste no meu modelo.
    Obrigado.

  3. Olá Leonardo,
    Podemos sim verificar a possibilidade de uma verticalização sobre o uso de PL nesse escopo.
    Contactarei você via e-mail.

    Abraços

  4. Pingback: LiSimplex – Simplex Solver – Venda do Projeto « LivDev – O segundo passo

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s