Программа решения двоичных целых чисел для Java

Моя проблема заключается в попытке решить двоичную целочисленную программу через Java. Я хочу провести серию экспериментов, и неотъемлемым компонентом этих экспериментов является решение целочисленной программы, в которой переменные ограничены значениями от 0 до 1.

Раньше я решал такие задачи в MatLab с помощью функции bintprog. В поисках такой функции (или класса? Я очень новичок в Java) для использования в Java я пришел с пустыми руками.

Есть ли библиотека Java для решения целочисленных программ с действительно хорошей документацией?

В моем поиске я видел предложения использовать пакет под названием LP_Solve, который имеет оболочку Java, построенную вокруг это и аналогичная оболочка, созданная для пакета с именем GLPK (оболочки здесь и здесь) (который я использовал раньше). Проблема с этими инструментами заключается в том, что они не предназначены строго для Java и, следовательно, не имеют той документации, которая, как мне кажется, мне нужна, и, что еще хуже, имеют сложные инструкции, чтобы даже начать использовать их в моем собственном коде. Поскольку я в настоящее время изучаю язык Java, мне интересно, есть ли действительно хорошие пакеты для решения двоичных целочисленных программ, смешанных целочисленных линейных программ или просто целочисленных программ из моего собственного кода Java.

В качестве примечания: я действительно не хочу переключаться на другой язык, потому что я строю старый код и классы, которые выполняют нужные мне задачи.


person Walter    schedule 22.02.2011    source источник
comment
Java — язык общего назначения. MatLab — это математический язык программирования. Вам нужно будет реализовать собственные функции или найти стороннюю библиотеку для выполнения расчетов.   -  person mellamokb    schedule 22.02.2011
comment
Итак, вы ищете Java-версию bigintprog MATLAB. ?   -  person Matt Ball    schedule 22.02.2011
comment
@Matt Ball Это именно то, что я ищу. Библиотека, которая сделает свое дело и имеет хорошую документацию о том, как реализовать эту процедуру. Спасибо за возможность уточнить мой вопрос.   -  person Walter    schedule 22.02.2011
comment
@Walter: тогда вы должны уточнить свой вопрос, чтобы сказать это. Уберите мякину и спросите, что вы имеете в виду.   -  person Matt Ball    schedule 22.02.2011
comment
@Matt Мое последнее редактирование улучшает качество моего вопроса? Я хочу быть уверен, что люди могут добраться до сути моего вопроса, но при этом иметь возможность увидеть некоторые предпосылки для этого.   -  person Walter    schedule 22.02.2011
comment
Вы смотрели javailp.sourceforge.net?   -  person Mark Elliot    schedule 22.02.2011
comment
Взгляните на apache.commons.math. Возможно, в нем есть то, что вам нужно: commons.apache.org/math/userguide/optimization.html   -  person MicSim    schedule 22.02.2011
comment
@Mark Elliot У меня нет, но я сделаю это, как только вернусь с занятий. Спасибо за предложение.   -  person Walter    schedule 22.02.2011


Ответы (4)


Как насчет Java Integer Linear Program Solver (JILPS)?

person Mark Elliot    schedule 22.02.2011
comment
Я очень на это надеялся, но JILPS не кажется законченным проектом. Это больше похоже на рабочий проект без доступных загрузок или соответствующей информации. Тем не менее, спасибо, и, пожалуйста, не стесняйтесь исправлять меня, если я упустил что-то очевидное в ссылке! - person Walter; 22.02.2011
comment
@Walter: Похоже, что код хорошо задокументирован, но вам придется выполнить проверку, а не загрузку. Пример см. в этой тестовой программе: code.google.com/p/jilps/source/browse/trunk/src/jilps/cop4j/ - person Mark Elliot; 22.02.2011

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

person Walter    schedule 22.02.2011

IBM cplex, несмотря на то, что библиотека c имеет обертки Java и документацию

person Kalpesh Soni    schedule 20.09.2017

если вам нужны значения 0 или 1, попробуйте тип данных bool... если вы смотрите на вероятности (которые лежат в диапазоне от 0 до 1), попробуйте ограничить значение с плавающей запятой таким образом, чтобы оно было> = 0 и ‹ = 1;

person Suraj    schedule 22.02.2011
comment
Спасибо за ваш ответ, но он действительно не касается моего вопроса. Я отредактировал свой вопрос, чтобы попытаться уточнить, что я ищу. - person Walter; 22.02.2011