Monday, April 27, 2009

Top 5 things to get involved with Open Source in Operations Research

Open Source software is getting increased attention with the Operations Research community. Just this past week there was talk about clarity in Open Source from Michael Trick, a Strategic Leadership Board member to the COIN-OR project. In similar news IBM announced that Eclipse Public License will supersede the Common Public License. So what does this all really mean? Well to be honest it really is a bunch of legal positioning. Yet to me it signifies an increased passion in the Open Source community with Operations Research software.

Yet you don't have to be an old school hacker or a lawyer to get involved in Open Source projects. There are plenty of ways to get involved with Operations Research software on the free and open source side. Here are the Top 5 ways to get involved in my perceived order.


1. Use Open Source software

There is no greater way to get involved than to be a user of the product. Evangelism is best for Open Source projects. If you have a need for an optimization modeling engine or program be sure to look at the great lists of free and open source projects in Operations Research. A great resource for open source Operations Research projects can be found at COIN-OR projects. The Free Software Foundation has a great list as well for free mathematical software projects.

2. Get involved in the Open Source software community

The community is the best way to learn about software projects. The internet is filled with mailing lists, web forums, blogs, chat rooms, and any other new media for transmitting messages. There is no shortage of discussion with Operations Research and software. Each project usually has a main forum to discuss project improvements and support (typically in a mailing list format). Be sure to subscribe to the forum and get involved by asking questions of how to use the open source software and to get involved.

3. Bug tracking

I once heard a wise remark about customer service.
For every good service you get you may tell 10 people, but for every bad service you get you'll tell 100 people how lowsy it was.
Bug tracking is very important to any software project whether it is proprietary or open source. This is an invaluable service to the software project. Tracking bugs can be as easy as sending an email to a project developer about an issue you have found. You can also get involved on their specific bug tracking platform and file formal bug tracking reports. If a software project exists it will have bugs. It is nearly an axiom of existence for software projects. If you want to help a project let them know that bugs exist.
4. Documentation

I believe that the Open Source community gets a really bad wrap for having bad documentation. In some cases this may be true but I believe since the source code of the project is available to everyone then it sort of gives a "pass" to have formal documentation. Yet there is a lot of great documentation on Open Source projects available to the community from volunteers. It could be as simple as providing how-to tutorials or hosting a formal project website with online community forums. Documentation is needed on many different levels for an open source project. It usually depends on the need of the community as to the type of documentation. Yet invariably there will be demand for simple instructions to using the software.

5. Software development

If you have a clear talent to program then why not get involved in developing software for open source projects. This is a great way to expand your skills as a programmer and to understand how Operations Research works on a more deeper technical level. Many times you need not be a superior programmer to offer constructive assistance. Sometimes simple bug-work needs to be done and some programming help can get that accomplished. Perhaps there is a specific need in the field of Operations Research that is lacking development on the software side. Software development need not be limited to a closed source model. You can find it can help on your resume as well.

Monday, April 20, 2009

Open Source reading for the un-initiated

Tectonic has a great blog article by Alastair Otter on 10 Open Source Books Worth Downloading. There is great reading in here for those un-initiated to Open Source software. Now granted a lot of the books are intended for the software junkies like Linux, Linux sysadmin, and Blender. Yet there are still some really good ones that point to how Open Source started and how to implement Open Source initiatives.

The books I recommend the most are The Cathedral and the Bazaar, Free Culture, Free and Open Source Software Development (pdf), Producing Open Source Software - How to run a Successful Free Project (pdf).

Friday, April 17, 2009

PyMathProg: New GLPK toolkit for Python released


As I mentioned in an earlier post GLPK is getting a lot of increased attention. There seems to be limitless platforms that can be implemented with GLPK. One new platform released this week by Yingjie Lan is PyMathProg. PyMathProg is self-proclaimed as an implementation of GLPK in the Python programming language environment that uses AMPL and GNU MathProg.

