Download Shareware and Freeware Software for Windows, Linux, Macintosh, PDA

line Home  |  About Us  |  Link To Us  |  FAQ  |  Contact

Serving Software Downloads in 976 Categories, Downloaded 32.390.494 Times

Evocosm 3.2.0

  Date Added: November 20, 2010  |  Visits: 1.030


Report Broken Link
Printer Friendly Version

Product Homepage
Download (78 downloads)

Evocosm is a C++ Framework for Evolutionary Computing library. Evocosm is a set of classes that abstract the fundamental components of an evolutionary algorithm. Ill 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 articles 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. The classes include: Random Numbers Evocosm relies on the code in The Twisted Road to to Randomness for random number generation. The Mersenne Twister algorithm is particularly well-suited to evolutionary algorithms, based on its long period, granularity, "randomness", and speed. As of the 2.1.0 release of libevocosm, the mtprng class resides in libcoyote, and not libevocosm as it did earlier. This means that any program using libevocosm must also link against libcoyote. Validation To validate function arguments, Evocosm uses the code I describe in Beyond Assert; this code is part of libcoyote. Any program using libevocosm must also link against libcoyote. Floating- Point Chromosomes Evcosom supports the crossover and mutation of IEEE-754 floating-point numbers, using an algorithm I invented in the mid-1990s. This topic is covered in detail here. Roulette Wheels The roulette_wheel class implements the concept of a "software roulette wheel" for Evocosm. This is a tool for natural selection, wherein the fitness of an organism determines the width of its "slot" on an imaginary roulette wheel. Organisms Think of an "organism" as an answer to a problem posed by a fitness landscape; "genes" define its behavior and an associated fitness value is assigned by an evocosm during testing. Evocosm provides the freedom to define organisms as almost anything: bit strings, floating-point numbers, finite state machines, LISP programs, or external robots controlled via radio waves. In A Complexity of Options, I used an Evocosm-derived GA to determine the gcc options that produce the faster code. Fitness Landscapes A "fitness landscape" defines the environment where organisms "live" or a problem that they are tested against. The landscape is intimately tied to the nature of the organism; think of an organism as a potential solution to a problem implemented by the landscape. A floating-point organism, for example, could be tested by a fitness landscape that represents a function to be maximized. Or, an organism describing the shape of wing could be tested by a landscape that simulates a wind tunnel. Evocosms The evocosm class binds a population of organisms to a set of objects that define the rules of survival and reproduction. An evocosm will have one or more populations, which will evolve against population-unique and shared (common) fitness landscapes; breeding is controlled by a set of class objects from the following classes. Fitness Scaling As a population converges on an "answer", the difference between fitness values often becomes very small; this prevents the best solutions from having a significant advantage in reproduction. Fitness scaling solves this problem by adjusting the fitness values to the advantage of the most-fit chromosomes. Evocosm includes a variety of fitness scaling algorithms. Migration A migrator removes individuals (via "emigration") from a population of organisms, transferring them to another population (via "immigration"). The only concrete implementation of this interface is random_pool_migrator, which defines a specific number of organisms that may migrate from each population to another. When creating a random_pool_migrator, specify the number of organisms that can migrate from each population. Migration is, of course, meaningless in any application that has only one population. Selecting Survivors A selector decides which organisms survive from one generation to the next. Some evolutionary algorithms will not use a selector; other will. In general, it is effective to keep the "best" organisms from one generation to the next, so that good genes do not become lost at random. This is, of course, an improvement on nature, where being "the best" doesnt guarantee survival. Reproduction In most cases, a reproducer generates new organisms using parents selected (by fitness) from an existing population. In some singular (and probably rare) cases, a reproducer might generate new, random organisms in order to keep diversity high. Reproduction techniques can include crossover and asexual, sexual and (my favorite) try-sexual models. Mutation Operators A mutator applies mutations (random, usually small changes) to a set of organisms. Mutation is highly dependent on the type of organism. In traditional genetic algorithms, a mutation flips one or more bits in an integer (i.e., chromosome). Evolving a path for the Traveling Salesman Problem involves complex mutations that maintain valid permutations of destination points; in the case of floating-point numbers, Ive provided utilities for mutating and crossing IEC-60559 (IEEE- 754) float and double types. Whats New in This Release: - Minor bugfixes, code cleanups, and changes to pseudo-random number generators. - Now includes Visual Studio 2005 projects along with GNU build files..

Requirements: No special requirements
Platforms: Linux
Keyword: C Framework Code Evocosm Evolutionary Evolutionary Computing Fitness Libraries Organisms Population Programming Random
Users rating: 0/10

License: Freeware Size: 348.16 KB
Libraries  -  GNU Common C++ 1.5.7
GNU Common C++ project is a C++ framework offering portable support for threading, sockets, file access, daemons, persistence, serial I/O, XML parsing, and system services, initially started by David Sugar and Daniel Silverstone. GNU Common C++...
849.92 KB  
Libraries  -  ViewKlass 0.7.1
ViewKlass is a C++ framework for developing applications that use the LessTif or OSF/Motif user interface toolkits. In particular it provides classes that support the creation of reusable components. It also provides classes that encapsulate...
112.64 KB  
Development Editors  -  TreeFrog Framework 0.80 Beta
The TreeFrog Framework was designed as a high-speed and full-stack C++ framework that is supposed to help you develop Web applications. Because the sever-side framework was written in C++/Qt, web applications can run faster than that of...
Programming  -  ctopy 1.0
ctopy automates the parts of translating C source code to Python source code that are difficult for a human but easy for a machine. This allows a human programmer to concentrate on the nontrivial parts of the translation..
19.46 KB  
Libraries  -  liburlmm 0.0.1
liburlmm is a simple C++ framework for manipulating urls. Released under the GNU Lesser General Public License. Installation: You are not supposed to install liburlmm anywhere, its supposed to be some files you just include in your project -...
14.34 KB  
Programming  -  Bakery 2.4.1
Bakery project is a C++ Framework for creating document-based GNOME applications using gnomemm and/or gtkmm..
512 KB  
Libraries  -  SPUC 2.3.1
Signal Processing using C++ (SPUC) is a C++ source code library of DSP and digital communication classes and functions useful for system modeling, software prototyping, and simulation. The objective of SPUC is to provide the Communications...
460.8 KB  
Libraries  -  stdnet 0.04
stdnet project is a simple C++ framework for building single-threaded or multi-threaded applications which deal with I/O events. The forms of I/O currently supported include TCP sockets, UDP sockets, and named pipes. Events can also be generated...
81.92 KB  
Integration Tools  -  C,C++ Source Code Directory Submitter 1.00
This softwre can help you to find your most needed C,C++ source code from the C,C++ source code directory can also submit your source code in web to spread and test your knowledge on programming.Submit C,C++ source code to this...
373 KB  
Libraries  -  File::Comments::Plugin::C 0.06
File::Comments::Plugin::C is a plugin to detect comments in C/C++ source code. SYNOPSIS use File::Comments::Plugin::C; File::Comments::Plugin::C is a plugin for the File::Comments framework. Both /* ... */ and // style comments are...
12.29 KB  
Programming  -  Cedalion for Linux 0.2.6
Cedalion is a programming language that allows its users to add new abstractions and define (and use) internal DSLs. Its innovation is in the fact that it uses projectional editing to allow the new abstractions to have no syntactic limitations.
471.04 KB  
Programming  -  Math::GMPf 0.29
Math::GMPf - perl interface to the GMP library's floating point (mpf) functions.
30.72 KB  
Programming  -  Net::Wire10 1.08
Net::Wire10 is a Pure Perl connector that talks to Sphinx, MySQL and Drizzle servers. Net::Wire10 implements the low-level network protocol, alias the MySQL wire protocol version 10, necessary for talking to one of the aforementioned...
30.72 KB  
Programming  -  logilab-common 0.56.2
a bunch of modules providing low level functionnalities shared among some python projects devel Please note that some of the modules have some extra dependencies. For instance, logilab.common.db will require a db-api 2.0 compliant...
174.08 KB  
Programming  -  OpenSSL for linux 1.0.0a
The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a...
3.83 MB  
Libraries  -  wolfSSL 3.15.3
The wolfSSL embedded SSL/TLS library is a lightweight SSL library written in ANSI standard C and targeted for embedded and RTOS environments - primarily because of its small size, speed, and feature set. It is commonly used in standard operating...
3.88 MB  
Libraries  -  EuGTK 4.8.9
Makes it easy to develop good- looking, fast, cross-platform programs that run on Linux, OS X, and Windows. Euphoria is a very fast interpreted/compiled language with straight-forward syntax. EuGTK allows programming in a clean, object-oriented...
10.68 MB  
Libraries  -  Linux User Group Library Manager 1.0
The LUG Library Manager is a project to help Linux User Groups start their own library. A LUG library is helpful to the community at large because it increases access to information, and gives everyone the opportunity to become more knowledgeable.
5.35 KB  
Libraries  -  Module::MakefilePL::Parse 0.12
Module::MakefilePL::Parse is a Perl module to parse required modules from Makefile.PL. SYNOPSIS use Module::MakefilePL::Parse; open $fh, Makefile.PL; $parser = Module::MakefilePL::Parse->new( join("", ) ); $info = $parser->required;...
8.19 KB  
Libraries  -  sqlpp 0.06
sqlpp Perl package is a SQL preprocessor. sqlpp is a conventional cpp-alike preprocessor taught to understand SQL ( PgSQL, in particular) syntax specificities. In addition to the standard #define/#ifdef/#else/#endif cohort, provides also...
10.24 KB