Self-Organizing Migrating Algorithm