Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Проект coin-or имеет несколько оптимизаторов и имеет проект для интерфейса JNI. Это совершенно бесплатно (EPL лицензия), но потребуется больше работы для настройки и, вероятно, не даст вам такой же производительности.

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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