Question

Est-ce que quelqu'un connaît une telle bibliothèque qui effectue une optimisation mathématique (programmation linéaire, optimisation convexe ou types de problèmes plus généraux)? Je cherche quelque chose comme MATLAB, mais avec la capacité de gérer des problèmes plus importants. Dois-je écrire mes propres implémentations ou acheter l'un de ces produits commerciaux (CPLEX, etc.)?

Était-ce utile?

La solution

Une bonne réponse dépend de ce que vous entendez par "convexe". et "plus général" Si vous essayez de résoudre des problèmes d'optimisation linéaires ou convexes-quadratiques de grande taille ou difficiles (en particulier avec un composant discret), il est difficile de battre les principaux solveurs commerciaux, gurobi , cplex et Dash à moins que l'argent ne soit un gros problème pour vous. Ils ont tous des interfaces JNI propres et sont disponibles sur la plupart des grandes plates-formes.

Le projet coin-or comporte plusieurs optimiseurs et comporte un projet pour l'interface JNI. Il est totalement gratuit ( licence EPL ), mais il vous faudra plus de travail pour le configurer. et probablement pas vous donner la même performance.

Autres conseils

Il existe un outil d'optimisation linéaire appelé lpsolve . C'est écrit en C (je pense) mais vient avec un wrapper Java / JNI (l'API n'est pas très OO mais ça fait l'affaire). Il est assez facile à utiliser et je l’ai fonctionné assez bien et de manière stable dans un système en direct pendant la dernière année.

Vous pouvez essayer JOptimizer , open source et adapté aux problèmes généraux d'optimisation convexe (programmation linéaire, programmation quadratique, qcqp). , programmation par cône, programmation semi-définie, ect

OptaPlanner (Java, Open Source, ASL) peut gérer des problèmes volumineux sans limitation de type de contrainte. (comme linéaire vs convexe).

Vous pouvez consulter JScience , il semble assez complet. (Structures mathématiques, résolution d’algèbre linéaire, etc.)

IPOPT possède une interface pour Java . Vous pourrez peut-être également adapter le langage de modélisation APMonitor pour Java. Je développe cette plate-forme et je serai ravi de travailler avec quelqu'un qui souhaite créer une nouvelle interface pour Java. Il a déjà une API Python et une interface MATLAB et inclut des solveurs tels que IPOPT, APOPT , BPOPT et d’autres pouvant prendre en charge des systèmes à grande échelle.

Recherchez AMPL . L'édition de base est gratuite, mais cela coûte de l'argent pour des problèmes plus importants. Vous ne payez pas pour la langue; vous payez pour les solveurs. Il est également possible de télécharger votre code et de le faire fonctionner sur leurs serveurs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top