Giter Club home page Giter Club logo

ampo's Introduction

The Adaptive Multi-Population Optimization (AMPO) Algorithm

Introduction

This is the implementation of the AMPO [1] in Python 3. The AMPO is a newly proposed multi-population based metaheuristic for global continuous optimization. The algorithm hybridizes yet modifies several useful operations like mutation and memory retention from evolutionary algorithms and swarm intelligence (SI) techniques in a multi-population manner. Furthermore, the diverse control on multiple populations, solution cloning and reset operation are designed. Compared with other metaheuristics, the AMPO can attain an adaptive balance between the capabilities of exploration and exploitation for various optimization problems.

Usage (An example)

from ampo.ampo import AMPO
import numpy as np

# Objective Function: a minimization optimization problem
def functiton(variables):
    return np.sum(variables**2)

if __name__ == '__main__':

    '''
    bound: the bound of the problem
    pop: population size. default value: 50.
    max_iters: maximum iterations
    p_ld_ls: the probability of a random search group individual being transformed into the local search (ls) group by the leader (ld) group individual. default value: 0.8.
    p_ls_ls: the probability of a random search group individual being transformed into the local search (ls) group by a local search (ls) group individual. default value: 0.8.
    pr: partition rate of the main pop (random search, local search, global search and leader groups) and the migrating group. default value: 0.6.
    w: the omega parameter used in the solution update of the global search group individuals. default value: 0.1.
    r: the gamma parameter used in the update of the local search group individuals. default value: 0.9.
    show_info: to print search information at each iteration
    '''

    algo = AMPO(func = functiton, dim=2, bound=[-100,100], pop=50, max_iters=1000, p_ld_ls=0.8, p_ls_ls=0.8, pr=0.6, w=0.1, r=0.9, show_info=False)
    best_solution, best_fitness, history = algo.run()
    print('Best solution:' + str(best_solution))
    print('Best fitness:' + str(best_fitness))

Note

The design of the AMPO is partly inspired by virus spread in nature. Our preliminary work called Virus Spread Optimization (VSO) can be seen in [2][3]. The design ideas of both algorithms are almost same. However, the AMPO is the simplified version of the VSO. Compared with the VSO, the AMPO has fewer user-controlled parameters and a faster speed.

Publications

[1] Z. Li, V. Tam and L. K. Yeung, "An Adaptive Multi-Population Optimization Algorithm for Global Continuous Optimization," in IEEE Access, vol. 9, pp. 19960-19989, 2021, doi: 10.1109/ACCESS.2021.3054636. [Download] [Cite]

[2] Z. Li, V. Tam and L. K. Yeung, "A study on parameter sensitivity analysis of the virus spread optimization," 2020 IEEE Symposium Series on Computational Intelligence (SSCI), Canberra, Australia, 2020, pp. 1535-1542, doi: 10.1109/SSCI47803.2020.9308167. [Download] [Cite]

[3] Z. Li & V. Tam, "A novel meta-heuristic optimization algorithm inspired by the spread of viruses," arXiv preprint arXiv:2006.06282, 2020. [Download]

ampo's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.