gen o fix embedded genetic improvement programming via
play

Gen-O-Fix Embedded Genetic Improvement Programming via Reflection - PowerPoint PPT Presentation

Introduction Genetic Improvement Scala Gen-O-Fix Summary References Gen-O-Fix Embedded Genetic Improvement Programming via Reflection Jerry.Swan@cs.stir.ac.uk Michael.Epitropakis@cs.stir.ac.uk John.Woodward@cs.stir.ac.uk October 11, 2013


  1. Introduction Genetic Improvement Scala Gen-O-Fix Summary References Gen-O-Fix Embedded Genetic Improvement Programming via Reflection Jerry.Swan@cs.stir.ac.uk Michael.Epitropakis@cs.stir.ac.uk John.Woodward@cs.stir.ac.uk October 11, 2013

  2. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 2/20 Outline What : An Embedded Self-Improving System. Why : Maintanance dominates software lifecycle cost [5] . . . How : Reflective Genetic Improvement Programming in Scala.

  3. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 3/20 Gen-O-Fix System Diagram

  4. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 4/20 Genetic Improvement Programming (GIP) GIP can be used to: Multi-objective trade-off between non-functional properties [2]. Fix bugs [5] (maintanance dominates software lifecycle cost). Optimize/improve functional properties.

  5. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 5/20 Embedding Adaptivity From http://gow.epsrc.ac.uk/NGBOViewGrant.aspx? GrantRef=EP/J017515/1 [DAASE] places computational search at the heart of the processes and products it creates and embeds adaptivity into both. Gen-O-Fix is a proof-of-concept of a key part of the DAASE manifesto: creating systems with the facility for embedded self-optimization.

  6. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 6/20 Gen-O-Fix Framework Features Operates via the new relection features of the Scala language. Source (to Abstract Syntax Tree) to Source + Binary transformation. Can be used within ‘always-running’ programs (embedded systems, webservers etc.).

  7. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 7/20 The Scala Programming Language Uniquely OO-functional programming hybrid. Statically-typed (traps type-errors at compile-time). JVM language - fully interoperable with Java (and other JVM languages e.g. Clojure).

  8. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 8/20 Scala In Industry Supports expressive webservice frameworks (‘Hello, Web’ in 6 lines of code). Increasingly popular for concurrency support (Twitter core rewritten in Scala).

  9. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 9/20 Scala Reflection: Homoiconicity 1 Code as data, data as code. // code to data : var m = 2; var x = 3; var c = 4 v a l expr = r e i f y ( ( m ∗ x ) + c ) p r i n t l n ( ”AST = ” + showRaw( expr . t r e e ) ) // output : AST = Apply ( S e l e c t ( Apply ( S e l e c t ( S e l e c t ( I d e n t ( ”m” ) , ” elem ” ) , ” $times ” ) , L i s t ( S e l e c t ( I d e n t ( ”x” ) ) , ” elem ” ) ) ) , ” $plus ” ) , L i s t ( S e l e c t ( I d e n t ( ”c” ) , ” elem ” ) ) )

  10. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 10/20 Scala Reflection: Homoiconicity 2 // run AST datatype as code : p r i n t l n ( ” e v a l = ” + expr . t r e e . e v a l () ) // output : e v a l = 10

  11. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 11/20 Scala Reflection 3: Rich ASTs and Pattern Matching Since AST nodes are first class objects in Scala, we have a lot of declarative information available: Well-formedness of ASTs can be checked by the type-system . We can use Scala’s powerful pattern matching facility to operate on specific AST fragments: case Apply ( S e l e c t ( I d e n t ( name : TermName ) , t2 : TermName ) , args ) i f t2 == newTermName( ” apply ” ) = > // manipulate AST } Makes it easier to do context-aware recombination/mutation and other transformations. Can help when addressing scalability issues [5].

  12. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 12/20 Search Based Software Engineering (SBSE) SBSE starts with only two key ingredients [3]: The choice of the representation of the problem. ‘Software is its own substrate’ . The definition of the objective function.

  13. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 13/20 Gen-O-Fix Framework-Level Parameters ‘As simple as possible’: Client source code: url that points to Scala code file containing signature I → O (e.g. Double → Double ). Client functionality fitness: f : ( I → O ) → R . Many fitness measures for non-functional properties (e.g. power-consumption) could be supplied ‘as standard’.

  14. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 14/20 UML Class Diagram

  15. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 15/20 A simple proof-of-concept . . . A stock-price predictor for shares in David Bowie Achieved via univariate symbolic regression . . . of a function extracted from the web-application source code.

  16. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 16/20 Summary Created a proof of concept: embedded symbolic regression. Have started looking at self-repair e.g. Zune and GCD bugs [6]. Next step: Match more complex AST patterns, more powerful transformation rules.

  17. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 17/20 References I Mark Harman, Edmund Burke, John Clark, and Xin Yao. Dynamic adaptive search based software engineering. In 6 th IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM 2012) , Lund, Sweden, 2012. Mark Harman, William B. Langdon, Yue Jia, David Robert White, Andrea Arcuri, and John A. Clark. The gismoe challenge: constructing the pareto program surface using genetic programming to find better programs. In Michael Goedicke, Tim Menzies, and Motoshi Saeki, editors, ASE , pages 1–14. ACM, 2012.

  18. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 18/20 References II Mark Harman, Phil McMinn, Jerffeson Teixeira de Souza, and Shin Yoo. Search-based software engineering: Techniques, taxonomy, tutorial. In Bertrand Meyer and Martin Nordio, editors, Empirical Software Engineering and Verification , volume 7007 of Lecture Notes in Computer Science , pages 1–59. Springer, 2011. John R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection (Complex Adaptive Systems) . A Bradford Book, 1 edition, 1992. Claire Le Goues, Stephanie Forrest, and Westley Weimer. Current challenges in automatic software repair. Software Quality Jornal , 21:421–443, 2013.

  19. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 19/20 References III Claire Le Goues, ThanhVu Nguyen, Stephanie Forrest, and Westley Weimer. Genprog: A generic method for automatic software repair. IEEE Transactions on Software Engineering , 38:54–72, 2012. Westley Weimer, Stephanie Forrest, Claire Le Goues, and ThanhVu Nguyen. Automatic program repair with evolutionary computation. Communications of the ACM , 53(5):109–116, May 2010. David R. White. Genetic Programming for Low-Resource Systems . phdthesis, University of York, UK, December 2009.

  20. Introduction Genetic Improvement Scala Gen-O-Fix Summary References 20/20 References IV David R. White, Andrea Arcuri, and John A. Clark. Evolutionary improvement of programs. IEEE Transactions on Evolutionary Computation , 15(4):515–538, August 2011.

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend