Skip to content

mramiro/MOOUtils

Repository files navigation

MOOUtils

MOOUtils (Multi-Objective Optimization Utils) is a small C library for multi-objective algorithms quality assessment. I originally intended to include generic versions of some optimization algorithms (hence the name), but due to time constraints, only the quality indicators portion of the code is included... for now.

##Features

  1. Quality indicators calculation
  • Generational distance
  • Inverted generational distance
  • Spread
  • Generalized spread
  • Epsilon (additive and multiplicative)

##Building instructions

I tested the code with gcc 4.6 on Linux, but it should work with any other compiler and OS. The only dependancy is C's math library (math.h).

On Linux (and OS X?), you can use the provided makefile to build a static library, by using:

make libmooutils.a

After that, you can just copy both the generated libmooutils.a file and the include folder into your project. Don't forget to add the location of libmooutils.a to your LD_LIBRARY_PATH and including both it and the math.h library (-lmooutils -lm flags) when building your project.

There's also an example of the use of the library included. You can build it with:

make example

This will build the library and the example's executable file. Then you can run it with:

./example

The example program reads the data from the example_data.txt and example_truefront.txt, performs calculations of some quality indicators and outputs the results to stdout.

##About

I wrote most of this code during my Master's Degree studies at Instituto Tecnológico de Ciudad Madero. My research there focused on multi-objective optimization techniques applied to a certain combinatorial problem (task scheduling and voltage selection in heterogenous computing systems, for those wondering), and I wrote this functions as a way for me to evaluate my algorithms.

Both as an exercise and hoping that my code is of any use to anyone in the same line of research, I decided to document it and repurposed it as a C library. Feel free to use it (and maybe even expand it).

Special thanks to Nebro and Durillo's jMetal framework, for providing me a way of comparing implementations and results.

--Miguel Á. Ramiro

About

A C library for multi-objective quality indicators

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages