bookmarks  4

  •  

    A couple of posts ago, I talked about a simple monte carlo simulation for diffusion limited aggregation. In this post, I’m going to talk about another algorithm that, at its heart, is based on random numbers. Unlike DLA though, this algorithm isn’t about simulating a physical system. Instead, it is about a method for solving optimization problems that are generally poorly suited to traditional numerical optimization techniques. This post describes an application of a library implementing the GEP method posed by Cândida Ferreira nearly 10 years ago. I started messing with GEP shortly after the paper “Gene Expression Programming: A New Adaptive Algorithm for Solving Problems” was published in the journal Complex Systems. The paper sat in a pile for a while, and about two years ago I picked it up again and started to implement it as a Haskell library.
    14 years ago by @thorade
    (0)
     
     
  •  

    Gene Expression Programming (GEP) is a new evolutionary algorithm that evolves computer programs (they can take many forms: mathematical expressions, neural networks, decision trees, polynomial constructs, logical expressions, and so on). The computer programs of GEP, irrespective of their complexity, are all encoded in linear chromosomes. Then the linear chromosomes are expressed or translated into expression trees (branched structures). Thus, in GEP, the genotype (the linear chromosomes) and the phenotype (the expression trees) are different entities (both structurally and functionally), and because of this apparently trivial fact, this new evolutionary system can finally make a difference, successfully assisting researchers in the design of robust and accurate computer models. As in nature, the linear chromosomes of GEP consist of the genetic material that is passed on with modification to the next generation. This, in other words, means that in GEP all the genetic modifications take place in the linear chromosomes (much easier to do than in complex branched structures as is done in GP), and it also means that only the linear chromosomes are transmitted in the process of reproduction (linear strings are much easier to replicate than complicated tree structures). And also as in nature, it's only during development that the information encoded in the chromosomes is finally expressed into fully developed computer programs or expression trees (ETs). Expression trees are sophisticated computer programs that are usually evolved to solve a particular problem and are therefore selected according to their fitness at solving that task. With time, populations of such computer programs (encoded, of course, in linear chromosomes) will discover new traits (thanks to genetic modification) and therefore will become better adapted to the particular environment chosen for their breeding (this environment defines obviously the problem at hand). And this means that, given enough time and that we've set the stage correctly, a good solution to the problem at hand will be discovered. So, GEP is a full-fledged genotype/phenotype system, with the genotype totally separated from the phenotype. In Genetic Programming, though, we have a totally different scenario: genotype and phenotype are one entangled mess or what is more formally called a simple replicator system. And the consequences of this are huge: the full-fledged genotype/phenotype system of GEP surpasses the old GP system by a factor of 100-60,000!
    14 years ago by @thorade
    (0)
     
     
  •  

    Evocosm is a set of classes that abstract the fundamental components of an evolutionary algorithm. I'll list the components here with a bit of introduction; you can review the details of the classes by downloading the code archives or by reviewing the online documentation (see the menu at the article's beginning for code and documentation links.) All class documentation was generated from source code comments using doxygen. These docs have not been thoroughly proofread, so they may contain a few typos and minor errors. Self-publishing has taught me the value of a good proofreader... ;} Evolutionary algorithms come in a variety of shapes and flavors, but at their core, they all share certain characteristics: populations that reproduce and mutate through a series of generations, producing future generations based on some measure of fitness. An amazing variety of algorithms can be built on that general framework, which leads me to construct a set of core classes as the basis for future applications.
    14 years ago by @thorade
    (0)
     
     
  •  

    EvA2 (an Evolutionary Algorithms framework, revised version 2) is a comprehensive heuristic optimization framework with emphasis on Evolutionary Algorithms implemented in Java. It is a revised version of the JavaEvA optimization toolbox, which has been developed as a resumption of the former EvA software package. EvA2 integrates several derivation free optimization methods, preferably population based, such as Evolution Strategies (ES), Genetic Algorithms (GA), Differential Evolution (DE), Particle Swarm Optimization (PSO), as well as classical techniques such as multi-start Hill Climbing or Simulated Annealing. Besides typical single-objective problems, multi-modal and multi-objective problem are handled directly by the EvA2 framework. Via the Java mechanism of Remote Method Invocation (RMI), the algorithms of EvA2 can be distributed over network nodes based on a client-server architecture. EvA2 aims at two groups of users. Firstly, the end user who does not know much about the theory of Evolutionary Algorithms, but wants to use Evolutionary Algorithms to solve an application problem. Secondly, the scientific user who wants to investigate the performance of different optimization algorithms or wants to compare the effect of alternative or specialized evolutionary or heuristic operators. The latter usually knows more about evolutionary algorithms or heuristic optimization and is able to extend EvA2 by adding specific optimization strategies or solution representations. EvA2 is being used as teaching aid in lecture tutorials, as a developing platform in student research projects and applied to numerous optimisation problems within active research and ongoing industrial cooperations.
    14 years ago by @thorade
    (0)
     
     
  • ⟨⟨
  • 1
  • ⟩⟩

publications  5  

  • ⟨⟨
  • 1
  • ⟩⟩