In a broader mathematical or computational perspective, an optimization problem is defined as a problem of finding the best solution from all feasible solutions. In terms of Machine Learning and…
Intelligent Control and Automation is a scholarly open access, peer-reviewed, quarterly and fully refereed journal focusing on theories, methods and applications in intelligent control and automation. The goal of this journal is to provide a platform for scientists and academicians all over the world to promote, share and discuss various new issues and developments in different areas of intelligent control and automation.
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.
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.
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.
We present the Priority R-tree, or PR-tree, which is the first R-tree variant that always answers a window query using O((N/B)1-1/d+T/B) I/Os, where N is the number of d-dimensional (hyper-) rectangles stored in the R-tree, B is the disk block size, and T