My way to reference things…

The Decision Deck project collaboratively develops Open Source software tools to support the Multi-Criteria Decision Aiding (MCDA) process.

Recently, the board of Decision Deck has taken an initiative to develop an interface  for R, the “MCDA” package. However, installing it with RStudio, on a Mac needs a few tricks, mainly because the dependencies are only available in source form, and may need compilation of C/C++/Fortran. Here is what I did:

  • Make sure that you have accepted the latest user agreement for Xcode. You can do that by simply opening Xcode, or by typing
sudo xcodebuild -license accept
  • A critical dependency is the “Rglpk” package, which by its turn requires the “glpk” to be installed. To install “glpk” you can:
    • Install Homebrew (if you don’t have it installed yet). You can follow the Homebrew site, or just type
/usr/bin/ruby -e "$(curl -fsSL"
    • Then just type:

brew install glpk

Then, you should expect to be ready. Go to RStudio and type:


Good Luck!


ILP is a very well know algorithm to discover Petri Nets out of Event Logs. It is implemented as a plug-in for ProM (versions 6.*) while it is also used in other PM techniques (e.g., the Divide and Conquer plug-in use ILP to Discover Petri Nets using Decomposition). To solve the corresponding linear problem it uses the free library Lpsolve.

However if you are using a 64bit Mac like me, if you try to run any ILP related action through ProM you will get a java exception.

In the following, I describe the solution I managed to find to make it work (HT to The general idea goes like this: 1) Build the lpsolve files from source, so that they are compatible with your system and 2) copy them to the appropriate folders. This is what I did, step-by-step (it’s easier than it looks!):

1. Get the files. Browse the lpsolve files at source forge ( and download lp_solve_5.5_source.tar.gz and lp_solve_5.5_java

2. Prepare files. Expand lp_solve_5.5_source.tar.gz into a directory named ‘lp_solve_5.5’ (the lp_solve_5.5_java should be an unzipped folder with that name)

3. Create the necessary files by building the library. Navigate to the lpsolve55 directory in the lp_solve_5.5 folder and just enter the command (through Terminal)

$ sh ccc.osx

You should see two newly built files:

liblpsolve55.a     liblpsolve55.dylib

I found them in a directory called bin/osx64, but based on different versions of the library you may find them directly to the lpsolve55 folder.

4. Install the lpsolve library. You need to copy the files to your local lib folder. Assuming that you are in the directory where those two files are, you can do it with the simple command

$ sudo cp liblpsolve55.a liblpsolve55.dylib /usr/local/lib

5. You may want to test it. To solve the demo linear problem just navigate to the demo folder of lp_solve_5.5 directory and type:

$ sh ccc

6. Build the lp_solve JNI extension. First navigate to the lp_solve_5.5_java/lib/mac folder. Because The script “build-osx” in the mac subdirectory is a DOS text file, if you try execute it, you will get “command not found” error. To convert it into a Unix file, remove the carriage returns:

$ tr -d "\r" < build-osx > build-osx1

Edit build-osx1 to set LPSOLVE_DIR to the location of directory lp_solve_5.5 on your computer. TIP: When I executed this command, to my surprise all the “r” were disappeared from the new file. So mind to check it… Then, just type:

$ sh build-osx1

You may see a lot of warnings, but eventually it will create the extension library liblpsolve55j.jnilib

7. Install the lp_solve JNI extension. The file liblpsolve55j.jnilib should be copied to /Library/Java/

$ cp liblpsolve55j.jnilib ~/Library/Java/Extensions

8. Test the Java extension. You will run the same demo and you should expect the same results. There is also a Java unit test.

$ cd lp_solve_5.5_java/demo
$ java -cp ./demo.jar:../lib/lpsolve55j.jar Demo
$ java -cp ./unittests.jar:../lib/lpsolve55j.jar:../lib/junit.jar 

9. Fix the ProM. Now, if you completed step 8 successfully, congrats you have lpsolve installed on your 64bit Mac. However, ProM doesn’t know it yet… In particular, ILP invokes the liblpsolve55.* files from the installed packages. So you just need to copy these files into the ProM packages folders. In my case, I navigated to the local lib folder and I used the command

cp liblpsolve55.a liblpsolve55.dylib /Users/pavlos/.ProM64/packages/lpsolve-.5.0.15/


It sounds complicated, but it is simpler than always looking for a Windows machine to discover your Petri Nets!

Excel is for me the most common tool to prepare data in tabular format. Its links however to Tex are not existent…

What happens when typing data into Tex is not an option? I used to craft a solution like adding a column of “&” between each entry and a column of “\\” at the end. Then just pasting this in between the table and tabular commands will do the job…

Then I found this plug-in (Excel add-on) called Excel2latex, which makes excellent work!

…and it works for Mac (tested with Snow Leopard, Excel 2011), yet in Windows it has richer features!

ProM ( is an excellent tool for process mining researchers, but Mac users may have felt sometimes as second class users…

For instance, while their is a script to invoke package manager from Windows there is no similar file for Mac OS. Below is a one line script to invoke the package manager from Terminal. Just mind to navigate to the right directory…

pavlos$ java -ea -Xmx1G -XX:MaxPermSize=512m -classpath ProM63.jar org.processmining.contexts.uitopia.packagemanager.PMFrame

There are a lot of times that you need to look simultaneously at two views of the same document. For me, a common occurrence is when I read papers and I want to look at the references while still reading the main text. In Preview, Mac OS this is not straightforward…

I found two quick ways:

  1. For script freaks: While you are reading your file, open Terminal, write open -n , where is the exact location and filename of the pdf you want to open twice. (Tip: Because typing the exact location is bothersome, you can always drag the file into Terminal 😉 )
  2. For common people: Just press Cmd-P and from the lower left corner, select PDF–>Open PDF in Preview (see screenshot below)

Open PDF in Preview


(Just tested with Snow Leopard)

The common input for Process Mining tasks is the Event Log (and its common format the csv). Event Log files contain rows of events along with their timestamps (and of course their case Id).

However, you might need to have a file where each row is the sequence of the activities performed per case. Although, this is a quite common requirement, surprisingly, the current versions of ProM, do not provide such a feature! Maybe because it is so trivial…

Indeed, in R, after you import the csv file (let’s call it EventLog), you just need two lines of code!

> EventLog[with(EventLog,order(ID,Complete.Timestamp)),]

> tracesDF<- aggregate(EventLog$Activity,by=list(EventLog$ID),FUN=paste)

Dave Seah

My way to reference things...

My way to reference things...

Flux Capacitor

My way to reference things...

End to End BPM

A pure BPM research site