alternativa de código aberto para a função fmincon do MATLAB?

votos
28

Existe uma alternativa de código aberto para o MATLAB fminconfunção para otimização linear restrita? Eu estou reescrevendo um programa MATLAB usar Python / NumPy / SciPy e esta é a única função que eu não encontrei um equivalente a. Uma solução baseada em NumPy seria o ideal, mas qualquer linguagem vai fazer.

Publicado 08/09/2008 em 16:19
fonte usuário
Em outras línguas...                            


8 respostas

votos
26

É o seu problema convexo? Linear? Não-linear? Concordo que SciPy.optimize provavelmente irá 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 aumentar o nível de dificuldade para resolver eficientemente)

Programa Linear (LP) Programa quadrática (QP) Convex quadraticamente-Constrained Programa quadrática (QCQP) Segunda Ordem Programa Cone (SOCP) Programa semidefinite (SDP) Não-Linear Convex Problema Não Convex Problema

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

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

Se o seu problema não é convexo, você precisa escolher entre encontrar uma solução local ou a solução global. 'espécie de' muitos solucionadores convexas trabalho em um domínio não-convexo. Encontrar uma boa aproximação para a solução global exigiria alguma forma simulada Annealing ou Algoritmo Genético. Encontrar a solução global exigirá uma enumeração de todas as soluções locais ou uma estratégia combinatória como Derivação e Limitação.

Respondeu 13/10/2008 em 06:51
fonte usuário

votos
16

software de otimização Python:

Respondeu 06/12/2009 em 19:51
fonte usuário

votos
13

O pacote Python código aberto, SciPy , tem bastante um grande conjunto de rotinas de otimização incluindo alguns para problemas multivariados com restrições (que é o que fmincon faz eu acredito). Depois de ter SciPy instalado digite o seguinte na linha de comandos Python

ajuda (scipy.optimize)

O documento resultante é extensa e inclui o seguinte que eu acredito que possa ser de utilidade 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
Respondeu 16/09/2008 em 10:45
fonte usuário

votos
4

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

Respondeu 08/09/2008 em 16:22
fonte usuário

votos
3

Para otimização numérica em Python que você pode dar uma olhada em solucionadores OpenOpt:

http://openopt.org/NLP

http://openopt.org/Problems

Respondeu 19/04/2009 em 09:10
fonte usuário

votos
1

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

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

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

Respondeu 14/01/2009 em 19:38
fonte usuário

votos
1

Existe um programa chamado SciLab que é um clone MATLAB.

Eu nunca usei isso em tudo, mas é open source e pode ter a função que você está procurando.

Respondeu 08/09/2008 em 16:21
fonte usuário

votos
0

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

Respondeu 08/09/2008 em 17:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more