Python is a programming language that is getting more and more popular in the math and science realm. Python is very simple to use and could be considered a scripting language compared to other programming languages like C and Java. The Operations Research community can benefit greatly from having modeling platforms like PyMathProg to learn, implement, and expand capabilities. I will be looking forward to seeing PyMathProg's developements.

You can read more about PyMathProg at the Sourceforge project site
http://sourceforge.net/projects/pymprog/

Wednesday, April 15, 2009

JBoss Drools Business Rules book release


A new book was released this week on business rules called JBoss Drools Business Rules published by Packt. JBoss Drools Business Rules is a informational book intended for JBoss Drools implmentation and practice. The idea of the book is to help implement JBoss Drools to develop easy to understand business rules applications within a Business Rules Management System.

For those new to JBoss Drools, Drools is an open source business rules management system that is free to download, use, embed and distribute. From the Drools website...

Drools is a business rule management system (BRMS) and an enhanced Rules Engine implementation, ReteOO, based on Charles Forgy's Rete algorithm tailored for the JVM. More importantly, Drools provides for Declarative Programming and is flexible enough to match the semantics of your problem domain with Domain Specific Languages, graphical editing tools, web based tools and developer productivity tools.

Monday, April 13, 2009

IEOR Tools Tutorial: Using GLPK in Windows

The free software Operations Research tool GLPK has been getting more and more recognition. GLPK offers a great linear optimization software toolkit for the Operations Research analyst in a very compact package. The modeling abilities are near limitless. Yet if most Operations Research practitioners are like me they have to work on a Windows system day-to-day without the opportunity of a UNIX-variant workstation like Linux.

Never fear because there are a number of methods to getting GLPK to work on a Windows environment. In this tutorial I will explain some simple ways to get GLPK to work even if you are using Windows. I have listed them in no specific order. These methods are just a number of ways to accomplish the task of getting GLPK working in Windows. I will leave it up to the Operations Research practitioner to figure out which method is best.

1) Command line shell

Perhaps the easiest method to get GLPK working is to invoke GLPK from the command line. Thanks to some help from the free software community there was a Windows binary created for glpsol, aptly called glpsol.exe. Glpsol is the free optimization model engine of GLPK. You can find the work for glpsol.exe at http://winglpk.sourceforge.net/ with some documentation and installation instructions.

Simply use 'cmd' from windows Run to bring up the command line shell. Then use 'glpsol.exe (name of model file)' to execute an optimization model.


2) GLPK for Windows installer

This method makes for a easy way to setup and install GLPK in the Windows environment. It is not necessarily needed but it does bring all of the dependencies together to make sure that GLPK will work from the moment it is installed. You can find more about this project at http://gnuwin32.sourceforge.net/packages/glpk.htm. After this is installed then you can use glpsol.exe from the command line as mentioned above. NOTE: As of writing this blog entry the installer is setup for GLPK version 4.34.


3) Windows IDE like GUSEK

GUSEK is a full feature Windows IDE based solely on GLPK. This method removes a lot of the guesswork with installing GLPK and also creates a full mathematical programming environment on the Windows desktop. The GUI is very familiar to Windows users. The is also a stdout window that allows the model results to be viewed right alongside the GLPK model code. Currently his is my preferred usage of GLPK at the moment.

You can read an IEOR Tools interview with the developer of GUSEK.


4) Develop code with GLPK API

GLPK is technically a software toolkit and it is natively developed in ANSI C. Therefore one could develop modeling software based on the GLPK API. There has been a lot of work already done in this area already for other programming languages that are compatible in th Windows environment. Here are some to name a couple.

Java:
http://bjoern.dapnet.de/glpk/
VBA from Help-glpk mail archive:
http://www.mail-archive.com/help-glpk@gnu.org/msg01645.html


5) Emulate a Unix environment in Windows

