{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,17]],"date-time":"2025-10-17T14:16:26Z","timestamp":1760710586220,"version":"build-2065373602"},"reference-count":63,"publisher":"MDPI AG","issue":"11","license":[{"start":{"date-parts":[[2021,5,23]],"date-time":"2021-05-23T00:00:00Z","timestamp":1621728000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"Funda\u00e7\u00e3o para a Ci\u00eancia e a Tecnologia","award":["DSAIPA\/DS\/0022\/2018; PTDC\/CCI-INF\/29168\/2017; DSAIPA\/DS\/0113\/2019"],"award-info":[{"award-number":["DSAIPA\/DS\/0022\/2018; PTDC\/CCI-INF\/29168\/2017; DSAIPA\/DS\/0113\/2019"]}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Applied Sciences"],"abstract":"<jats:p>Several interesting libraries for optimization have been proposed. Some focus on individual optimization algorithms, or limited sets of them, and others focus on limited sets of problems. Frequently, the implementation of one of them does not precisely follow the formal definition, and they are difficult to personalize and compare. This makes it difficult to perform comparative studies and propose novel approaches. In this paper, we propose to solve these issues with the General Purpose Optimization Library (GPOL): a flexible and efficient multipurpose optimization library that covers a wide range of stochastic iterative search algorithms, through which flexible and modular implementation can allow for solving many different problem types from the fields of continuous and combinatorial optimization and supervised machine learning problem solving. Moreover, the library supports full-batch and mini-batch learning and allows carrying out computations on a CPU or GPU. The package is distributed under an MIT license. Source code, installation instructions, demos and tutorials are publicly available in our code hosting platform (the reference is provided in the Introduction).<\/jats:p>","DOI":"10.3390\/app11114774","type":"journal-article","created":{"date-parts":[[2021,5,23]],"date-time":"2021-05-23T23:58:05Z","timestamp":1621814285000},"page":"4774","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":12,"title":["General Purpose Optimization Library (GPOL): A Flexible and Efficient Multi-Purpose Optimization Library in Python"],"prefix":"10.3390","volume":"11","author":[{"given":"Illya","family":"Bakurov","sequence":"first","affiliation":[{"name":"Nova Information Management School (NOVA IMS), Universidade NOVA de Lisboa, Campus de Campolide,1070-312 Lisboa, Portugal"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1138-3345","authenticated-orcid":false,"given":"Marco","family":"Buzzelli","sequence":"additional","affiliation":[{"name":"Dipartimento di Informatica Sistemistica e Comunicazione, Universit\u00e0 degli Studi di Milano-Bicocca, Viale Sarca, 336, 20126 Milano, Italy"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8793-1451","authenticated-orcid":false,"given":"Mauro","family":"Castelli","sequence":"additional","affiliation":[{"name":"Nova Information Management School (NOVA IMS), Universidade NOVA de Lisboa, Campus de Campolide,1070-312 Lisboa, Portugal"}]},{"given":"Leonardo","family":"Vanneschi","sequence":"additional","affiliation":[{"name":"Nova Information Management School (NOVA IMS), Universidade NOVA de Lisboa, Campus de Campolide,1070-312 Lisboa, Portugal"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7461-1451","authenticated-orcid":false,"given":"Raimondo","family":"Schettini","sequence":"additional","affiliation":[{"name":"Dipartimento di Informatica Sistemistica e Comunicazione, Universit\u00e0 degli Studi di Milano-Bicocca, Viale Sarca, 336, 20126 Milano, Italy"}]}],"member":"1968","published-online":{"date-parts":[[2021,5,23]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","first-page":"547","DOI":"10.1177\/0963721419859346","article-title":"Responding to Causal Uncertainty through Abstract Thinking","volume":"28","author":"Namkoong","year":"2019","journal-title":"Curr. Dir. Psychol. Sci."},{"key":"ref_2","doi-asserted-by":"crossref","first-page":"378","DOI":"10.1016\/j.jesp.2006.12.005","article-title":"Abstract thinking increases one\u2019s sense of power","volume":"44","author":"Smith","year":"2008","journal-title":"J. Exp. Soc. Psychol."},{"key":"ref_3","doi-asserted-by":"crossref","unstructured":"Vallacher, R.R., and Wegner, D.M. (1989). Levels of personal agency: Individual variation in action identification. J. Personal. Soc. Psychol., 660\u2013671.","DOI":"10.1037\/\/0022-3514.57.4.660"},{"key":"ref_4","unstructured":"(2021, February 16). Optimize Live Editor Task\u2014MATLAB & Simulink. Available online: https:\/\/www.mathworks.com\/help\/matlab\/math\/optimize-live-editor-matlab.html."},{"key":"ref_5","unstructured":"(2021, February 16). Optimization (scipy.optimize)\u2014SciPy v1.6.0 Reference Guide. Available online: https:\/\/docs.scipy.org\/doc\/scipy\/reference\/tutorial\/optimize.html."},{"key":"ref_6","unstructured":"(2021, February 16). DEAP Documentation|DEAP 1.3.1 Documentation. Available online: https:\/\/deap.readthedocs.io\/en\/master\/."},{"key":"ref_7","unstructured":"(2021, February 16). Welcome to Gplearn\u2019s Documentation!\u2014Gplearn 0.4.1 Documentation. Available online: https:\/\/gplearn.readthedocs.io\/en\/stable\/."},{"key":"ref_8","unstructured":"(2021, February 16). Welcome to PySwarms\u2019s Documentation!|PySwarms 1.3.0 Documentation. Available online: https:\/\/pyswarms.readthedocs.io\/en\/latest\/index.html."},{"key":"ref_9","doi-asserted-by":"crossref","first-page":"100598","DOI":"10.1016\/j.swevo.2019.100598","article-title":"jMetalPy: A Python framework for multi-objective optimization with metaheuristics","volume":"51","author":"Nebro","year":"2019","journal-title":"Swarm Evol. Comput."},{"key":"ref_10","unstructured":"(2021, April 20). Project-Platypus\/Platypus: A Free and Open Source Python Library for Multiobjective Optimization. Available online: https:\/\/github.com\/Project-Platypus\/Platypus."},{"key":"ref_11","doi-asserted-by":"crossref","first-page":"618","DOI":"10.1016\/j.camwa.2020.02.010","article-title":"FEM based robust design optimization with Agros and \u0100rtap","volume":"81","author":"Karban","year":"2021","journal-title":"Comput. Math. Appl."},{"key":"ref_12","unstructured":"(2021, February 16). OR-Tools|Google Developers. Available online: https:\/\/developers.google.com\/optimization."},{"key":"ref_13","doi-asserted-by":"crossref","unstructured":"Floudas, C.A., and Pardalos, P.M. (2009). MetaheuristicsMetaheuristics. Encyclopedia of Optimization, Springer.","DOI":"10.1007\/978-0-387-74759-0"},{"key":"ref_14","unstructured":"Aarts, E., and Korst, J. (1989). Simulated Annealing and Boltzmann Machines: A Stochastic Approach to Combinatorial Optimization and Neural Computing, Wiley."},{"key":"ref_15","unstructured":"Kitzelmann, E., and Steiglitz, K. (1984). Combinatorial Optimization: Algorithms and Complexity, Taylor & Francis."},{"key":"ref_16","doi-asserted-by":"crossref","first-page":"239","DOI":"10.1007\/s101070100244","article-title":"Nonlinear programming without a penalty function","volume":"91","author":"Fletcher","year":"1999","journal-title":"Math. Program."},{"key":"ref_17","unstructured":"Price, K., Storn, R.M., and Lampinen, J.A. (2005). Differential Evolution: A Practical Approach to Global Optimization (Natural Computing Series), Springer."},{"key":"ref_18","doi-asserted-by":"crossref","unstructured":"Jeyakumar, V., and Rubinov, A. (2005). Continuous Optimization: Current Trends and Modern Applications, Springer.","DOI":"10.1007\/b137941"},{"key":"ref_19","doi-asserted-by":"crossref","unstructured":"Bartashevich, P., Grimaldi, L., and Mostaghim, S. (2017, January 5\u20138). PSO-based Search mechanism in dynamic environments: Swarms in Vector Fields. Proceedings of the 2017 IEEE Congress on Evolutionary Computation (CEC), Donostia, Spain.","DOI":"10.1109\/CEC.2017.7969450"},{"key":"ref_20","first-page":"490","article-title":"Problem definitions and evaluation criteria for the CEC 2014 special session and competition on single objective real-parameter numerical optimization","volume":"635","author":"Liang","year":"2014","journal-title":"Comput. Intell. Lab. Zhengzhou Univ. Zhengzhou China Tech. Rep. Nanyang Technol. Univ. Singap."},{"key":"ref_21","unstructured":"(2021, February 16). GEATbx-Genetic and Evolutionary Algorithms Toolbox in Matlab-Main Page. Available online: http:\/\/www.geatbx.com."},{"key":"ref_22","unstructured":"Applegate, D.L., Bixby, R.E., Chvatal, V., and Cook, W.J. (2007). The Traveling Salesman Problem: A Computational Study (Princeton Series in Applied Mathematics), Princeton University Press."},{"key":"ref_23","unstructured":"Martello, S., and Toth, P. (1990). Knapsack Problems: Algorithms and Computer Implementations, John Wiley & Sons, Inc."},{"key":"ref_24","first-page":"429","article-title":"Inductive Synthesis of Functional Programs: An Explanation Based Generalization Approach","volume":"7","author":"Kitzelmann","year":"2006","journal-title":"J. Mach. Learn. Res."},{"key":"ref_25","unstructured":"Schmid, U. (2003). Inductive Synthesis of Functional Programs, Universal Planning, Folding of Finite Programs, and Schema Abstraction by Analogical Reasoning, Springer Science & Business Media."},{"key":"ref_26","doi-asserted-by":"crossref","first-page":"73","DOI":"10.1007\/s10710-014-9218-0","article-title":"A C++ framework for geometric semantic genetic programming","volume":"16","author":"Castelli","year":"2014","journal-title":"Genet. Program. Evolvable Mach."},{"key":"ref_27","unstructured":"(2021, April 16). PyTorch, an Open Source Machine Learning Framework that Accelerates the Path from Research Prototyping to Production Deployment. Available online: https:\/\/pytorch.org\/."},{"key":"ref_28","unstructured":"(2021, April 16). Joblib: Running Python Functions as Pipeline Jobs. Available online: https:\/\/joblib.readthedocs.io\/en\/latest\/."},{"key":"ref_29","first-page":"2825","article-title":"Scikit-learn: Machine Learning in Python","volume":"12","author":"Pedregosa","year":"2011","journal-title":"J. Mach. Learn. Res."},{"key":"ref_30","unstructured":"Mitchell, T.M. (1997). Machine Learning, McGraw-Hill, Inc.. [1st ed.]."},{"key":"ref_31","unstructured":"Hoos, H., and Sttzle, T. (2004). Stochastic Local Search: Foundations & Applications, Morgan Kaufmann Publishers Inc."},{"key":"ref_32","unstructured":"Pereira, F., Machado, P., Costa, E., and Cardoso, A. (2015). Semantic Learning Machine: A Feedforward Neural Network Construction Algorithm Inspired by Geometric Semantic Genetic Programming. Progress in Artificial Intelligence, Springer International Publishing."},{"key":"ref_33","doi-asserted-by":"crossref","unstructured":"Holland, J.H. (1992). Adaptation in Natural and Artificial Systems: An Introductory Analysis with Applications to Biology, Control and Artificial Intelligence, MIT Press.","DOI":"10.7551\/mitpress\/1090.001.0001"},{"key":"ref_34","doi-asserted-by":"crossref","unstructured":"Darwin, C. (1859). On the Origins of Species by Means of Natural Selection, Murray.","DOI":"10.5962\/bhl.title.82303"},{"key":"ref_35","unstructured":"Mitchell, M. (1998). An Introduction to Genetic Algorithms, MIT Press."},{"key":"ref_36","unstructured":"Koza, J.R. (1992). Genetic Programming: On the Programming of Computers by Means of Natural Selection, MIT Press."},{"key":"ref_37","doi-asserted-by":"crossref","unstructured":"Vanneschi, L., and Poli, R. (2012). Genetic Programming\u2014Introduction, Applications, Theory and Open Issues. Handbook of Natural Computing, Springer.","DOI":"10.1007\/978-3-540-92910-9_24"},{"key":"ref_38","doi-asserted-by":"crossref","unstructured":"Moraglio, A., Krawiec, K., and Johnson, C.G. (2012). Geometric semantic genetic programming. International Conference on Parallel Problem Solving from Nature, Springer.","DOI":"10.1007\/978-3-642-32937-1_3"},{"key":"ref_39","doi-asserted-by":"crossref","first-page":"195","DOI":"10.1007\/s10710-013-9210-0","article-title":"A survey of semantic methods in genetic programming","volume":"15","author":"Vanneschi","year":"2014","journal-title":"Genet. Program. Evolvable Mach."},{"key":"ref_40","doi-asserted-by":"crossref","unstructured":"Vanneschi, L., Silva, S., Castelli, M., and Manzoni, L. (2014). Geometric semantic genetic programming for real life applications. Genetic Programming Theory and Practice xi, Springer.","DOI":"10.1007\/978-1-4939-0375-7_11"},{"key":"ref_41","doi-asserted-by":"crossref","first-page":"42","DOI":"10.1504\/IJBIC.2016.074634","article-title":"Parameter evaluation of geometric semantic genetic programming in pharmacokinetics","volume":"8","author":"Castelli","year":"2016","journal-title":"Int. J. Bio Inspired Comput."},{"key":"ref_42","doi-asserted-by":"crossref","unstructured":"Bartashevich, P., Bakurov, I., Mostaghim, S., and Vanneschi, L. (2018). PSO-Based Search Rules for Aerial Swarms Against Unexplored Vector Fields via Genetic Programming. International Conference on Parallel Problem Solving from Nature, Springer.","DOI":"10.1007\/978-3-319-99253-2_4"},{"key":"ref_43","unstructured":"Kaufmann, P., and Castillo, P. (2019). Supporting medical decisions for treating rare diseases through genetic programming. Applications of Evolutionary Computation, Springer. Lecture Notes in Computer Science (Including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)."},{"key":"ref_44","doi-asserted-by":"crossref","first-page":"3","DOI":"10.1007\/978-3-319-44003-3_1","article-title":"An Introduction to Geometric Semantic Genetic Programming","volume":"Volume 663","author":"Vanneschi","year":"2017","journal-title":"NEO 2015"},{"key":"ref_45","doi-asserted-by":"crossref","unstructured":"Castelli, M., Castaldi, D., Giordani, I., Silva, S., Vanneschi, L., Archetti, F., and Maccagnola, D. (2013). An efficient implementation of geometric semantic genetic programming for anticoagulation level prediction in pharmacogenetics. Portuguese Conference on Artificial Intelligence, Springer.","DOI":"10.1145\/2464576.2464644"},{"key":"ref_46","first-page":"341","article-title":"Differential Evolution: A Simple and Efficient Adaptive Scheme for Global Optimization Over Continuous Spaces","volume":"23","author":"Storn","year":"1995","journal-title":"Tech. Rep. TR-95-012 ICSI"},{"key":"ref_47","unstructured":"Storn, R. (1996, January 19\u201322). On the usage of differential evolution for function optimization. Proceedings of the Proceedings of North American Fuzzy Information Processing, Berkeley, CA, USA."},{"key":"ref_48","doi-asserted-by":"crossref","first-page":"717","DOI":"10.1109\/TEVC.2014.2375933","article-title":"Improving Differential Evolution With a Successful-Parent-Selecting Framework","volume":"19","author":"Guo","year":"2015","journal-title":"IEEE Trans. Evol. Comput."},{"key":"ref_49","doi-asserted-by":"crossref","unstructured":"Eltaeib, T., and Mahmood, A. (2018). Differential Evolution: A Survey and Analysis. Appl. Sci., 8.","DOI":"10.3390\/app8101945"},{"key":"ref_50","doi-asserted-by":"crossref","first-page":"4","DOI":"10.1109\/TEVC.2010.2059031","article-title":"Differential Evolution: A Survey of the State-of-the-Art","volume":"15","author":"Das","year":"2011","journal-title":"IEEE Trans. Evol. Comput."},{"key":"ref_51","unstructured":"Kennedy, J., and Eberhart, R. (December, January 27). Particle swarm optimization. Proceedings of the ICNN\u201995\u2014International Conference on Neural Networks, Perth, WA, Australia."},{"key":"ref_52","unstructured":"Shi, Y., and Eberhart, R. (1998, January 4\u20139). A modified particle swarm optimizer. Proceedings of the 1998 IEEE International Conference on Evolutionary Computation Proceedings. IEEE World Congress on Computational Intelligence (Cat. No.98TH8360), Anchorage, AK, USA."},{"key":"ref_53","unstructured":"Kennedy, J., and Eberhart, R.C. (2001). Swarm Intelligence, Morgan Kaufmann Publishers Inc."},{"key":"ref_54","unstructured":"Carlisle, A., and Dozier, G. (2001, January 6\u20137). An off-the-shelf pso. Proceedings of the Workshop on Particle Swarm Optimization, Purdue School of Engineering and Technology, Indianapolis, IN, USA."},{"key":"ref_55","unstructured":"Mussi, L., Cagnoni, S., and Daolio, F. (2009, January 9\u201312). Empirical assessment of the effects of update synchronization in Particle Swarm Optimization. Proceedings of the 2009 AI*IA Workshop on Complexity, Evolution and Emergent Intelligence, Reggio Emilia, Italy."},{"key":"ref_56","doi-asserted-by":"crossref","unstructured":"Rada-Vilela, J., Zhang, M., and Seah, W. (2011, January 12\u201316). A Performance Study on Synchronous and Asynchronous Updates in Particle Swarm Optimization. Proceedings of the 13th Annual Conference on Genetic and Evolutionary Computation, Dublin, Ireland.","DOI":"10.1145\/2001576.2001581"},{"key":"ref_57","doi-asserted-by":"crossref","unstructured":"Vanneschi, L., Bakurov, I., and Castelli, M. (2017, January 5\u20138). An initialization technique for geometric semantic GP based on demes evolution and despeciation. Proceedings of the Congress on Evolutionary Computation (CEC), San Sebastian, Spain.","DOI":"10.1109\/CEC.2017.7969303"},{"key":"ref_58","doi-asserted-by":"crossref","unstructured":"Bakurov, I., Vanneschi, L., Castelli, M., and Fontanella, F. (2018). EDDA-V2\u2013An Improvement of the Evolutionary Demes Despeciation Algorithm. International Conference on Parallel Problem Solving from Nature, Springer.","DOI":"10.1007\/978-3-319-99253-2_15"},{"key":"ref_59","unstructured":"Moraglio, A. (2007). Towards a Geometric Unification of Evolutionary Algorithms. [Ph.D. Thesis, Department of Computer Science\u2014University of Essex]."},{"key":"ref_60","first-page":"199","article-title":"Genetic Algorithm\u2014An Approach to Solve Global Optimization Problems","volume":"1","author":"Bajpai","year":"2010","journal-title":"Indian J. Comput. Sci. Eng."},{"key":"ref_61","doi-asserted-by":"crossref","first-page":"619","DOI":"10.1016\/S0167-8191(05)80052-3","article-title":"The parallel genetic algorithm as function optimizer","volume":"17","author":"Schomisch","year":"1991","journal-title":"Parallel Comput."},{"key":"ref_62","unstructured":"(2021, February 16). Traveling Salesman Problem|OR-Tools|Google Developers. Available online: https:\/\/developers.google.com\/optimization\/routing\/tsp."},{"key":"ref_63","doi-asserted-by":"crossref","first-page":"81","DOI":"10.1016\/0095-0696(78)90006-2","article-title":"Hedonic housing prices and the demand for clean air","volume":"5","author":"Harrison","year":"1978","journal-title":"J. Environ. Econ. Manag."}],"container-title":["Applied Sciences"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2076-3417\/11\/11\/4774\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,11]],"date-time":"2025-10-11T06:06:16Z","timestamp":1760162776000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2076-3417\/11\/11\/4774"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,5,23]]},"references-count":63,"journal-issue":{"issue":"11","published-online":{"date-parts":[[2021,6]]}},"alternative-id":["app11114774"],"URL":"https:\/\/doi.org\/10.3390\/app11114774","relation":{},"ISSN":["2076-3417"],"issn-type":[{"type":"electronic","value":"2076-3417"}],"subject":[],"published":{"date-parts":[[2021,5,23]]}}}