Domanda

Qualcuno conosce una tale libreria che esegue l'ottimizzazione matematica (programmazione lineare, ottimizzazione convessa o tipi più generali di problemi)? Sto cercando qualcosa come MATLAB, ma con la capacità di gestire problemi più grandi. Devo scrivere le mie implementazioni o acquistare uno di quei prodotti commerciali (CPLEX e simili)?

È stato utile?

Soluzione

Una buona risposta dipende da cosa intendi per "convex" e "più generale" Se stai cercando di risolvere problemi di ottimizzazione lineare o convesso quadratico di grandi dimensioni o impegnativi (specialmente con un componente discreto), è difficile battere i principali solutori commerciali, gurobi , cplex e Dash a meno che il denaro non sia un grosso problema per te. Tutti hanno interfacce JNI pulite e sono disponibili sulla maggior parte delle piattaforme principali.

Il progetto coin-or ha diversi ottimizzatori e ha un progetto per l'interfaccia JNI. È totalmente gratuito ( EPL ), ma richiederà più lavoro per la configurazione e probabilmente non ti darà la stessa performance.

Altri suggerimenti

Esiste uno strumento di ottimizzazione lineare chiamato lpsolve . È scritto in C (penso) ma viene fornito con un wrapper Java / JNI (l'API non è molto OO ma fa il lavoro). È abbastanza facile da usare e l'ho fatto funzionare abbastanza felicemente e stabilmente in un sistema live nell'ultimo anno.

Puoi provare JOptimizer , open source e adatto a problemi generali di ottimizzazione convessa (programmazione lineare, programmazione quadratica, qcqp , programmazione a cono, programmazione semidefinita, ect

OptaPlanner (Java, open source, ASL) può gestire problemi di grandi dimensioni e non ha limitazioni del tipo di vincolo (come linear vs convex).

Potresti voler guardare JScience , sembra abbastanza completo. (Strutture matematiche, risoluzione lineare dell'algebra, ecc.)

IPOPT ha una interfaccia per Java . Potresti anche essere in grado di adattare il linguaggio di modellazione APMonitor per Java. Sviluppo questa piattaforma, quindi sarò felice di lavorare con qualcuno se desidera creare una nuova interfaccia per Java. Ha già una API Python e MATLAB e include solutori come IPOPT, APOPT , BPOPT e altri in grado di gestire sistemi su larga scala.

Cerca AMPL . L'edizione di base è gratuita, ma costa denaro per problemi più grandi. Non paghi per la lingua; paghi per i solutori. È anche possibile caricare il codice e farlo funzionare sui loro server.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top