Pergunta

Eu estou olhando para opções para um quadro de programação não-linear (otimização) linear e.

Os requisitos são:

  1. linear Apoio e problemas de programação não-linear com aprox. 100-1000 variáveis ??e até cerca de 1000 restrições (Percebi que é bastante simples). Os problemas não-lineares têm limitações que envolvem multiplicação ou divisão de múltiplas variáveis ??- nada mais complicado do que isso

  2. .
  3. integra bem com ambientes MS (SQL Server, MS Access, .NET, Excel)

  4. É bom ter seria suporte para hoc definição do problema de anúncios (ou seja, algum tipo de linguagem de script ou de apoio para definir e resolver o problema em um front-end Excel)

  5. Gostaria de usar Excel sozinho, mas eu também preciso a capacidade de interface para o solver de programação (ambiente .NET) para os problemas maiores.

Para o acesso programático I tinha a intenção de desenvolver uma interface abstraindo ao solver (portanto, poderá mudar solucionadores se houver necessidade). Então Tropecei em MS Solver Foundation ( http://code.msdn.microsoft.com/solverfoundation), que já tem essa interface. Eu estou querendo saber se ele se encaixa o projeto de lei com relação aos nossos outros requisitos e que os usuários de opinião têm do mesmo.

Foi útil?

Solução

Bem, acontece Microsoft Solver Foundation não suporta programação não-linear. A partir de janeiro de 2010, a equipe é oficial palavra sobre isso é que eles estão considerando-lo, mas que não está em seus planos imediatos.

Então, eu ter resolvido em AMPL como a interface linguagem de modelagem e KNITRO para o algoritmo solver. KNITRO parece ser bom porque aparentemente consiste em três algoritmos em um (2 variantes do Ponto interior método e 1 de método activo Set ). Veja também a página da Wikipedia para KNITRO .

Eu liquidada em AMPL e KNITRO depois de experimentar versões de avaliação de ambos em um excelente portal web aparentemente financiado por os EUA National Science Foundation e US Departamento de Energia para os EUA Argonne National Laboratory chamado NEOS . NEOS oferece uma interface web para fazer upload de seu modelo matemático usando AMPL ou GAMS (e para alguns solucionadores, alguns outros) e, em seguida, obter os seus resultados de volta através de uma página de resultados da Web e por e-mail. Há supostamente uma interface de e-mail para a apresentação de problemas, mas não foi bem sucedido em conseguir que ao trabalho.

Agora, tudo isso custa dinheiro. KNITRO e AMPL são produtos comerciais. No final, a solução vai custar cerca de US $ 8000 US. Não é barato. Se você está à procura de soluções livres Eu acho que as opções são praticamente limitado a IPOPT para o solucionador (que eu também tentei em NEOS e descobriu que ele trabalhou bem, mas eu não era capaz de selecioná-lo por causa de outras razões não-técnicas) e renunciando a interface AMPL. Você pode configurar o seu problema via API do IPOPT. Ao contrário de API do Micrsoft Solver Foundation, porém, a interface IPOPT é um pouco mais complicado e, mais desafiadora de tudo, exige que seu aplicativo de chamada implementar retornos de chamada que computam primeiro (e, possivelmente, segundo) derivados de equações não-lineares do seu modelo. Modelando interfaces de linguagem (como AMPL) cuidar do presente para você, porque eles são capazes de calcular derivados simbólicos de todas as equações escritas em sua língua.

Outras dicas

Com base em seus requisitos listados, parece que Microsoft Solver Fundação atende todos as suas necessidades e então alguns. Leia o "O Solver Foundation é?" documentar no site da Solver Foundation. Menciona programação linear, programação não-linear, Desenvolver em .NET, pode usar no Excel, Solver Foundation também vem com um Microsoft Office Excel add-in para fornecer um ambiente completo de modelagem em uma interface familiar.

Eu tentei Solver Foundation em um problema que tentou (sem sucesso) para resolver no passado, e rachou em 2 dias, incluindo a aprendizagem do Solver API. Solver desempenho é grande, e SFS API (Solver Foundation Services) é IMPRESSIONANTE .

A biblioteca GLPK baseada em GNU é uma ótima opção, livre. Eu joguei 1000s e 1000s de problemas de coluna para ele não se preocupe. Demora alguns formatos de definição problema diferente, mas foi mais fácil para mim usar através do C ou C ++ API. Melhorias para os motores por trás dele ocorrem o tempo todo. Eu acredito que alguns wrappers estão disponíveis também (ie. Perl, Python).

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