Adaptive fireworks algorithm