Платформа оптимизации Java

Я ищу java framework, который подходит для задач оптимизации. В лучшем случае это реализовано с помощью Java 8. Я знаю, что есть лучшие языки для задач оптимизации, но в настоящее время я ограничен Java.

Это должно делать:

public class OptimizationProblem {

    // Given: Any function, which returns a value for a combination of A and B.
    public int value (A a, B b);
    List<A> as;
    List<B> bs;

    // This function should be part of the framework
    // It should map each A to one B (if both are of same length), so that the value
    // in sum is max (not an easy task, at all).
    Map<A, B> map = findBestCombinations (as, bs, OptimizationProblem::value);

Я ожидаю, что фреймворк справится с проблемами минимизации и максимизации. Ему не нужно находить «оптимальное» решение поставленных задач. Если не удается найти решение в адекватное время, допускается возврат «хорошего» решения.

"другие полезные методы, подобные этому" являются немного общими. Не могли бы вы отредактировать свой вопрос и явно указать свои (обязательные/желательные) требования? Это, скорее всего, значительно повысит ваши шансы на хорошие ответы, поскольку часто «ключевые слова вызывают вещи» в умах читателей :)

Ответы (1)

Поскольку я ищу библиотеку Java для квадратичного программирования ( Решение небольшой задачи квадратичного программирования с ограничениями неравенства в Java или C/C++ ), я столкнулся с некоторыми элементами. Я думаю, что этот общий вопрос о пакетах оптимизации для Java будет полезен другим, поэтому вот мои заметки о некоторых элементах, которые я рассмотрел. Их следует понимать как относящиеся только к версии программного обеспечения в настоящее время (сентябрь 2018 г.). Этот список не является исчерпывающим.

  • ой! Алгоритмы ( https://github.com/optimatika/ojAlgo ) — могут обрабатывать QP; Я смотрю на это сейчас.
  • Stanford NLP ( https://github.com/stanfordnlp/CoreNLP ) -- имеет некоторые функции для общей неограниченной оптимизации, но я не вижу ничего конкретно для QP или проблем с ограничениями.
  • JOptimizer ( http://www.joptimizer.com ) — кажется, способен обрабатывать QP с ограничениями равенства и неравенства.