Search code examples
linuxalgorithmoptimizationheuristicscalibration

Software to Tune/Calibrate Properties for Heuristic Algorithms


Today I read that there is a software called WinCalibra (scroll a bit down) which can take a text file with properties as input.

This program can then optimize the input properties based on the output values of your algorithm. See this paper or the user documentation for more information (see link above; sadly doc is a zipped exe).

Do you know other software which can do the same which runs under Linux? (preferable Open Source)

EDIT: Since I need this for a java application: should I invest my research in java libraries like gaul or watchmaker? The problem is that I don't want to roll out my own solution nor I have time to do so. Do you have pointers to an out-of-the-box applications like Calibra? (internet searches weren't successfull; I only found libraries)

I decided to give away the bounty (otherwise no one would have a benefit) although I didn't found a satisfactory solution :-( (out-of-the-box application)


Solution

  • Some kind of (Metropolis algorithm-like) probability selected random walk is a possibility in this instance. Perhaps with simulated annealing to improve the final selection. Though the timing parameters you've supplied are not optimal for getting a really great result this way.

    It works like this:

    1. You start at some point. Use your existing data to pick one that look promising (like the highest value you've got). Set o to the output value at this point.
    2. You propose a randomly selected step in the input space, assign the output value there to n.
    3. Accept the step (that is update the working position) if 1) n>o or 2) the new value is lower, but a random number on [0,1) is less than f(n/o) for some monotonically increasing f() with range and domain on [0,1).
    4. Repeat steps 2 and 3 as long as you can afford, collecting statistics at each step.
    5. Finally compute the result. In your case an average of all points is probably sufficient.

    Important frill: This approach has trouble if the space has many local maxima with deep dips between them unless the step size is big enough to get past the dips; but big steps makes the whole thing slow to converge. To fix this you do two things:

    1. Do simulated annealing (start with a large step size and gradually reduce it, thus allowing the walker to move between local maxima early on, but trapping it in one region later to accumulate precision results.
    2. Use several (many if you can afford it) independent walkers so that they can get trapped in different local maxima. The more you use, and the bigger the difference in output values, the more likely you are to get the best maxima.

    This is not necessary if you know that you only have one, big, broad, nicely behaved local extreme.

    Finally, the selection of f(). You can just use f(x) = x, but you'll get optimal convergence if you use f(x) = exp(-(1/x)).


    Again, you don't have enough time for a great many steps (though if you have multiple computers, you can run separate instances to get the multiple walkers effect, which will help), so you might be better off with some kind of deterministic approach. But that is not a subject I know enough about to offer any advice.