2009-12-30 17 views
19

Sto cercando una libreria C++ e ho a che fare con funzioni convesse di obiettivi e vincoli.Che cos'è una buona libreria di ottimizzazione convessa?

+4

Dove l'hai visto l'ultima volta? –

+0

La maggior parte dei solutori LP ha il proprio modo di definire i set di problemi. Le interfacce programmatiche per esso sono per lo più rivestimento di zucchero. –

+0

Sto usando cvxopt, e per installare ho appena scaricato le librerie precompilate da http://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt, poi ho installato pip (ruota scaricata), quindi ho fatto in modo di importare Numpy prima di usarlo. – Phylliida

risposta

12

Immagino che il tuo problema non sia lineare. Dove lavoro, usiamo SNOPT, Ipopt e un altro risolutore proprietario (non in vendita). Abbiamo anche provato e ascoltato cose positive su Knitro.

Finché il problema è convesso, tutti questi risolutori funzionano correttamente.

Tutti hanno una propria API, ma tutti chiedono le stesse informazioni: valori, prima e seconda derivata.

1

Da quello che so, il risolutore CPLEX è il miglior risolutore di ottimizzazione convessa. È lo stato dell'arte nei risolutori di LP. Ottimizza l'ottimizzazione davvero bene. Mentre lo cerco, vedo che il suo software IBM ora. Puoi trovarlo qui: http://www-01.ibm.com/software/integration/optimization/cplex/

+0

Qui puoi trovare altri solutori open source e i relativi benchmark delle prestazioni: http://plato.asu.edu/ftp/lpfree.html Inoltre, non dimenticare di consultare http://code.msdn.microsoft.com/solverfoundation –

+0

La linea lineare implica convesso, non il contrario. –

+0

cplex risolve problemi convessi con vincoli lineari o quadratici. È molto veloce, ma non gestisce i problemi convessi generali. –

4

Supponendo che i problemi non siano lineari, è possibile utilizzare OPT++ open source e disponibile da Sandia Lab. L'ho usato in un progetto in C++ ed è stato facile da usare e ha funzionato bene.

1

È possibile utilizzare GSL (GNU Scientific Library) con the packageNLopt che è un pacchetto di ottimizzazione non lineare con vincolate, legato con vincoli, e generali vincoli di disuguaglianza non lineari.

+0

Due commenti: in primo luogo, cosa intendi per utilizzare GSL e NLOpt insieme (GSL con NLOpt)? Sembrano essere progetti separati. Hanno lo stesso spirito ma sono indipendenti. In secondo luogo, l'autore di NLOpt sconsiglia di utilizzare NLOpt per problemi convessi, dalla pagina web: "NLopt include solo metodi generali che non assumono convessità, se si dispone di un problema probabilmente convesso, si potrebbe stare meglio con un pacchetto software diverso , come il pacchetto CVX di Stanford. " http://ab-initio.mit.edu/wiki/index.php/NLopt_Introduction#Global_versus_local_optimization – alfC

Problemi correlati