http://youtu.be/Tghs02PA7Bo
Click the link for a video of the resource leveling in action.
Poor software do not give you options for selecting the most appropriate resource leveling algorithm, some do not even provide an algorithm for optimizations jut find a feasible solution.
http://www.stottlerhenke.com/products/aurora/Turnaround/2009-10-01_Aurora_WhitePaper_Turnaround.pdf
With Spider Project my approach would be to start with the use of some algorithm option that follows my activities prioritization order, thereafter when not enough to keep the job on time I would switch to optimization algorithms that in Spider jargon mean looking for shortest job duration.

The schedule stability is no less important, especially at the project execution phase. That is why Spider Project features an additional option - the support of the earlier project version schedule (the order of activity execution is the same as in selected earlier project version).
The schedule stability is so important that some software developers recommend avoiding their own resource leveling, perhaps because they do not provide an option for schedule stability.
After finding my initial algorithm then I would use algorithm that keeps previous update sequence for resource leveled activities, otherwise the PM will be driven crazy. Then optimization if needed to keep the job within target duration and then continue with prior update sequence algorithm. Needless to say the variable quantities and partial assignments option must follow the selected algorithm, must follow good math.
As you can see my approach does not means always using what Spider calls optimization methods.
Not all software provides all the options and many only provide a single algorithm option, and usually a very poor option.
Regards,
Rafael