Journal of Combinatorial Optimization

, Volume 30, Issue 3, pp 710–728 | Cite as

A Python/C++ library for bound-constrained global optimization using a biased random-key genetic algorithm

  • R. M. A. Silva
  • M. G. C. ResendeEmail author
  • P. M. Pardalos


This paper describes libbrkga, a GNU-style dynamic shared Python/C++ library of the biased random-key genetic algorithm (BRKGA) for bound constrained global optimization. BRKGA (J Heuristics 17:487–525, 2011b) is a general search metaheuristic for finding optimal or near-optimal solutions to hard optimization problems. It is derived from the random-key genetic algorithm of Bean (ORSA J Comput 6:154–160, 1994), differing in the way solutions are combined to produce offspring. After a brief introduction to the BRKGA, including a description of the local search procedure used in its decoder, we show how to download, install, configure, and use the library through an illustrative example.


Biased random-key genetic algorithm Global optimization Multimodal functions Continuous optimization  Heuristic Stochastic algorithm Stochastic local search Nonlinear programming 



The research of R. M. A Silva was partially supported by the Brazilian National Council for Scientic and Technological Development (CNPq), the Foundation for Support of Research of the State of Minas Gerais, Brazil (FAPEMIG), Coordination for the Improvement of Higher Education Personnel, Brazil (CAPES), Foundation for the Support of Development of the Federal University of Pernambuco, Brazil (FADE), the Ofce for Research and Graduate Studies of the Federal University of Pernambuco (PROPESQ), and the Foundation for Support of Science and Technology of the State of Pernambuco (FACEPE).


  1. Ackley DH (1987) A connectionist machine for genetic hillclimbing. Kluwer Academic Publishers, BostonCrossRefGoogle Scholar
  2. Bäck T (1996) Evolutionary algorithms in theory and practice. Oxford University Press, New YorkGoogle Scholar
  3. Bean JC (1994) Genetic algorithms and random Keys for sequencing and optimization. ORSA J Comput 6:154–160CrossRefGoogle Scholar
  4. Calcote J (2010) Autotools: a practitioner’s guide to GNU autoconf, automake, and libtool. No Starch Press, San FranciscoGoogle Scholar
  5. Ericsson M, Resende MGC, Pardalos PM (2002) A genetic algorithm for the weight setting problem in OSPF routing. J Comb Optim 6:299–333MathSciNetCrossRefGoogle Scholar
  6. Gonçalves JF, Almeida J (2002) A hybrid genetic algorithm for assembly line balancing. J Heuristics 8:629–642CrossRefGoogle Scholar
  7. Gonçalves JF, Resende MGC (2004) An evolutionary algorithm for manufacturing cell formation. Comput Ind Eng 47:247–273CrossRefGoogle Scholar
  8. Gonçalves JF, Resende MGC (2011a) Biased random-key genetic algorithms for combinatorial optimization. J Heuristics 17:487–525CrossRefGoogle Scholar
  9. Gonçalves JF, Resende MGC (2011b) Biased random-key genetic algorithms for combinatorial optimization. J Heuristics 17(5):487–525CrossRefGoogle Scholar
  10. Gonçalves JF, Resende MGC (2012) A parallel multi-population biased random-key genetic algorithm for a container loading problem. Comput Oper Res 39(2):179–190MathSciNetCrossRefGoogle Scholar
  11. Gonçalves JF, Resende MGC (2013) A biased random key genetic algorithm for 2D and 3D bin packing problems. Int J Prod Econ 145:500–510CrossRefGoogle Scholar
  12. Hirsch MJ, Meneses CN, Pardalos PM, Resende MGC (2007) Global optimization by continuous grasp. Optim Lett 1:201–212MathSciNetCrossRefzbMATHGoogle Scholar
  13. Hirsch MJ, Pardalos PM, Resende MGC (2010) Speeding up continuous GRASP. J Oper Res 205:507–521CrossRefGoogle Scholar
  14. Matsumoto M, Nishimura T (1998) Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Trans Model Comput Simul 8(1):3–30CrossRefGoogle Scholar
  15. McGuire P (2007) Getting started with pyparsing. O’Reilly Media, SebastopolGoogle Scholar
  16. Resende MGC (2012) Biased random-key genetic algorithms with applications in telecommunications. TOP 20(1):130–153MathSciNetCrossRefGoogle Scholar
  17. Resende MGC, Toso Rodrigo F, Silva Ricardo MA (2012) A biased random-key genetic algorithm for the steiner triple covering problem. Optim Lett 6(4):605–619MathSciNetCrossRefzbMATHGoogle Scholar
  18. Silva RMA, Resende MGC, Pardalos PM, Gonçalves JF (2012) Biased random-key genetic algorithm for bound-constrained global optimization. In: Aloise D, Hansen P, Rocha C (eds) Proceedings of the global optimization workshop, pp 133–136Google Scholar
  19. Spears WM, DeJong KA (1991) On the virtues of parameterized uniform crossover. In: Proceedings of the fourth international conference on genetic algorithms, pp 230–236Google Scholar
  20. SymPy (2011) URL. Accessed 11 Jul 2011
  21. Toso RF, Resende MGC (2012) A C++ application programming interface for biased random-key genetic algorithms. Technical report, Algorithms and Optimization Research Department, AT &T Labs ResearchGoogle Scholar
  22. van Rossum G, Drake FL Jr (eds) (2010a) Extending and embedding Python, Release 2.7. Python Software Foundation, Wolfeboro FallsGoogle Scholar
  23. van Rossum G, Drake FL Jr (eds) (2010b) Python/C API reference manual, release 2.7. Python Software Foundation, Wolfeboro FallsGoogle Scholar

Copyright information

© Springer Science+Business Media New York 2013

Authors and Affiliations

  • R. M. A. Silva
    • 1
  • M. G. C. Resende
    • 2
    Email author
  • P. M. Pardalos
    • 3
  1. 1.Centro de Informática (CIn)Universidade Federal de PernambucoRecifeBrazil
  2. 2.Algorithms and Optimization Research DepartmentAT&T Labs ResearchFlorham ParkUSA
  3. 3.Department of Industrial and Systems EngineeringUniversity of FloridaGainesvilleUSA

Personalised recommendations