1.

Record Nr.

UNINA9911008398403321

Autore

Moriarity Sean

Titolo

Genetic algorithms in Elixir : solve problems using evolution / / Sean Moriarity

Pubbl/distr/stampa

[Raleigh, North Carolina] : , : The Pragmatic Programmers, LLC, , [2021]

©2021

ISBN

9781680508307

168050830X

9781680508314

1680508318

Edizione

[First edition.]

Descrizione fisica

1 online resource (235 pages)

Disciplina

518.1

Soggetti

Algorithms

Evolutionary programming (Computer science)

Genetic algorithms

Lingua di pubblicazione

Inglese

Formato

Materiale a stampa

Livello bibliografico

Monografia

Nota di bibliografia

Includes bibliographical references.

Nota di contenuto

Cover -- Table of Contents -- Disclaimer -- Acknowledgments -- Preface -- Who This Book Is For -- What's in This Book -- How to Use This Book -- How Does Elixir Fit In? -- 1. Writing Your First Genetic Algorithm -- Understanding Genetic Algorithms -- Introducing the One-Max Problem -- Initializing the Population -- Understanding the Flow of Genetic Algorithms -- Selecting Parents -- Creating Children -- Running Your Solution -- Adding Mutation -- What You Learned -- 2. Breaking Down Genetic Algorithms -- Reviewing Genetic Algorithms -- Looking Deeper into Genetic Algorithms -- Using Mix to Write Genetic Algorithms -- Building a Framework for Genetic Algorithms -- Understanding Hyperparameters -- Solving the One-Max Problem Again -- What You Learned -- 3. Encoding Problems and Solutions -- Using Structs to Represent Chromosomes -- Using Behaviours to Model Problems -- Understanding and Choosing Genotypes -- Solving One-Max for the Last Time -- Spelling Words with Genetic Algorithms -- What You Learned -- 4. Evaluating Solutions and Populations -- Optimizing Cargo Loads -- Introducing Penalty Functions -- Applying a



Penalty to the Shipping Problem -- Defining Termination Criteria -- Applying Termination Criteria to Shipping -- Crafting Fitness Functions -- Exploring Different Types of Optimization -- What You Learned -- 5. Selecting the Best -- Exploring Selection -- Customizing Selection in Your Framework -- Implementing Common Selection Strategies -- What You Learned -- 6. Generating New Solutions -- Introducing N-Queens -- Solving N-Queens with Order-One Crossover -- Exploring Crossover -- Implementing Other Common Crossover Strategies -- Crossing Over More Than Two Parents -- Implementing Chromosome Repairment -- What You Learned -- 7. Preventing Premature Convergence -- Breaking Codes with Genetic Algorithms -- Understanding Mutation.

Customizing Mutation in Your Framework -- Implementing Common Mutation Strategies -- Other Methods to Combat Convergence -- What You Learned -- 8. Replacing and Transitioning -- Creating a Class Schedule -- Understanding Reinsertion -- Experimenting with Reinsertion -- Growing and Shrinking Populations -- Local Versus Global Reinsertion -- What You Learned -- 9. Tracking Genetic Algorithms -- Using Genetic Algorithms to Simulate Evolution -- Logging Statistics Using ETS -- Tracking Genealogy in a Genealogy Tree -- What You Learned -- 10. Visualizing the Results -- Visualizing the Genealogy of the Tiger Evolution -- Visualizing Basic Statistics -- Playing Tetris with Genetic Algorithms -- Installing and Compiling ALEx -- What You Learned -- 11. Optimizing Your Algorithms -- Benchmarking and Profiling Genetic Algorithms -- Writing Fast Elixir -- Improving Performance with Parallelization -- Improving Performance with NIFs -- What You Learned -- 12. Writing Tests and Code Quality -- Understanding Randomness -- Writing Property Tests with ExUnit -- Cleaning Up Your Framework -- Writing Type Specifications -- What You Learned -- 13. Moving Forward -- Learning with Evolution -- Designing with Evolution -- Trading with Evolution -- Networking with Evolution -- Evolving Neural Networks -- Where to Go Next -- Bibliography -- Index -- - SYMBOLS - -- - A - -- - B - -- - C - -- - D - -- - E - -- - F - -- - G - -- - H - -- - I - -- - J - -- - K - -- - L - -- - M - -- - N - -- - O - -- - P - -- - Q - -- - R - -- - S - -- - T - -- - U - -- - V - -- - W - -- - X - -- - Z -.

Sommario/riassunto

From finance to artificial intelligence, genetic algorithms are a powerful tool with a wide array of applications. But you don't need an exotic new language or framework to get started; you can learn about genetic algorithms in a language you're already familiar with. Join us for an in-depth look at the algorithms, techniques, and methods that go into writing a genetic algorithm. From introductory problems to real-world applications, you'll learn the underlying principles of problem solving using genetic algorithms.