Evolving JavaScript
Cultivating Genetic Algorithms for Creative Coding
Kevin Maes | JSConf Budapest - June 28, 2024
Slide 2
Evolving JavaScript
Cultivating Genetic Algorithms for Creative Coding
Jó napot! Kevin Maes | JSConf Budapest - June 28, 2024
Slide 3
From the way way way back machine
Slide 4
Slide 5
Slide 6
Slide 7
Kevin Maes
@kvmaes
Slide 8
Slide 9
Evolutionary Computation Genetic Programming (GP) Lawrence Fogel
Slide 10
Evolutionary Computation Genetic Programming (GP) Lawrence Fogel
Genetic Algorithms (GA) John H. Holland
Slide 11
Evolutionary Computation Genetic Programming (GP)
Evolutionary Programming (EP)
Genetic Algorithms (GA)
Evolutionary Strategies (ES)
Lawrence Fogel
John H. Holland
Evolutionary Algorithms
Slide 12
John H. Holland
Slide 13
John H. Holland Adaptation in Natural and Arti cial Systems
fi
“general theories of adaptive processes apply across biological, cognitive, social, and computational systems”
There’s a GA for that! • Designing ef cient network topologies • Automated software testing • Evolving game strategies • Scheduling Problems
fi
• Complex hardware design
Slide 16
Evolved antenna
First generation
Middle generations
Last generation
Slide 17
=
ST5-33-142-7
Slide 18
States of a genetic algorithm
Slide 19
Population Initialization
Many “individuals” Each with a potential solution Stored in their “DNA”
Mutation • Need to maintain variation • Avoid “local optima” • Strive for the “global optimum” • Mutation rate • Mutation amount
Slide 24
States of a genetic algorithm
Slide 25
Canvas, easy as 1, 2, 3. 1.
// index.html <canvas id=“canvas” width=“500” height=“500”></canvas>
2.
// Access the canvas element const canvas = document.getElementById(‘canvas’);
3.
// Get the 2d canvas context const ctx = canvas.getContext(‘2d’);
See Canvas API docs for how to draw shapes, text, styles, etc.
Creative Coding Tips
•Don’t forget to clear the canvas before drawing •Use requestAnimationFrame •Crank up the frame rate and be impressed •Consider OOP for particle systems
Slide 64
fi
•Simpli ed syntax •Built-in animation loop •Event handling •Extensive library •Community resources •Playground environment
Slide 65
Things I’ve learned
fi
•Population size •Tweak the tness function •Try other selection methods •Adjust mutation rates and amounts
Slide 66
Can GAs help us? •Optimizing UI Layouts •Automating A/B Testing •Personalized content recommendations •Code optimization or readability •Dynamic pricing models •Improve website accessibility
Slide 67
Resources
Daniel Shiffman thecodingtrain.com/
New JavaScript version coming September 2024!
Slide 68
EDGE OF TOMORROW
Slide 69
LIVE DIE REPEAT
Slide 70
Slide 71
kevin@kevinmaes.com linkedin.com/in/kevinmaes @kvmaes
Kevin Maes
github.com/kevinmaes
Thank you!