Pergunta

Existe uma alternativa de código aberto para o MATLAB é fmincon função restrita de otimização linear?Eu sou a reconfiguração de um programa MATLAB para usar Python / NumPy / SciPy e esta é a única função que eu não tenha encontrado um equivalente.Um NumPy solução seria o ideal, mas qualquer idioma vai fazer.

Foi útil?

Solução

É o seu problema convexo?Linear?Não-linear?Eu concordo que SciPy.otimizar provavelmente vai fazer o trabalho, mas fmincon é uma espécie de bazuca para resolver problemas de otimização, e você vai ser melhor se você pode confiná-la a uma das categorias abaixo (em nível crescente de dificuldade para resolver de forma eficiente)

Programa Linear (LP) Quadrática Programa (QP) Convexo Quadratically Restrita Quadrática (Programa de QCQP) De segunda Ordem Cone Programa (SOCP) Semidefinite Programa (SDP) Não-Linear Convexa Problema Não Convexo Problema

Há também combinatoric problemas, tais como a Mixed-Integer Linear Programas (MILP), mas você não mencionou qualquer tipo de restrições de integralidade, basta dizer que eles se enquadram em uma classe diferente de problemas.

O CVXOpt pacote irá ser de grande ajuda para você se seu problema é convexo.

Se o seu problema é não convexa, você precisa escolher entre encontrar uma solução local ou a solução global.Muitos convexo dos solucionadores espécie de " trabalho em um não-convexo domínio.Encontrar uma boa aproximação para a solução global exigiria algum tipo de Recozimento Simulado ou Algoritmo Genético.Encontrar a solução global exigirá uma enumeração de todas as soluções locais ou uma combinatória de estratégia tais como Branch and Bound.

Outras dicas

Python software de otimização:

O Python de código aberto pacote,SciPy, tem um grande conjunto de rotinas de otimização, incluindo alguns para multivariável problemas com restrições (que é o que fmincon não acredito).Uma vez que você tenha SciPy instalado, digite o seguinte no prompt de comando Python

ajuda(scipy.otimizar)

O documento resultante é extensa e inclui o seguinte, que eu acredito que pode ser de uso para você.

   Constrained Optimizers (multivariate)

   fmin_l_bfgs_b -- Zhu, Byrd, and Nocedal's L-BFGS-B constrained optimizer
                      (if you use this please quote their papers -- see help)

   fmin_tnc      -- Truncated Newton Code originally written by Stephen Nash and
                      adapted to C by Jean-Sebastien Roy.

   fmin_cobyla   -- Constrained Optimization BY Linear Approximation

GNU Octave é outro clone do MATLAB que podem ter o que você precisa.

Para a otimização numérica em Python, você pode dar uma olhada em OpenOpt solucionadores de problemas:

http://openopt.org/NLP

http://openopt.org/Problems

Ter um olhar para http://www.aemdesign.com/downloadfsqp.htm.

Lá você irá encontrar o código em C que fornece a mesma funcionalidade como fmincon.(No entanto, usando um algoritmo diferente.Você pode ler o manual se você está interessado nos detalhes.)

É open source, mas não sob a GPL.

Existe um programa chamado O SciLab que é um clone do MATLAB.

Eu não tenho usado ele em tudo, mas é open source e pode ter a função que você está procurando.

Eu não sei se ele está lá, mas há uma distribuição python chamado Enthought que pode ter o que você está procurando.Ele foi projetado especificamente para a análise de dados tem mais de 60 bibliotecas adicionais.

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