Emulating a Unix/Linux environment is basically a bypass to get straight to GLPK since most linux distributions can install GLPK natively or from source easily. There is a number of applications that lets you setup a Linux-variant on a Windows machine. This method is not for the novice computer user. Basically one would install the emulation software on Windows. Then install the Linux distribution within that emulated environment. Once Linux in installed then the user can install GLPK on the system.

Virtualbox
qemu - qemu on Windows
cygwin

Thursday, April 9, 2009

Operations Research professor finds added Social Security benefit


Interesting article from Forbes on how Mark Eisner, an Operations Research professor, found a quirk in the Social Security benefits claims. Mark found an unusual code in the Social Security plan that allows him to claim spousal benefits. In doing so Mark could build up delayed retirement credits on his own personal benefits. Clever thinking and good sleuthing Mark. The article then goes on to explain the best way to maximize your Social Security. As for me I'm not banking on it to much, pun intended.

Wednesday, April 8, 2009

Operations Research goes to the ballpark

The boys of summer are back. For those who do not follow American baseball it is a summertime ritual that has lasted the great depression, world wars, and several presidencies. It used to be said that baseball is America's favorite pastime and that can still be said today.

One thing that always holds true with American baseball is the fans who love to talk numbers. Among a few things include batting average, home runs, stolen bases, earned runs, and strikeouts. It is definitely a playing ground not just for athletes but also for the mathematical and statistical fans.

Operations Research is not a stranger to baseball either. Michael Trick is part of the Sports Scheduling Group LLC whose client includes Major League Baseball. The Sports Scheduling Group analyzes team and league dependencies and formulates the baseball schedule every year. Then there are the predictive fans of baseball. Bruce Buckiet of New Jersey Institute of Technology determines most likely playoff bound teams for Major League Baseball. Buckiet was featured in the journal Operations Research and more can be found of his formula on his website.

Tuesday, April 7, 2009

IEORToolsOS: Linux distribution update

I've been doing a little work on the Linux distribution with a bent towards Industrial Engineering and Operations Research. I especially want to use this operating system to showcase free software and open source tools in the IE/OR fields.

I've decided to switch from Knoppix to Morphix. Knoppix was getting difficult because it easily got bloated with software. I had a hard time trying to get rid of software in order for everything to fit within 700MB. Morphix is based on Knoppix and was designed to be customizable, hence its name is a derivative of morphing and knoppix. Its base design is only 150MB which leaves a lot of room to add new software.

I've also settled on a name for this Linux distribution. I'm calling it IEORToolsOS. I know it is not very orignial but I wanted it to be readily recognizable of its function for existence. Also I can use this blog as a website for updates.

I'm still in the thought process of how to host the completed software project. I've not heard back from Google Code yet. I might have to host it myself. I've created a web server before that I hosted myself but it requires a dynamic IP address which wasn't too robust. I'll keep my options open.

Wednesday, April 1, 2009

GLPK 4.37 released

Andrew Makhorin released GNU Linear Programming Kit (GLPK) version 4.37 on Sunday. The new release has a new feature for binary feasibility computation. Sebastian Pokutta does a better job explaining the new features of GLPK 4.37. Another feature of the new release is one I am quite fond. Reason being is that I contributed an example model using the Gnu Math Prog Language. This is my first time contributing to a free software project.

A little bit about my example I contributed. At my place of work I am currently working with a team to develop new workforce shift schedules. They need to determine a shift scenario that will meet the minimum demands on a given day. Demands vary by day of the week. I used GUSEK to develop the workforce shift model and GLPK to solve for optimality. The model is basically a set coverage mixed integer linear program. The particularly useful nature of this model is that different shift scenarios can be experimented to find an optimal shift for the given demand.

I encourage other Operations Research analysts to contribute to Open Source projects. You need not be a coder or know a programming language to contribute. You may contribute just by being a user that can relay bugs back to the project leaders. You may also contribute by providing documentation or updates to a website. The simplest way to contribute is to tell others about the merits of the Open Source project