simanneal icon indicating copy to clipboard operation
simanneal copied to clipboard

question on multi-objective

Open atefeh-mehrabi opened this issue 4 years ago • 1 comments

Hi, Does this code support multi-objective simulated annealing when objectives are multiple different independent functions? Is there any sample or hint on which parts of anneal.py should be modified? I would appreciate your guidance on this and thanks for sharing this repository.

atefeh-mehrabi avatar May 26 '20 20:05 atefeh-mehrabi

If you have multiple objective functions, you must combine them into a single function. In simanneal terminology, you have to define the energy method. This could be anything from simple weighting:

    def energy(self):
        a = objective_a()
        b = objective_b()
        return (4 * a) + b

For more complex multi-objective problems, you can add any logic that can be implemented in Python. As long as you return a scalar value, simanneal will find a way to minimize that value.

A common technique, known to me through the use of the conservation planning tool Marxan, is to have positive objectives as "targets" with equal units, while other negative objectives are treated as "penalties" for exceeding a certain threshold.

perrygeo avatar May 27 '20 14:05 perrygeo