Pergunta

Alguém sabe de uma biblioteca que executa otimização matemática (programação linear, otimização convexa, ou tipos mais gerais de problemas)? Eu estou procurando algo como MATLAB, mas com a capacidade de lidar com problemas maiores. Eu tenho que escrever minhas próprias implementações, ou comprar um desses produtos comerciais (CPLEX e outros)?

Foi útil?

Solução

Uma boa resposta depende do que você entende por "convexo" e "mais geral" Se você está tentando resolver problemas de otimização grandes ou desafiando lineares ou convexos-quadrática (especialmente com um componente discreto para eles), então é difícil para vencer os principais solucionadores comerciais, gurobi , CPLEX e traço menos que o dinheiro é um grande problema para você. Todos eles têm interfaces JNI limpas e estão disponíveis na maioria das principais plataformas.

O coin-ou projeto tem vários otimizadores e ter um projeto para a interface JNI. É totalmente gratuito ( EPL licença), mas vai dar mais trabalho para set-up e provavelmente não dará o mesmo desempenho.

Outras dicas

Há uma ferramenta de otimização linear chamado lpsolve . Ele é escrito em C (eu acho), mas vem com um invólucro Java / JNI (API não é muito OO, mas ele faz o trabalho). É muito fácil de usar e eu tive que correr muito feliz e estável em um sistema ao vivo para o ano passado.

Você pode tentar JOptimizer , de código aberto e adequado para problemas convexos geral de otimização (programação linear, programação quadrática, qcqp , programação cone, programação semidefinida, ect

OptaPlanner (Java, open source, ASL) pode lidar com grandes problemas e não tem um tipo de restrição limitações (tal como linear vs convexa).

Você pode querer olhar em JScience , parece muito completa. (Estruturas matemáticas, álgebra linear problemas, etc.)

IPOPT tem um interface para Java . Você também pode ser capaz de se adaptar a linguagem de modelagem APMonitor para Java. Eu desenvolver esta plataforma, então eu vou ser feliz em trabalhar com alguém, se eles gostariam de criar uma nova interface para Java. Já tem uma interface Python API e MATLAB e inclui resolvedores como IPOPT, APOPT , BPOPT, e outros que podem lidar com sistemas de larga escala.

AMPL . A edição básica é gratuita, mas isso custa dinheiro para problemas maiores. Você não paga para a linguagem; você paga solucionadores. Também é possível fazer o upload de seu código e executá-lo em seus servidores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top