There are several OR packages out there, but OR implementations for Java are very scarce. I've made an effort to setup a Java library with several implementations. Goal of this project is to:

  1. Make it easier to re-use Java code for OR implementations.
  2. Make it easier to share your implementations.

The main page of this project: jORLib

Quite often I encounter nice descriptions of algorithms in papers. Unfortunately, replicating implementations based on these descriptions is often very hard and/or very time consuming. Therefore I'm a big proponent of re-usable code.

So far the library contains the following:

  • Framework for Column Generation (CG) and Branch-and-Price (BAP). This should help you speed up implementing your own CG/BAP implementations considerably.
  • Separation routines for Cover/Lifted Cover inequalities
  • Separation routines for subtour elimination constraints in TSP
  • Memory efficient knapsack solver
  • Parser for all TSPLib instances
  • algorithms for circle packing

All code is well documented and every Class comes with it's own example class to show you how to use it. I would be very happy to receive feedback. Any kinds of comments regarding improvements, extensions, bug fixes, etc are warmly welcomed. In addition, I invite you to submit your own code to be included in the library.

Some quick references:

Edit Aug 29, 2016: The Java OR Library is now officially part of COIN-OR: http://www.coin-or.org/projects/jORLib.xml

asked 12 Jun '15, 16:49

Joris%20Kinable's gravatar image

Joris Kinable
3381213
accept rate: 16%

edited 29 Aug '16, 10:23


What is the reason java is never used for our kind of thing and python reigns supreme? Other than python just being a delight to use, there must be some reason it established itself as the leader for data science and analytics many years ago.

link

answered 06 Apr, 09:53

gtg489p's gravatar image

gtg489p
3113
accept rate: 0%

I'm not 100% sure Python is the undisputed leader for data science. It seems to me that R is running neck and neck with it. They both are interpreted languages that come with a REPL shell, which makes exploration (and testing of code snippets) easy. Notebook versions of both exist, which makes documenting work easy. They both have access to compiled libraries to speed up the heavy number crunching. I think Java 9 gets a REPL shell, but Java remains rather verbose for exploratory analysis and quick prototyping of scripts.

(08 Apr, 07:42) Paul Rubin ♦♦

By the way, this would have made more sense as a new question rather than an "answer" on Joris's post. jORLib is for operations research (specifically, optimization), not for data science or data analytics. In the optimization realm, I'm pretty sure Java remains more popular than Python (but perhaps not as popular as C++), at least for "serious" or "large" problems.

(08 Apr, 07:46) Paul Rubin ♦♦

Ya, you're right. I just love python :}

(08 Apr, 13:17) gtg489p

@gtg489p, allow me to put it this way: "Programming language connaisseures" might go on and on which one -- in their opinion -- is best/most versatile/most efficient/easiest to comprehend/etc. -- but when it comes to "great libraries", there are basicly two driving forces: a) core developers' preferences, and b) "marketing opportunities" ... -- anyhow, FYI, with regards to COIN-OR + Python, there are PuLP, CyLP,...

(11 Apr, 13:31) fbahr ♦
1

The more OR packages for more languages the better! I apologize for derailing the thread, and I may end up using jORLib in the future. The col gen reference document looks like a fantastic learning resource.

(11 Apr, 14:18) gtg489p
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×53
×28
×18

Asked: 12 Jun '15, 16:49

Seen: 29,262 times

Last updated: 11 Apr, 14:18

OR-Exchange! Your site for questions, answers, and announcements about operations research.