Skip to main content

Using Modularity Metrics as Design Features to Guide Evolution in Genetic Programming

Part of the Genetic and Evolutionary Computation book series (GEVO)

Abstract

Genetic Programming has advanced the state of the art in the field of software synthesis. However, it has still not been able to produce some of the more complex programs routinely written by humans. One of the heuristics human programmers use to build complex software is the organization of code into reusable modules. Ever since the introduction of the concept of Automatically Defined Functions (ADFs) by John Koza in the 1990s, the genetic programming community has also expressed the need to evolve modular programs, but despite this interest and several subsequent innovations, the goal of evolving large-scale software built on reusable modules has not yet been achieved. In this chapter, we first discuss two modularity metrics—Reuse and Repetition—and describe the procedure for calculating them from program code and corresponding execution traces. We then introduce the concept of design features, which can be used alongside error measures to guide evolution. We also demonstrate the use of modularity design features in parent selection.

This is a preview of subscription content, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-030-39958-0_9
  • Chapter length: 16 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
eBook
USD   139.00
Price excludes VAT (USA)
  • ISBN: 978-3-030-39958-0
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
Softcover Book
USD   179.99
Price excludes VAT (USA)
Hardcover Book
USD   179.99
Price excludes VAT (USA)
Fig. 9.1
Fig. 9.2

Notes

  1. 1.

    https://github.com/lspector/Clojush.

References

  1. Clune, J., Mouret, J. B., & Lipson, H. (2013). The evolutionary origins of modularity. Proceedings of the Royal Society B: Biological Sciences, 280(1755), 20122863.

    CrossRef  Google Scholar 

  2. Helmuth, T., & Spector, L. (2015, July). General program synthesis benchmark suite. In Proceedings of the 2015 Annual Conference on Genetic and Evolutionary Computation (pp. 1039–1046). ACM.

    Google Scholar 

  3. Koza, J. R. (1992). Genetic programming: on the programming of computers by means of natural selection (Vol. 1). MIT press.

    Google Scholar 

  4. Koza, J. R. (1994). Architecture-altering operations for evolving the architecture of a multi-part program in genetic programming.

    Google Scholar 

  5. Angeline, P. J., & Pollack, J. (1993, February). Evolutionary module acquisition. In Proceedings of the second annual conference on evolutionary programming (pp. 154–163).

    Google Scholar 

  6. Spector, L. (1995). Evolving Control Structures with Automatically Defined Macros. Submitted to the 1995 AAAI Fall Symposium on Genetic Programming.

    Google Scholar 

  7. Banzhaf, W., Banscherus, D., & Dittrich, P. (1999). Hierarchical genetic programming using local modules. Secretary of the SFB 531.

    Google Scholar 

  8. Dhama, H. (1995). Quantitative models of cohesion and coupling in software. Journal of Systems and Software, 29(1), 65–74.

    CrossRef  Google Scholar 

  9. Saini, A. K., & Spector, L. (2019). Modularity Metrics for Genetic Programming. In Genetic and Evolutionary Computation Conference Companion (GECCO 2019 Companion), July 13–17, 2019, Prague, Czech Republic. ACM, New York, NY, USA, 4 pages. https://doi.org/10.1145/3319619.3326908

  10. Callebaut, W., Rasskin-Gutman, D., & Simon, H. A. (Eds.). (2005). Modularity: understanding the development and evolution of natural complex systems. MIT press.

    Google Scholar 

  11. O’Neill, M., Vanneschi, L., Gustafson, S., & Banzhaf, W. (2010). Open issues in genetic programming. Genetic Programming and Evolvable Machines, 11(3–4), 339–363.

    CrossRef  Google Scholar 

  12. Gerules, G., Janikow, C. (2016, July). A survey of modularity in genetic programming. In 2016 IEEE Congress on Evolutionary Computation (CEC) (pp. 5034–5043). IEEE.

    Google Scholar 

  13. Lee Spector. 2001. Autoconstructive evolution: Push, pushGP, and pushpop. In Proceedings of the Genetic and Evolutionary Computation Conference (GECCO- 2001), Vol. 137.

    Google Scholar 

  14. Spector, L., Martin, B., Harrington, K., Helmuth, T. (2011, July). Tag-based modules in genetic programming. In Proceedings of the 13th annual conference on Genetic and evolutionary computation (pp. 1419–1426). ACM.

    Google Scholar 

  15. Helmuth, T., Spector, L., & Matheson, J. (2015). Solving uncompromising problems with lexicase selection. IEEE Transactions on Evolutionary Computation, 19(5), 630–643.

    CrossRef  Google Scholar 

  16. La Cava, W., Spector, L., & Danai, K. (2016, July). Epsilon-lexicase selection for regression. In Proceedings of the Genetic and Evolutionary Computation Conference 2016 (pp. 741–748). ACM.

    Google Scholar 

  17. Lalejini, A., Ofria, C. (2018, July). Evolving event-driven programs with SignalGP. In Proceedings of the Genetic and Evolutionary Computation Conference (pp. 1135–1142). ACM

    Google Scholar 

  18. Krzysztof Krawiec and Bartosz Wieloch. 2009. Functional modularity for genetic programming. In Proceedings of the 11th Annual conference on Genetic and evolutionary computation. ACM, 995–1002.

    Google Scholar 

  19. Newman, M. E. (2006). Modularity and community structure in networks. Proceedings of the national academy of sciences, 103(23), 8577–8582.

    CrossRef  Google Scholar 

  20. Qin, Z., McKay, R., & Gedeon, T. (2018). Why don’t the modules dominate-Investigating the Structure of a Well-Known Modularity-Inducing Problem Domain. arXiv preprint arXiv:1807.05976.

    Google Scholar 

  21. Helmuth, T., McPhee, N. F., & Spector, L. (2018, July). Program synthesis using uniform mutation by addition and deletion. In Proceedings of the Genetic and Evolutionary Computation Conference (pp. 1127–1134). ACM.

    Google Scholar 

  22. Helmuth, T., McPhee, N. F., Pantridge, E., & Spector, L. (2017, July). Improving generalization of evolved programs through automatic simplification. In Proceedings of the Genetic and Evolutionary Computation Conference (pp. 937–944). ACM.

    Google Scholar 

  23. Zhan, H. (2014, July). A quantitative analysis of the simplification genetic operator. In Proceedings of the Companion Publication of the 2014 Annual Conference on Genetic and Evolutionary Computation (pp. 1077–1080). ACM.

    Google Scholar 

Download references

Acknowledgements

We would like to thank other members of Hampshire College Institute for Computational Intelligence for their valuable inputs.

This material is based upon work supported by the National Science Foundation under Grant No. 1617087. Any opinions, findings, and conclusions or recommendations expressed in this publication are those of the authors and do not necessarily reflect the views of the National Science Foundation.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Anil Kumar Saini .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and Permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this chapter

Verify currency and authenticity via CrossMark

Cite this chapter

Saini, A.K., Spector, L. (2020). Using Modularity Metrics as Design Features to Guide Evolution in Genetic Programming. In: Banzhaf, W., Goodman, E., Sheneman, L., Trujillo, L., Worzel, B. (eds) Genetic Programming Theory and Practice XVII. Genetic and Evolutionary Computation. Springer, Cham. https://doi.org/10.1007/978-3-030-39958-0_9

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-39958-0_9

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-39957-3

  • Online ISBN: 978-3-030-39958-0

  • eBook Packages: Computer ScienceComputer Science (R0)