библиотека математической оптимизации для Java – бесплатно или с открытым исходным кодом?

Кто-нибудь знает о такой библиотеке, которая выполняет математическую оптимизацию (линейное программирование, выпуклая оптимизация или более общие типы проблем)? Я ищу что-то вроде MATLAB, но с возможностью справляться с большими проблемами. Должен ли я писать свои собственные реализации или покупать один из этих коммерческих продуктов (CPLEX и т. П.)?

    Хороший ответ зависит от того, что вы подразумеваете под «выпуклым» и «более общим». Если вы пытаетесь решить большие или сложные задачи линейной или выпуклой квадратичной оптимизации (особенно с дискретной компонентой к ним), тогда трудно превзойти основные коммерческие решатели, gurobi , cplex и Dash, если деньги не являются большой проблемой для вас. Все они имеют чистые интерфейсы JNI и доступны на большинстве основных платформ.

    В монете или проекте есть несколько оптимизаторов и есть проект для интерфейса JNI. Он абсолютно бесплатный (лицензия EPL ), но он будет работать больше на настройку и, вероятно, не даст вам такой же производительности.

    Существует линейный инструмент оптимизации, называемый lpsolve . Это написано на C (я думаю), но поставляется с оболочкой Java / JNI (API не очень OO, но он выполняет эту работу). Он довольно прост в использовании, и в прошлом году он работал довольно счастливо и стабильно в живой системе.

    Вы можете попробовать JOptimizer , с открытым исходным кодом и подходящим для решения общих выпуклых задач оптимизации (линейное программирование, квадратичное программирование, qcqp, программирование конуса, полуопределенное программирование, ect

    OptaPlanner (Java, open source, ASL) может справляться с большими проблемами и не имеет ограничений типа ограничения (например, линейного или выпуклого).

    Вы можете посмотреть на JScience , это выглядит довольно полным. (Математические структуры, решение линейной алгебры и т. Д.)

    Посмотрите в AMPL . Основное издание бесплатное, но для больших проблем стоит денег. Вы не платите за язык; вы платите за решателей. Также можно загрузить свой код и запустить его на своих серверах.

    IPOPT имеет интерфейс для Java . Вы также можете адаптировать язык моделирования APMonitor для Java. Я разрабатываю эту платформу, поэтому буду рад работать с кем-то, если они хотели бы создать новый интерфейс для Java. Он уже имеет интерфейс Python API и MATLAB и включает в себя решатели, такие как IPOPT, APOPT, BPOPT и другие, которые могут обрабатывать широкомасштабные системы.

    Давайте будем гением компьютера.